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

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

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

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

PHP

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

941閲覧

PHP 簡易掲示板 削除機能実装

risa8400

総合スコア4

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

PHP

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/08/22 14:51

前提・実現したいこと

PHP初心者です。
簡易掲示板を作成しているのですが、削除機能を実装したいです。
本来ならば、削除ボタンから、投稿された、数字以外の要素を、ブラウザ上で表示したいのですが、削除ボタンを押すと、名前とコメントが空白で、投稿された時の状態の項目が、増えて更新されます。

色々ググってコードを書いてみましたが、うまくいかないので、教えていただきたいです。

該当のソースコード

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>簡易掲示板</title> </head> <body> <h1>簡易掲示板</h1> <form action="mission0002.php" method="POST"> message:<input type="text" name="comment"> user:<input type="text" name="name"> <input type="submit" value="投稿"></br></br> delete no:<input type"text" name="deleteno"> <input type="submit" value="削除"> </form> <?php

$dataFile ='mission0002.txt';

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{

$comment = ($_POST['comment']); $name = ($_POST['name']); $postedAt = date('Y年m月d日 H:i:s'); $newData = (sizeof(file($dataFile)) + 1)."<>".$name."<>".$comment."<>".$postedAt. "\n"; $fp = fopen($dataFile,'a'); fwrite($fp, $newData); fclose($fp);

}

$file=file("mission0002.txt"); // ファイルの内容を配列に格納 foreach( $file as $value ){ $line = explode("<>",$value); echo $value."<br />\n"; // 改行しながら値を表示

}

//削除

if(isset($_POST["deleteno"])) {

$delete = $_POST["deleteno"]; $delCon = file("mission0002.txt"); $a = fopen("mission0002.txt", "w"); @fwrite($a, ""); fclose($a); for ($j = 0; $j < count($delCon); $j++) { $delDate = explode("'<>'", $delCon[$j]); array_splice($delDate,1); if ($delDate[0] != $delete) { $b = fopen("mission0002.txt", "a"); @fwrite($b, $delCon[$j]); fclose($b); } elseif ($delDate[0] == $delete) { $c = fopen("mission0002.txt", "a"); @fwrite($c, "消去しました。\n"); fclose($c); } }

})

?>

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

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

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

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

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

m.ts10806

2019/08/22 21:17

ググるよりteratail内検索のほうが役に立つと思います。数多投稿されてますので。 掲示板 tag:PHP ↑これをそのままteratailの検索ワードに入れてください。 また他の質問とか回答見られるとわかるかと思いますがコードはマークダウンで提示することが推奨されています。ヘルプページなど確認して質問編集してください
guest

回答1

0

削除がsubmitされた時もファイル書き込み処理が走っています。
(具体的には、削除時もif ($_SERVER['REQUEST_METHOD'] == 'POST'){ }の中に入っているので、「新しくデータを書き込み→指定のIDの投稿を削除」になっている)

「削除の時はファイル書き込みしない」という条件分岐を入れればよいかと。
(そもそも「コメントや名前が空欄だったらファイル書き込みしない」も必要だとは思いますが)

投稿2019/08/23 02:18

sakura_hana

総合スコア11425

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問