phpファイルとは別に、テキストファイルを同じディレクトリに作っています。
削除までは問題なく動作しましたが、編集機能(keijiban.txtから投稿番号を、編集番号としてPOSTでそれぞれ取得したものを比較して一致したときargs[2]に編集内容をPOSTしたコメントを上書き、file_put_contentsでテキストファイルに上書き)を作成したのですが、編集ボタンを押すと投稿が1〜3個しか表示されなくなりました。また再読み込みをすると同じ現象が起きます。
どこをどのように書き換えるべきでしょうか。アドバイスをよろしくお願いします。
今度こそソースコードをバッククオートで囲みました。度々申し訳ございません。
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>掲示板</title> </head> <body> <form action=keijiban.php method="post"> 名前:<br /> <input type="text" name="name" size="30" value="" /><br /> コメント:<br /> <textarea name="comment" cols="30" rows="5"></textarea><br /> <br /> <input type="submit" value=“投稿” /> <br /> <br /> 削除する投稿番号: <input type="number" name= "delete" value=""><br /> 編集する投稿番号: <input type="number" name= "change" value=""><br /> 編集内容:<br /> <textarea name="change_comment" cols="30" rows="5"></textarea><br /> <input type="submit" value=“編集” /> <br /> <br /> <br /> <br /> </form> <?php function dispKekka($var, $var_kata){ print('変数に格納されている値は'.$var.'です<br>'); print('変数の型は'.$var_kata.'です<br><br>'); } function comment_change($change_number,$change_comment){ $array = file("keijiban.txt"); for($num = 0; $num < count($array); ++$num){; $args = explode("<>",$array[$num]); if( "{".$change_number."}" == $args[0]){ $args[2] = "{".$_POST["change_comment"]."}"; return $args[2]; } } } $fpr = fopen("keijiban.txt","r"); for($num = 0;fgets($fpr);$num++); $num_ = $num+1; fclose($fpr); date_default_timezone_set('Japan'); if($num == 0){ if(isset($_POST["name"]) and isset($_POST["comment"])){ if($_POST["name"] != "" and $_POST["comment"]){ $fpw = fopen("keijiban.txt","w"); fwrite($fpw,"{1}"."<>{"); fwrite($fpw,$_POST["name"]."}<>{"); fwrite($fpw,$_POST["comment"]."}<>{"); fwrite($fpw,date('Y年m月d日 H時i分s秒')."}\n"); fclose($fpw); } } } else{ if(isset($_POST["name"]) and isset($_POST["comment"])){ if($_POST["name"] != "" and $_POST["comment"]){ $fpa = fopen("keijiban.txt","a"); fwrite($fpa,"{".$num_."}<>{"); fwrite($fpa,$_POST["name"]."}<>{"); fwrite($fpa,$_POST["comment"]."}<>{"); fwrite($fpa,date('Y年m月d日 H時i分s秒')."}\n"); fclose($fpa); } } } if(isset($_POST["delete"]) and $_POST["delete"] != ""){ echo("削除する投稿番号が入力されました。".$_POST["delete"]."<br />\n"); $del = intval($_POST["delete"]) - 1; $file = file('keijiban.txt'); unset($file[$del]); file_put_contents('keijiban.txt', $file); } $file = "keijiban.txt"; $array = file($file); for($num = 0; $num < count($array); ++$num){ $args = explode("<>",$array[$num]); $new_num = $num + 1; $array = file($file); $args[0] = "{".$new_num."}"; if($_POST["change"] != ""){ if("{".$_POST["change"]."}" == $args[0]){ $args[2] = comment_change($_POST["change"],$_POST["change_comment"]); file_put_contents("keijiban.txt",$args); } } echo("投稿番号".$args[0]."<br />\n"); echo("投稿者".$args[1]."<br />\n"); echo("コメント".$args[2]."<br />\n"); echo("投稿日時".$args[3]."<br />\n<br />\n"); } ?> </body> </html>
回答1件
あなたの回答
tips
プレビュー