![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
テキストボックスの値をPOSTで送信し、日時とユーザが入力した値を1行ずつファイル(review.txt)に保存し、ページ下部にファイル内容を1行ずつ表示するプログラムを作成しましたが、ブラウザに発言履歴が残りません。どの部分を修正すればいいですか?
<?php
//ブラウザに履歴がのこらないです
$filename = './review.txt';
$comment = '';
$date = date('m/d H:i:s');
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['comment']) === TRUE) {
$comment = $_POST['comment'];
}
if (($fp = fopen($filename, 'a')) !== FALSE) {
$result = fwrite($fp, $comment . '-' . $date . "\n");
if ($result === FALSE) {
print 'ファイル書き込み失敗: ' . $filename;
}
fclose($fp);
}
}
$work = [];
if (is_readable($filename) === TRUE) {
print "\n";
if(($fp=fopen($filename,'a')) !== FALSE) {
print "\n";}
while(($tmp = fgets($fp)) !==FALSE) {
print "\n";
$work[] = htmlspecialchars($tmp,ENT_QUOTES,'UTF-8');
}
fclose($fp);
}
else {
print "\n";
$work[] = 'ファイルがありません';
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<h1>ファイル操作</h1>
<form method="post" >
<label><p>発言:<input type="text" name="comment">
<input type="submit" value="送信"></p></label>
</form>
<p>発言一覧</p>
<?php foreach ($work as $value){?>
<p><?php print $date; $value?></p>
<?php } ?>
</body>
</html>
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
fopen の第2引数 mode に 'a' を指定すると、
ファイルへの追記動作となるため読み込みできません。
読み込みをする場合は 'r' を指定しましょう。
https://www.php.net/manual/ja/function.fopen.php
if や while の条件式の中で代入処理を行うと、
記載内容が複雑になり初心者が問題を見つけづらくなるので、
個人的には分離して書くべきかと思っています。
修正案
if(($fp=fopen($filename,'a')) !== FALSE) {
↓
$fp = fopen($filename, 'r');
if ($fp !== FALSE) {
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル名は、数字の「0」(...
-
二次元配列のソートのやり方が...
-
PHPでテキストファイルかどうか...
-
PHPでの別のサーバーのテキスト...
-
条件文について
-
2つの画像ファイルが異なるファ...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
PHPのif文でその処理を途中で抜...
-
透過PNGが透過されない!!
-
PHPで新しいウインドウで開く命...
-
データ送信をボタンを押さずに...
-
.phpと.incファイルの違いはな...
-
バッチを用いたフォルダの自動移動
-
copy() で属性保存
-
<A href ~ と一緒に値を渡すには
-
form actionで二つ送信先を指定...
-
3つ以上の論理積は利用可能なの...
-
別PHPファイルに変数を渡す
-
GDで生成したはずの画像が文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPでFilename cannot be empty...
-
2つの画像ファイルが異なるファ...
-
phpのftp_get()でエラーが出ます。
-
ファイルの行数取得
-
stat failed
-
ファイル名は、数字の「0」(...
-
XMLのロードに失敗する
-
日本語が文字化けしないよう読...
-
shift-jisでfgetcsv
-
別のサーバにあるファイルの存...
-
Smartyで吐き出されたhtmlソー...
-
PHPでテキストファイルかどうか...
-
PHPでの別のサーバーのテキスト...
-
PHPでAPI 出力はCSVを取得する...
-
値の取り出し方について教えて...
-
FirefoxでFormのfileでファイル...
-
PHPのファイル操作
-
日本語のファイルが開けない
-
Warning: preg_match_allの他に...
-
TSVファイルをCSV形式に変換したい
おすすめ情報