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

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

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

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

Q&A

1回答

1858閲覧

掲示板に削除機能を実装したい

tnk1234

総合スコア0

PHP

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

0グッド

0クリップ

投稿2021/07/12 14:01

前提・実現したいこと

掲示板から指定した番号の投稿をテキストファイルからもブラウザからも削除させたい。
またexplode関数を用いて、ブラウザの表示には区切り文字("<>")を入れずに
【POST送信で「削除対象番号」を送信して、受信する際は、if文で「(新規)送信フォーム」と「削除フォーム」で処理を分岐させる】これを実現したいです

発生している問題・エラーメッセー

削除機能の実装をどのように行えば良いのか分からない。

該当のソースコード

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>mission_3-3</title> </head> <body> <form action ="" method="post"> <!--投稿の入力フォーム--> <input type ="text" name ="yourname" placeholder="名前"><br> <textarea name = "text" rows="5" cols="40">コメント記入</textarea> <input type ="submit" name="submit"><br> <!--消去の入力フォーム--> <input type ="text" name ="deletenumber" placeholder ="削除番号"><br> <input type ="submit" name ="delete" value="削除"> </form> <?php $filename = "mission_3-3.txt"; #中身が空では無いとき、入力 if(!empty($_POST["yourname"]) && (!empty($_POST["text"])) != ""){ if(isset($_POST["submit"])){ $name = $_POST["yourname"]; //名前 $comment = $_POST["text"]; //コメント $date = date("Y/m/d H;i;s"); $num = count(file($filename)); //ファイルデータの行数を数えて$numに代入 $num++; //投稿番号を取得する $str = $num."<>".$name."<>".$comment."<>".$date; $fp = fopen ($filename , "a") ; //ファイルを追記モードで開く fwrite($fp, $str.PHP_EOL);//全ての情報を得る fclose($fp); echo "書き込み成功!<br><br>"; $lines = file($filename,FILE_IGNORE_NEW_LINES); foreach($lines as $line){ $line = explode("<>",$line); echo $line[0].",".$line[1].",".$line[2].",".$line[3]."<br>" ; } } } //1. 削除対象番号を送信 //2. 削除対象番号を受信 //3. 受信した削除対象番号を変数に代入 //4. ファイルを開く //5. ファイルの中身を1行1要素として配列変数に代入する //6. ファイルの行数の数だけ繰り返し処理を行う //7. 処理の内容:区切り文字「<>」で分割 //8. 処理の内容:投稿番号の取得 //9. 処理の内容:投稿番号と削除対象番号が一致していない場合、書き込む //10. ファイルを閉じる if(isset($_POST["delete"])){ $delete = $_POST["deletenumber"]; $lines = file($filename,FILE_IGNORE_NEW_LINES); foreach($lines as $line){ $line = explode("<>",$line); $postnumber = $line[0]; var_dump($postnumber); if ($postnumber != $delete){ fwrite($fp , $lines . PHP_EOL); fclose($fp); } } ?> </body> </html>

試したこと

投稿フォームだけで実行すると機能する

補足情報

初心者で調べながら何日もやっていたのですが一向に先が見えそうにないので質問させて頂きました。ご教示頂けますと幸いです。

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

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

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

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

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

guest

回答1

0

質問者さんは一度にすべての問題を解こうとして、わけがわからなくなっているように思います。

例えば、まず以下の2つの単純なプログラムを作ってみるとよいでしょう。

・ブラウザで削除ボタンを押したとき、入力された削除番号をphpで取得してechoで表示するだけのプログラム

・プログラム内に直接削除したい番号を記述して、その番号の投稿をテキストファイルから削除するだけのプログラム

それが出来たらならその2つの機能を組み合わせて**「掲示板から指定した番号の投稿をテキストファイルから削除する」**プログラムを書くことができるようになります。

これで質問者さんが抱えている課題の1つが解決しました。
このように問題を分割して解いていきましょう。

投稿2021/07/12 14:47

ku__ra__ge

総合スコア4524

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

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

ku__ra__ge

2021/07/12 14:47

自分ができる最小単位まで分割してもまだ分からない部分があれば、単純な課題についてそれをどうやって実現するのかという質問をすることが出来るので回答も得られやすいです。
tnk1234

2021/07/13 00:17

ご教示ありがとうございます 内容を細分化してみようと思います!
tnk1234

2021/07/13 07:26

すみません、ブラウザで削除ボタンを押したとき、入力された削除番号をphpで取得してechoで表示するだけのプログラムはできたのですが、プログラム内に直接削除したい番号を記述して、その番号の投稿をテキストファイルから削除するだけのプログラムがイマイチ理解できません。日本語で手順を教えて頂けないでしょうか?
ku__ra__ge

2021/07/13 07:45

こんな感じですね。少し間違っている箇所はありますが質問文に書いてあるコードでほぼ正解です。 ファイル全体を読み込んで配列に格納する ファイルを書き込みモード(上書き)で開く 配列の各要素について、「削除したい番号」の行以外の行をファイルに書き込む(つまり、削除したい番号以外を書き込む) 配列の各要素についての処理が終わったら、ファイルを閉じる
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問