編集機能をつけたい
編集機能を
1.編集したい投稿の番号を送信すると、投稿フォームに編集したい投稿が表示される機能
2.名前とコメントを書きかえたら、その新しい内容をファイルに書き込む機能
の2つで実装したいと考えています。今のところ両方できてないです。
html部分も間違っている可能性があります。
発生している問題
ブラウザ、テキストファイルともに追記、削除はできるが編集ができない。
該当のソースコード
php
1<html> 2 3 4<head> 5 <meta http-equiv='content-type' charset='UTF-8'> 6</head> 7 8 9 <form action="2-410.php" method="post"> 10 11 12 <input type="text" placeholder="名前" value="<?php echo "$newname" ?>" name="name"><br> 13 14 <input type="text" placeholder="コメント" value="<?php echo "$newcoment" ?>" name="coment"><br> 15 16 <input type="hidden" value="<?php echo "{$_POST['edit']}" ?>" name="blank"> 17 18<input type="submit" value="送信"><br><br> 19 20 <input type="text" placeholder="削除対象番号" name="delete"> 21 22<input type="submit" value="削除"><br> 23 24 <input type="text" placeholder="編集対象番号" name="edit"> 25 26<input type="submit" value="編集"> 27 28</form> 29 30 31</html> 32 33 34 35 36<?php 37 38touch('mission_2-4_10.txt'); 39 40 41?> 42 43 44 45 46 47<?php 48 49 50date_default_timezone_set('Asia/Tokyo'); 51 52$filename = 'mission_2-4_10.txt'; 53 54$lines = file($filename); 55 56$number = 1 + count($lines); //タイムゾーン、変数の定義 57 58 59?> 60 61 62<?php 63 64 65if((!empty($_POST['name']) or !empty($_POST['coment'])) and empty($_POST['delete']) and empty($_POST['edit'])) 66 67{ 68 69$fp = fopen($filename, "a"); 70 71fwrite($fp, $number."<>".$_POST['name']."<>".$_POST['coment']."<>".date("Y年m月d日 H:i:s"). "\n"); 72 73fclose($fp); 74 75} 76 77 78//名前か、コメントが入力された時に投稿番号、名前、コメント、日時をテキストファイルにどんどん下に追記していく 79 80 81elseif(empty($_POST['name']) and empty($_POST['coment']) and !empty($_POST['delete']) and empty($_POST['edit'])) 82 83{ 84 85$lines = file($filename); 86 87$number = 1 + count($lines); 88 89 90//更新された変数を定義し直す 91 92$fq = fopen($filename, "w"); 93 94//ファイルを空にする 95 96foreach($lines as $line) 97 98{ 99 100$portion = explode( "<>", $line); 101 102//ファイルの行を<>で分割し、配列に格納 103 104if($portion[0] !== $_POST['delete']) 105 106{ 107 108fwrite($fq, "$line"); 109 110 111 112} 113 114 115 116 117} 118 119//投稿番号が削除対象番号と異なるとき、テキストファイルに1行ずつ書き込む 120 121fclose($fq); 122 123//ファイルを閉じる 124 125} 126 127 128 129 130 131 132 133 134 135elseif(empty($_POST['name']) and empty($_POST['coment']) and empty($_POST['delete']) and !empty($_POST['edit'])) 136 137{ 138 139$lines = file($filename); 140 141$number = 1 + count($lines); 142 143//更新された変数を定義し直す 144 145 146$fr = fopen($filename, "r"); //テキストファイルを読み込む 147 148 149foreach($lines as $line) 150 151{ 152 153$portion = explode( "<>", $line); 154 155//ファイルの行を<>で分割し、配列に格納 156 157if($portion[0] == $_POST['edit']) 158 159{ 160 161$portion[1] = $newname; 162 163$portion[2] = $newcoment; //投稿番号が編集対象番号の時、名前とコメントを定義 164 165} 166 167} 168 169fclose($fr); 170 171} 172 173 174 175elseif(!empty($_POST['name']) and !empty($_POST['coment']) and empty($_POST['delete']) and !empty($_POST['blank'])) 176 177{ 178 179$lines = file($filename); 180 181$number = 1 + count($lines); 182 183//更新された変数を定義し直す 184 185$fs = fopen($filename, "r+"); 186 187foreach($lines as $line) 188 189{ 190 191$portion = explode( "<>", $line); 192 193//ファイルの行を<>で分割し、配列に格納 194 195if($portion[0] == $_POST['edit']) 196 197{ 198 199fwrite($fs, $number."<>".$_POST['name']."<>".$_POST['coment']."<>".date("Y年m月d日 H:i:s"). "\n"); 200 201} 202 203} //投稿番号が編集対象番号の時、新しい名前、コメントを上書き 204 205fclose($fs); 206 207} 208 209$lines = file($filename); 210 211$number = 1 + count($lines); 212 213//更新された変数を定義し直す 214 215foreach($lines as $line) 216 217{ 218$portion = explode( "<>", $line); 219 220echo "<pre>". $portion[0]." ". $portion[1]." ". $portion[2]." ". $portion[3]." ". $portion[4]. "</pre>" ; 221} 222 223//テキストファイルの1行1行をブラウザ上に表示 224 225 226?>
試したこと
細かいミスは直したりしましたが、内容を変えるようなことは原因がわからないので、できなかったです。
補足情報(FW/ツールのバージョンなど)
URL:http://tt-662.99sv-coco.com/2-410.php
入れ子が読みにくいかもしれません。すいません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/23 02:19
退会済みユーザー
2018/11/23 02:31
2018/11/23 03:04
退会済みユーザー
2018/11/23 03:21 編集
2018/11/23 04:56
2018/11/23 04:59
2018/11/23 05:07
退会済みユーザー
2018/11/23 05:46