###実現したいこと
簡易掲示板について。
テキストと送信ボタンがある掲示版を扱います。
フォームを送信すると、別に用意したテキストファイルに内容が保存され、そこから読みだされた内容が画面に出力されます。
さらに、指定した番号のフォームを再度、入力フォームの表示させ、編集し、送信すると、指定番号のテキストが書き換えられる仕組みです。
###発生している問題
hiddenを使って、送信ではなく、編集ということを明らかにしたいのですが、適切な方法が分かりません。
また、フォーム内容を保存しているテキストを再度、送信フォームに出力させる方法が分かりません。
###該当のソースコード
<form action="<?php echo($_SERVER['PHP_SELF']) ?>" method="post"> <table> <tr><td>名前:</td> <td><input type="text" name="name"></td></tr> <tr><td>コメント:</td> <td><textarea name="comment" cols="30" rows="5"></textarea></td></tr> <tr><td><input type="submit" name="submit" value="送信"></td></tr></table> </form> <?php if(isset($_POST["submit"])){ $fp1 = fopen('kadai_2_5.dat','r+'); $num = fgets($fp1); if (empty($num)){ $num =1;} fseek($fp1,0); //これは必要。なければ、1>2>23>2324....と続く。 fputs($fp1,$num + 1); //フォーム内容と送信時間、送信番号をファイルに書き込む。 $timestamp = date("Y/m/d H時i分s秒"); $name = $_POST["name"]; $comment = $_POST["comment"]; $file = "kadai_2_5.txt"; //.txtはフォーム内容 $fp2 = fopen($file, "a+"); fwrite($fp2, "(".$num.")|"."名前:".$name."|コメント: ".$comment."|投稿時間: ".$timestamp.""."\n"); fclose($fp2); fclose($fp1); }?> <!-- ファイルを読み込んで配列に変換、さらにリストに変換して画面表示する。--> <?php // if(isset($_POST["submit"])){ $num_arr = array(); $content = file("kadai_2_5.txt"); foreach ($content as $list) : //リストは送信ファイル一つずつ $parts = explode("|", $list); //partsは送信ファイルの各要素を配列化したもの $parts0 = substr($parts[0], strpos($parts[0], '(') +1, strpos($parts, ')') -1); array_push($num_arr, $parts0); // var_dump($num_arr); ?> <?php foreach ($parts as $part):?><!--ここから再度、サイトに送信ファイルを記入する--> <table><tr> <?php echo $part;?> </tr></table> <?php endforeach; ?> <?php endforeach;?> <form method="post" action="<?php echo($_SERVER['PHP_SELF']) ?>"> <p>-----------------------</p> <p>編集したい番号を、半角数字で入力してください</p> <input type="text" name="edit_num" placeholder="例)1"> <input type="submit" name="edit_btn" value="編集する"> <input type="hidden" name="edit" value="hensyu"> </form> <?php if($_POST["edit_btn"]){ //編集ボタンが押されたら。 if($_POST["edit_num"]){ $edit_num = $_POST["edit_num"]; foreach ($num_arr as $num_ary){ //フォームの番号をループ if($edit_num == $num_ary){ echo "goooooood!!!!!!!!!!"; echo "<input type='text' name='name' value='".$content[$edit_num]."'>"; } } }else { //もし削除番号が入力されていなかったら echo "編集する番号を入力してください!!!!!";} } ?>
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/21 02:43 編集
2016/11/22 23:03 編集
2016/11/23 06:01 編集
2016/11/23 21:02