前提・実現したいこと
簡単な掲示板を作成したいと思っており、コメント、削除フォームを作りたいと思っています。また、削除の際例えば
1 番号 名前 コメント…
2 番号 名前 コメント
3
4
....
と並んでいて、2を消したとする。そして次にコメントするときは
1 番号
3
4
5
となるようにしたいです。
(つまり、1 3 4 4という番号の振り分けにならないようにしたいです)
発生している問題・エラーメッセージ
Notice: Only variables should be passed by reference in /public_html/rensyuuyou.php on line 42 Notice: A non well formed numeric value encountered in /public_html/rensyuuyou.php on line 42
一番最初のコメントが上手くいきません、
1///時間 /
2/名前/コメント/時間/
となる(2以降はちゃんと表示できます)
また、上記のエラー文がずっと表示されてしまいます。
該当のソースコード
<meta charset="utf-8"> </head> <body> <form method="post" action="rensyuuyou.php"> <input type="text" name="name" placeholder="名前"> <br> <input type="text" name="comment" placeholder="コメント"> <input type="submit"> <br> </form> <form method="post" action="rensyuuyou.php"> <input type="text" name="deleteNo" placeholder="削除番号" > <input type="submit" name="delete"value="削除"> </form> <br> <?php $filename = "rensyuuyou.txt"; //コメント欄が空でない場合条件分岐 if( !empty($_POST["comment"])) { if(file_exists($filename)){ $name = $_POST["name"]; $comment = $_POST["comment"]; $count=end(file($filename))+1; }else{ $count = 1; } $date = date("Y年m月d日 h時i分"); //まとめました、これで番号名前~の情報がある。 $NewData=$count."<>".$name."<>".$comment."<>".$date."\n"; //テキストファイルに書き込み! $fp = fopen($filename, "a"); fwrite($fp, "$NewData"); fclose($fp); //新しい定義ブラウザ表示のための } //条件分岐、削除番号入力 if(isset($_POST["deleteNo"])) { $delete = $_POST["deleteNo"]; $delCon = file($filename); //新しい定義付け echo "削除しました。"."<br>"; $fp=fopen($filename,"w"); for($i= 0; $i<count($delCon); $i++){ //ループ処理 $delfile = explode("<>", $delCon[$i]); //定義付け if($delfile[0]!= $delete) { fwrite($fp,$delCon[$i]); } } fclose($fp); } if(file_exists($filename)){ $lines = file($filename); //ループ処理。 foreach($lines as $line){ //表示! $hyouzi = explode("<>", $line); echo $hyouzi[0]."/".$hyouzi[1]."/".$hyouzi[2]."/".$hyouzi[3]."/"."<br>"; } } ?> </body> </html>
試したこと
元々数のカウントを $count = count(file($filename))+1; を使っていて。それだと指定番号を削除した後にコメントすると番号が重複してしまうのでendに変えたところ問題が発生しました。また、最初の方ですとエラー文は出ません。1番目のコメントもしっかり表示されます。
テキストの行数の総数+1($count = count(file($filename))+1)から、最後の番号を取得し+1するべきだというのは分かっているのですが。ここからどう直すべきなのか、わからない為アドバイス頂けないかと質問致しました。どうぞよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。