前提・実現したいこと
初心者です。
PHPで掲示板を作成しています。index.phpに投稿されたコメントをedit.phpで編集をし、編集したものを再度index.phpに表示したいのですがうまくいきません。
様々なサイトを見て書いたのでかなり汚いソースコードになっていると思いますが、詳しい方よろしくお願いします。
index.php
<?php date_default_timezone_set('Asia/Tokyo'); $timestamp=time(); $time=""; $title= ""; $name = ""; $comment = ""; if (isset($_POST['send']) === true) { $time=$_POST["date"]; $title = $_POST["title"]; $name = $_POST["name"]; $comment = $_POST["comment"]; $fp = fopen("index.txt", "a"); fwrite($fp,date("Y/m/d",$timestamp)." \t". $title . "\t" . $name . "\t". $comment ."\n"); fclose($fp); } $fp = fopen("index.txt", "r"); $bord_array = []; while ($line = fgets($fp)) { $temp = explode("\t", $line); $temp_array = [ "date" => $temp[0], "title" => $temp[1], "name"=> $temp[2], "comment" => $temp[3] ]; $bord_array[] = $temp_array; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>掲示板</title> </head> <h2>掲示板</h2> <body> <form action="" method="post"> <div> <label for="title">タイトル</label> <input type="text" id="title" name="title"> </div> <div> <label for="name">名前</label> <input type="text" id="name" name="name"> </div> <div> <label for="comment">コメント</label> <input type="text" id="comment" name="comment"> </div> <input type="submit" name="send" value="投稿"> </form> <h2>表示欄</h2> <ul> <?php foreach ($bord_array as $data): ?> <article> <div> <?= $data["date"] . " " . $data["title"] . "</br>" . $data["name"]. ":" . $data["comment"]; ?> <p><a href="edit.php">編集</a> <a href="delete.php">削除</a></p> </div> </article> <?php endforeach; ?> </ul> </body> </html>
edit.php
<?php // データベースの接続情報 define( 'DB_HOST', 'localhost'); define( 'DB_USER', 'root'); define( 'DB_PASS', 'password'); define( 'DB_NAME', 'board'); // タイムゾーン設定 date_default_timezone_set('Asia/Tokyo'); // 変数の初期化 $message_id = null; $mysqli = null; $sql = null; $res = null; $error_message = array(); $message_data = array(); session_start(); if( !empty($_GET['message_id'])) { $message_id = (int)htmlspecialchars($_GET['message_id'], ENT_QUOTES); // データベースに接続 $mysqli = new mysqli( DB_HOST, DB_USER, DB_PASS, DB_NAME); // データの読み込み $sql = "SELECT * FROM message WHERE id = $message_id"; $res = $mysqli->query($sql); if( $res ) { $message_data = $res->fetch_assoc(); } else { // データが読み込めなかったら一覧に戻る header("Location: ./admin.php"); } $mysqli->close(); } ?> <!DOCTYPE html><html lang="ja"> <head> <meta charset="UTF-8"> <title>投稿の編集</title> </head> <h2>投稿の編集</h2> <body> <form action="" method="post"> <div> <label for="title">タイトル</label> <input type="text" id="title" name="title"> <?php if( !empty($message_data['title']) ){ echo $message_data['title']; } ?> </div> <div> <label for="name">名前</label> <input type="text" id="name" name="name"> <?php if( !empty($message_data['name']) ){ echo $message_data['name']; } ?> </div> <div> <label for="comment">コメント</label> <input type="text" id="comment" name="comment"> <?php if( !empty($message_data['comment']) ){ echo $message_data['comment']; } ?> </div> <a class="btn_cancel" href="index.php">キャンセル</a> <input type="submit" name="send" value="編集"> </form> </body> </html>
補足情報(FW/ツールのバージョンなど)
XAMPPです。
あなたの回答
tips
プレビュー