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

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

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

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

Q&A

解決済

2回答

1826閲覧

削除機能が上手に機能しません

act6435

総合スコア4

PHP

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

0グッド

0クリップ

投稿2020/09/01 09:01

投稿フォームの下に投稿内容を表示して削除機能で指定した番号だけを削除したいのですが、すべて消えてしまいます。どこを直せばいいのか教えていただけないでしょうか。

コード <!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="name" placeholder="名前"> <input type="text" name="comment" placeholder="コメント"> <input type="submit" name="submit"> <br> <br> <input type="text" name="delete" placeholder="削除番号" value=""> <input type="submit" name="delete" value="削除"> </form> <?php $name = $_POST["name"]; $comment = $_POST["comment"]; $date = date("Y/m/d H:i:s"); $delete = $_POST["delete"]; $filename = "mission_3-2.txt"; if(!empty($name && $comment)){ if (file_exists($filename)) { $num = count(file($filename))+1; } else { $num = 1; } $fp = fopen($filename, "a"); $newdata = ($num ."<>" .$name ."<>" .$comment ."<>" .$date ."\n"); fwrite($fp, $newdata); fclose($fp); } elseif(!empty($delete) && file_exists($filename)){ $lines = file($filename, FILE_IGNORE_NEW_LINES); foreach($lines as $line){ $line_div = explode("<>", $line); } $delfp = fopen($filename, "w"); if($delete == $line_div[0]){ fwrite($delfp, "削除済み\n"); } fclose($delfp); } $arrays = file($filename); for($i=0; $i<count($arrays); ++$i){ $array = explode("<>", $arrays[$i]); foreach($array as $str){ echo $str." "; } echo "<br>"; } ?> </body> </html>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/09/01 09:15

削除機能をどう設計して、どう実装しようとしているのか、PHPのコードを書く前に日本語ででも説明してみてください。
guest

回答2

0

ベストアンサー

php

1 foreach($lines as $line){ 2 $line_div = explode("<>", $line); 3 // 4 // このあたりで、投稿データを分解したあとに投稿番号と比較するような処理が必要。 5 // 6 }

php

1 if($delete == $line_div[0]){ 2 fwrite($delfp, "削除済み\n"); 3 }

ここで何をやっているか、冷静に考えてみてください。

投稿2020/09/01 09:12

編集2020/09/01 09:14
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

act6435

2020/09/01 10:46

アドバイスありがとうございます。 最初から確かめてみます。
退会済みユーザー

退会済みユーザー

2020/09/01 10:59

var_dump()など駆使して、場面ごとの変数の中身をチェックするのも大事です。
act6435

2020/09/01 12:53

ありがとうございます。
guest

0

この辺りの記事を参考にするといいと思います

ファイルの書き込みでデータの一部分だけ上書きする方法(PHP)
それとは別に現状の問題点としては$line_div がすべてのループが終わってから判定しているので
常に最終行しか判定できません。チェックを入れるならforeachの間に入れましょう。

投稿2020/09/01 09:10

gogoweb_ikeda

総合スコア1426

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

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

act6435

2020/09/01 12:53

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問