質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

13046閲覧

phpで作成した簡易掲示板で指定した番号のコメントを削除する方法

sumikko6210

総合スコア138

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/01/07 08:36

php初心者です
今,phpで簡易掲示板を作成しています

番号を指定すると、指定された番号のコメントが削除される仕組みを作っています。
コードを書いたのですが、反応せず、コメントが消えません。
番号指定して、削除ボタンを押すと該当番号のコメントが消えるコードを教えていただきたいです

コード↓

<?php $dataFile ='bbs2.txt'; if(isset($_POST['toukou'])) { $message = ($_POST['message']); $user = ($_POST['user']); $postedAt = date('Y-m-d H:i:s'); $newData = (sizeof(file($dataFile)) + 1)."<>".$message."<>".$user."<>".$postedAt. "\n"; $fp = fopen($dataFile,'a'); fwrite($fp, $newData); fclose($fp); } if (isset($_POST['delete'])) { $delete = $_POST['delete']; $delCon = file("bbs2.txt"); for ($j = 0; $j < count($delCon) ; $j++){ $delData = explode("<>", $delCon[$j]); if ($delData[0] == "{".$delete."}") { array_splice($delCon, $j, 1); } } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>簡易掲示板</title> </head> <body> <h1>簡易掲示板</h1> <form action="" method="POST">
message:<input type="text" name="message"> user:<input type="text" name="user"> <input type="submit" name="toukou" value="投稿"></br></br> </form> <form action="" method="POST"> 削除対象番号<input type="text" name="delete"> <input type="submit" name="delete" value="削除"> </form>
<?php $file=file($dataFile); // ファイルの内容を配列に格納 foreach( $file as $value ){ $line = explode("<>",$value); echo $value."<br />\n"; // 改行しながら値を表示 } ?> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

修正すべき箇所が、2か所あります。

まず一点目は、HTMLの次の箇所です。

HTML

1 <form action="" method="POST"> 2 削除対象番号<input type="text" name="delete"> 3 <input type="submit" name="delete" value="削除"> 4 </form>

ここで、name="delete" が、ボタンにもinputタグにも設定されています。
POSTが正しくされないため、inputタグのほうのname属性を、name="deleteNo" と変更しましょう。

そのため、コードは以下のように、$deleteに代入している部分を$_POST['deleteNo']に変更します。
file_put_contents も入っていることに注意してください。

PHP

1if (isset($_POST['delete'])) { 2 3$delete = $_POST['deleteNo']; 4$delCon = file("bbs2.txt"); 5for ($j = 0; $j < count($delCon) ; $j++){ 6$delData = explode("<>", $delCon[$j]); 7 8if ($delData[0] == "{".$delete."}") { 9array_splice($delCon, $j, 1); 10file_put_contents($dataFile, implode("\n", $delCon)); 11}

次に、もう一点。
はたして、

PHP

1if ($delData[0] == "{".$delete."}")

はきちんと評価されているでしょうか?
ファイルに書き込むとき、

PHP

1$newData = (sizeof(file($dataFile)) + 1)."<>".$message."<>".$user."<>".$postedAt. "\n";

となっているので、ファイルの行の先頭はただの1、2・・・という数値が入ると思います。
{1}、{2}が入るのならば、ifの評価式で良いのですが。。
そのため、以下のように"{"と"}" の文字をとってしまいましょう

PHP

1if ($delData[0] == $delete) {

これでどうでしょうか??

投稿2016/01/13 09:16

Toyoshima

総合スコア422

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sumikko6210

2016/01/13 09:47

丁寧なご返答、誠にありがとうございました! 無事、実装することができました 教えていただいた点と自分がまだ十分に理解できてなかった点をよく復習します この度はほんとうにありがとうございました! ちなみにこの掲示板はメール機能なども実装していく予定です。 以前、コメントをしてくださった「排他」などの質問をまたするかもしれませんので そのときはまたよろしくお願いいたします
guest

0

array_splice($delCon, $j, 1); したデータを、bbs2.txtにかきこんでいないからでは・・・?

具体的には、if (isset($_POST['delete'])) の制御ブロックの最後あたりに、

file_put_contents($dataFile, implode("\n", $delCon));
をつければ良い・・・かな??

ただ、きちんとした掲示板にするには、排他などいろいろかんがえないといけませんね。。

投稿2016/01/07 08:51

編集2016/01/07 09:11
Toyoshima

総合スコア422

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sumikko6210

2016/01/13 08:14

ご返信ありがとうございます 上記のコードにfile_put_contents($dataFile, implode("\n", $delCon));を記載 したもののなにも反映されず、変化がありませんでした・・・ もう少しお力添えをしていただけるとありがたいです うまくできればまた報告いたします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問