編集機能をつけたい
PHPで掲示板を作っています。
そこで編集機能をつけようとコードを付け加えたら複数のエラーが出てしまいました。
編集機能の部分が問題だと思い、色々コードを抜いたり付け加えたり書き換えたりもしたのですが、状況が変わらない為、どのように変えたらいいのか教えて欲しいです。
発生している問題・エラーメッセージ
Notice: Undefined index: editNo in /public_html/mission_3-4.php on line 67 Notice: Undefined variable: line in /public_html/mission_3-4.php on line 68 Warning: count(): Parameter must be an array or an object that implements Countable in /public_html/mission_3-4.php on line 68 Notice: Undefined variable: file in /public_html/mission_3-4.php on line 70 Notice: Undefined variable: line in /public_html/mission_3-4.php on line 72 Warning: Invalid argument supplied for foreach() in /public_html/mission_3-4.php on line 72
該当のソースコード
php
1<html> 2<head> 3<meta charset="utf-8"> 4 <title>掲示板</title> 5</head> 6<body> 7 8 <form action="mission_3-4.php" method="post"> 9 名前<br> 10 <input type="text" name="name" ><br> 11 コメント<br> 12 <input type="text" name="comment"><br> 13 <input type="submit"><br> 14 15 <?php 16 if(isset($_POST["name"])&& $_POST["name"] !==""); 17 if(isset($_POST["comment"])&& $_POST["comment"] !=="") 18 { 19 $fileName = "mission_3-4.txt"; 20 $file = file($fileName, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 21 22 $num = sizeof($file) + 1; 23 $userName = $_POST["name"]; 24 $comment = $_POST["comment"]; 25 $time = date("Y/m/d H:i:s"); 26 $write = $num. " ". $userName. " ". $comment. " ". $time. "\n"; 27 28 $fp = fopen($fileName, "a"); 29 flock ($fp, LOCK_EX); 30 fwrite($fp, $write); 31 flock ($fp, LOCK_UN); 32 fclose($fp); 33 34 $file = file($fileName, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 35 foreach ( $file as $value ) { 36 $line = explode("<>", $value); 37 echo $value."<br />\n"; 38 } 39 } 40?> 41 42 </form> 43 <form method="post" action="mission_3-4.php"> 44 <label>削除対象番号<br> 45 <input name="delete_res" type="number"></label><br> 46 <input type="submit" name="delete" value="送信"> 47</form> 48 49 <?php 50if (isset($_POST['delete'])) { 51 $file = file('mission_3-4.txt'); 52 $num = $_POST['delete_res']; 53 unset($file[$num]); 54 file_put_contents('mission_3-4.txt', $file); 55} 56?> 57 58 </form> 59 <form method="post" action="mission_3-4.php"> 60 <label for ="edit">編集対象番号<br> 61 <input name="editNo" type="number"></label><br> 62 <input type="submit" name="edit" value="送信"> 63</form> 64 65 <?php 66 if (isset($_POST['edit'])); 67 { $num = htmlspecialchars($_POST['editNo']); 68 for ($k = 0; $k < count($line) ; $k++) { 69 if (strpos($num.' ', $line[$k]) === 0) { $line[$k] = $num.' '.$_POST['name'].'<>'.$_POST['comment'].'<>'.date('Y-m-d-H-i-s')."\n"; break; } } } 70 file_put_contents('mission_3-4.txt', $file); 71 72foreach($line as $_POST){ 73 list($num, $userName, $comment, $time) = explode("<>", $_POST); 74 echo h($num); 75 echo h($userName); 76 echo h($comment); 77 echo h($time)."<br>\n"; 78} 79function h($s) 80{ 81 return htmlspecialchars($s, ENT_QUOTES, "UTF-8", true); 82} 83?> 84</body> 85</html>
試したこと
あのエラー文に対する他の方々の回答を基にコードを変えたりしたのですが、できませんでした。
teratail内で
mission_3-4
で検索すると良いですよ
(書籍が残念な品質なので同じように困っている人が大勢います。)