編集フォームで入力された数字と、投稿番号が一致したときに差し替えをしたいです。
過去の質問は読み漁りましたが、解決に至らなかったので何方か助言していただけると助かります。
PHP
1<!DOCTYPE html> 2<html lang="en" dir="ltr"> 3 <head> 4 <meta charset="utf-8"> 5 <title>簡易掲示板</title> 6 </head> 7 <body> 8 9 <!--取り出し--> 10 <?php 11 $filename = "mission_3-1.txt"; 12 13 if(!empty($_POST["edit"])){ 14 15 $editline = file($filename); 16 $edit = $_POST["edit"]; 17 18 foreach($editline as $ccc){ 19 $data3 = explode(" ",$ccc); 20 if($data3[0] == $edit){ 21 $namae_e = $data3[1]; 22 $message_e = $data3[2]; 23 } 24 } 25 } 26 ?> 27 28 <!--投稿フォーム--> 29 <form action="mission_3-4.php" method="post"> 30 31 <!--編集番号--> 32 <input type="text" name="number" value="<?php 33 if(!empty($_POST["edit"])){ 34 echo $edit; 35 } ?>"> 36 37 <!--上書き--> 38 <?php 39 $filename = "mission_3-1.txt"; 40 41 if(!empty($_POST["edit"])){ 42 43 $editline2 = file($filename); 44 $edit2 = $_POST["edit"]; 45 $fp5 = fopen($filename,"w"); 46 47 foreach($editline2 as $ddd){ 48 $data4 = explode(" ",$ddd); 49 50 if($data4[0] == $edit2){ 51 52 $namae_e = $data4[1]; 53 $message_e = $data4[2]; 54 55 }else{ 56 fwrite( $fp5 , $ddd ); 57 } 58 } 59 fclose( $fp5 ); 60 } 61 ?> 62 63 <p>名前: 64 <input type="text" name="name" value="<?php 65 if(!empty($_POST["edit"])){ 66 echo $namae_e; 67 } ?>"></p> 68 69 <p>投稿内容:<textarea name="comment"><?php if(!empty($_POST["edit"])){ 70 echo $message_e; 71 }?></textarea></p> 72 73 <button type = "submit">送信</button> 74 75 </form> 76 <br> 77 78 <!--削除フォーム--> 79 <form action="mission_3-4.php" method="post"> 80 <p>投稿番号:<input type="text" name="delete"></p> 81 <button type = "submit">削除</button> 82 </form> 83 <br> 84 85 <!--編集フォーム--> 86 <form action="mission_3-4.php" method="post"> 87 <p>投稿番号:<input type="text" name="edit"></p> 88 <button type = "submit">編集</button> 89 </form> 90 91 <?php 92 93 $date = date("Y/m/d H:i:s"); 94 $filename = "mission_3-1.txt"; 95 //$count = count( file($filename) ); 96 97 if(!empty($_POST["name"])&&!empty($_POST["comment"])&&empty($_POST["edit"])){ 98 //投稿機能 99 100 $namae = $_POST["name"]; 101 $message = $_POST["comment"]; 102 103 $toukou = (sizeof(file($filename))+1)."<>".$namae."<>".$message."<>".$date; 104 105 $fp = fopen($filename, "a" ); 106 $keijiban = explode("<>",$toukou); 107 $string = implode(" ",$keijiban); 108 109 fwrite( $fp , "$string\r\n" ); 110 fclose( $fp ); 111 112 }elseif(!empty($_POST["delete"])){ 113 //削除機能 114 115 $delline = file($filename); 116 $delete = $_POST["delete"]; 117 $fp2 = fopen($filename,"w"); 118 fclose( $fp2 ); 119 $fp3 = fopen($filename,"a"); 120 121 if(!empty($filename)){ 122 foreach($delline as $bbb){ 123 $data2 = explode(" ",$bbb); 124 if($data2[0] !== $delete){ 125 fwrite( $fp3 , $bbb ); 126 } 127 } 128 } 129 fclose( $fp3 ); 130 } 131 132 //表示機能 133 $ret_array = file($filename); 134 foreach($ret_array as $aaa){ 135 echo $aaa; 136 echo "<br>"; 137 } 138 139 ?> 140 141 </body> 142 143</html>
僕が考えでは、この部分で一行だけ差し替えようとしています。↓
PHP
1<!--上書き--> 2 <?php 3 $filename = "mission_3-1.txt"; 4 5 if(!empty($_POST["edit"])){ 6 7 $editline2 = file($filename); 8 $edit2 = $_POST["edit"]; 9 $fp5 = fopen($filename,"w"); 10 11 foreach($editline2 as $ddd){ 12 $data4 = explode(" ",$ddd); 13 14 if($data4[0] == $edit2){ 15 16 $namae_e = $data4[1]; 17 $message_e = $data4[2]; 18 19 }else{ 20 fwrite( $fp5 , $ddd ); 21 } 22 } 23 fclose( $fp5 ); 24 } 25 ?>
編集フォームで数字を入力されたときに、同じ投稿番号の名前と内容を投稿フォームに表示させることは成功しています。
同じ質問に思いますが未解決のままです。
https://teratail.com/questions/207976
回答もついています。
回答2件
あなたの回答
tips
プレビュー