PHP、CSVで掲示板を作成しています。
動作確認をしたところ
どう直せばいいのかご教示よろしくお願いいたします。
function h($str){ return htmlspecialchars($str,ENT_QUOTES,'UTF-8'); } $name=(string)filter_input(INPUT_POST,'name'); $message=(string)filter_input(INPUT_POST,'message'); $fp = fopen('keijiban.csv','a+b'); if($_SERVER['REQUEST_METHOD']==='POST'){ fputcsv($fp,[$_POST['name'], $_POST['message']]); rewind($fp); } while($row = fgetcsv($fp)){ $rows[] = $row; } fclose($fp); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title> 簡易掲示板</title> <link rel="stylesheet" href="keijiban.css"> <meta name="description" content="簡易掲示板です。"> <meta name="viewport" content="width=device-width,initial-scale=1" </head> <body> <h1>簡易掲示板</h1> <form method="POST" action=""> <div> <label for="name">名前</label> <input type="text" id="name" name = "name" placeholder="匿名さん"> </div> <div> <label for="message">メッセージ</label> <textarea name="message" cols="30" rows="5" maxlength="100" placeholder="本文"></textarea> <br> <input type="submit" value="送信する" class="button"> </div> </form> <h2>投稿一覧</h2> <?php if (!empty($rows)): ?> <ul> <?php foreach ($rows as $row): ?> <li><?php echo nl2br($row[1]); ?>(<?=$row[0]?>)</li> <?php endforeach; ?> </ul> <?php else: ?> <p>投稿はまだありません</p> <?php endif; ?> </body> </html> var_export($rows);で出力した場合です。 array ( 0 => array ( 0 => 'テスト,メッセージ', ), 1 => array ( 0 => 'テスト1', 1 => '', ), 2 => array ( 0 => '', 1 => 'メッセージ1', ), 3 => array ( 0 => 'tesuto ', 1 => '', ), 4 => array ( 0 => 'テスト1', 1 => 'メッセージ1', ), 5 => array ( 0 => '匿名,"あああ ', ), 6 => array ( 0 => 'いいい ', ), 7 => array ( 0 => 'ううう"', ), )
エラーの出ている行数と場所を指示してください。
あと「のエラー」と出る環境ってなにでしょうか?
PHPのバージョンなどの環境情報もご提示ください。
エラーも基本全文コピペ願います
Notice: Undefined offset: 1 in C:\xampp\htdocs\keijiban.php on line 53
()
Xamppを使っています。PHPのバージョンは7.2.9です。
質問を編集して追記願います。
またline53といっても提示のコードは明らかな省略があるのでどこの話なのか他人にはわかりません。
「ここ」とわかるように指示してください。
編集、提示致しました。
var_dump($rows);の結果を質問文にコードブロックで追記してください。
var_dump($rows);の結果追記しました。
すみません、前言撤回します。 var_export($rows);でお願いできますか?(var_dumpと違い回答者側で再現しやすいため)
了解しました。
コードブロックが外れていますよ。コードブロックは ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。