
テキストボックスの値を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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックスとの連携
-
phpのheader("Location:#pos")...
-
*.php、*.php3、*.phtmlの違い
-
phpのextension_dirを複数指定...
-
PHP PDOライブラリが読み込まれ...
-
phpでメール送信できません 原...
-
header(Location:~)で$_SESS...
-
<A href ~ と一緒に値を渡すには
-
さくらインターネットでメール...
-
【PHP】tmp_nameの命名規約につ...
-
php4とphp5での数値の取り扱い...
-
テレメールとは?
-
PHPでメールを受信するには?
-
データ送信をボタンを押さずに...
-
PEAR(Image_QRCode)のエラー
-
Apache 2.4でphp-5.3を使いたい...
-
セッションについての設定なの...
-
require_once()でファイルが読...
-
HTML文をなんとか隠蔽したいの...
-
再度、xamppにおけるjpgraphの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpのftp_get()でエラーが出ます。
-
stat failed
-
PHPでFilename cannot be empty...
-
cronのエラー出力ファイルに2行...
-
独自INIファイルの操作をしたい...
-
CekePHPでfile_exists関数を使う
-
PHPでテキストファイルかどうか...
-
PHPで特定の文字列のみ抽出し、...
-
PHP+MySQL でのcsvファイルイン...
-
日本語が文字化けしないよう読...
-
PHPでAPI 出力はCSVを取得する...
-
shift-jisでfgetcsv
-
メソッドと配列の処理速度について
-
PHPのファイル操作
-
拡張子PHP3のスクリプトを...
-
phpのheader("Location:#pos")...
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
CFileDialogの最初のディレクト...
-
.phpと.incファイルの違いはな...
おすすめ情報