```php コード
php
1<?php 2ini_set('display_errors', 1); 3error_reporting(E_ALL); 4 5date_default_timezone_set('Asia/Tokyo'); 6 7$err_msg1 = ""; 8$err_msg2 = ""; 9$message =""; 10$name = ( isset( $_POST["name"] ) === true ) ?$_POST["name"]: ""; 11$comment = ( isset( $_POST["comment"] ) === true ) ? trim($_POST["comment"]) : ""; 12 13if ( isset($_POST["toukou"] ) === true ) { 14 if ( $name === "" ) $err_msg1 = "名前を入力してください"; 15 16 if ( $comment === "" ) $err_msg2 = "コメントを入力してください"; 17 18 if( $err_msg1 === "" && $err_msg2 ==="" ){ 19 $message ="書き込みに成功しました。"; 20 } 21 22} 23 24 25 26if (null != filter_input_array(INPUT_POST)) { 27 $name = filter_input(INPUT_POST, 'name'); 28 $comment = filter_input(INPUT_POST, 'comment'); 29 30 31if (!empty($name) && !empty($comment)){ 32$number = file_get_contents("counter.txt"); 33$name = $_POST["name"]; 34$comment = $_POST["comment"]; 35$date = date('Y-m-d-G-i'); 36 37$file_number = "k_2_3.txt"; 38$number_array = file( $file_number ); 39 for( $i = 0; $i <= count($number_array );++$i ){ 40 $number++ ;} 41 42 43 44$fp = fopen("k_2_3.txt", "a"); 45fwrite($fp, "$number'<>'$name'<>'$comment'<>'$date\n"); 46fclose($fp); 47 } 48 49 50} 51if (isset($_POST["delete"])) { 52 53$delete = $_POST["delete"]; 54$delCon = file("k_2_3.txt"); 55$a = fopen("k_2_3.txt", "w"); 56 @fwrite($a,"" ); 57 fclose($a); 58for ($j = 0; $j < count($delCon) ; $j++){ 59$delDate = explode("<>", $delCon[$j]); 60array_splice($delDate,1); 61 62if ($delDate != $delete) { 63$b = fopen("k_2_3.txt", "a"); 64 @fwrite($b,$delCon[$j] ); 65 fclose($b); 66} 67elseif($delDate == $delete){ 68$c = fopen("k_2_3.txt", "a"); 69 @fwrite($c,"消去しました。" ); 70 fclose($c); 71} 72} 73} 74?> 75 76 77 78<?php echo $message; ?> 79<form action="k_2_4.php" method="post" > 80名前を入力してください。<br/> 81<input type="text" name="name" value="<?php echo $name; echo $err_msg1; ?>" /><br/> 82コメント<br/> 83<textarea name ="comment"cols="50" rows="5"><?php echo $comment;echo $err_msg2; ?></textarea> 84<br> 85<input type="submit" name="toukou" value="投稿" /> 86 87</form> 88 89 <form action="" method="POST"> 90 削除対象番号<input type="text" name="delete"> 91 <input type="submit" name="deleteNo" value="削除"> 92 </form> 93 <h2>投稿一覧</h2> 94 95 96<?php 97 98$file_name = "k_2_3.txt"; 99 100 $ret_array = file( $file_name ); 101 102 103 for( $i = 0; $i < count($ret_array); ++$i ) { 104 $line = explode( '<>', $ret_array[$i]); 105 echo ( $ret_array[$i] . "<br />\n" ); 106 } 107 108 109?> 110 111
###前提・実現したいこと 送信された番号の投稿を消去したい。 ###発生している問題・エラーメッセージ 投稿されている番号の取得が上手くいかない。 消去された場合に消去したことを表示できていない。 自分なりにコードを組んでみたのですが、消去番号を4にしたりすると、四番 目の投稿を消してしまい、投稿番号4を消すように上手くできていません。 それと消去された投稿に消去されたことを表示したいのですが、それも上手く出来ていません。 どうか改善点などご教授くだされば、幸いです。 counter.txtは別のところにあらかじめ、0を入力しておいてあります。
$delDataと$delDateが混在してますが、大丈夫か? $commentに改行コードを含んでいる場合や、「<>」を含んでいる場合に障害が発生しそうですね。
こっちが間違ってたらあれなんですが、投稿したときのexplode的なものが抜けてる気が。あとcounter.txtはどこに?
ご指摘ありがとうございます。修正すると、消去機能も反応しなくなったのですが、なにか根本的におかしなところがあれば、ご指摘ください。
インデント見辛いから見るきが失せる
すみません。以後気をつけます。今回はご容赦ください。
コードを綺麗にするツールなどがあるので、整形されるほうが良いと思います。 http://beta.phpformatter.com/
ありがとうございます。
まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。また、解決されていないなら状況をお教えください。
ご指摘ありがとうございました!
回答3件
あなたの回答
tips
プレビュー