現在phpとmysqlで掲示板を製作しています
main.phpでタイトルを書き込み、タイトルをリンクとして表示させ、リンクをクリックすると関連したtolk.phpに飛ぶ仕組みを検討しています。
2つのテーブルを関連づけるのはJOINですることがわかりましたが、リンクを作り、ページに飛んだ後、全て同じ内容(tolk.php)になってしまっています。
リンクを作った後、それぞれ別の内容にするにはどのような記述をすればいいでしょうか?
今現在の状態です
テーブル名:boards
id:int(11)
title:varchar(255)
uptime:datetime
テーブル名:res
id:int(11)
res_time:datetime
message:text
main.php <?php // 部屋立て ini_set('display_errors', true); error_reporting(E_ALL); session_start(); require 'database.php'; $login = $_SESSION['login']; $error = []; if(filter_input(INPUT_SERVER,'REQUEST_METHOD') === 'POST'){ date_default_timezone_set('Asia/Tokyo'); $title = filter_input(INPUT_POST, 'title'); $uptime = date("Y-m-d H:i:s"); if($title === ''){ $error[] = 'タイトルは入力必須です。'; }else if(strlen($title) > 10){ $error[] = 'タイトルは10文字以内で入力してください。'; } if(count($error) === 0){ try{ $pdo = connect(); $stmt = $pdo->prepare('INSERT INTO boards (id,title,uptime) VALUES (null,?,?)'); $params = []; $params[] = $title; $params[] = $uptime; $stmt->execute($params); }catch(PDOException $e){ $error['login'] = 'データベースの接続に失敗しました。'; echo $e->getMessage(); } } } try{ $pdo = connect(); $stmt = $pdo->prepare('SELECT * FROM boards'); $stmt->execute(); $rows = $stmt->fetchAll(); }catch(PDOException $e){ $error['login'] = '一覧が表示されません。'; echo $e->getMessage(); } ?> <!DOCTYPE html> <html lang="ja"> <head> <link rel="stylesheet" href="/css/styles.css"> <meta charset="utf-8"> <title>メインページ</title> <h1>掲示板へようこそ</h1> </head> <body> <?php if(count($error) > 0) : ?> <?php foreach($error as $e) : ?> <p><?php echo h($e); ?></p> <?php endforeach; ?> <?php endif; ?> <section> <h2>新規投稿</h2> <form action="" method="post"> <label for="title">タイトル</label><br> <input type="text" name="title" id="title"><br> <button type="submit">部屋を立てる</button> </form> </section> <section> <h2>投稿一覧</h2> <?php if(!empty($rows)): ?> <?php foreach($rows as $row): ?> <div class="linkbox"> <a href='tolk.php'> <!-- <?php echo h($login); ?> --> <?php echo h($row['title']); ?><br> <?php echo h($row['uptime']); ?> </a> </div> <?php endforeach; ?> </ul> <?php else: ?> <p>投稿はまだありません。</p> <?php endif; ?> </section> </body> </html>
res.php <?php // 部屋立て ini_set('display_errors', true); error_reporting(E_ALL); session_start(); require 'database.php'; $login = $_SESSION['login']; $error = []; if(filter_input(INPUT_SERVER,'REQUEST_METHOD') === 'POST'){ date_default_timezone_set('Asia/Tokyo'); $message = filter_input(INPUT_POST, 'message');//POST、入力された値を格納 $res_time = date("Y-m-d H:i:s"); if($message === ''){ $error[] = 'メッセージは入力必須です。'; }else if(strlen($message) > 100){ $error[] = 'メッセージは100文字以内で入力してください。'; } if(count($error) === 0){ try{ $pdo = connect(); $stmt = $pdo->prepare('INSERT INTO res (message,res_time) VALUES (?,?)'); $params = []; $params[] = $message; $params[] = $res_time; $stmt->execute($params); // $aaa = $stmt->fetchAll(); }catch(PDOException $e){ $error['login'] = 'データベースの接続に失敗しました。'; echo $e->getMessage(); } } } try{ $pdo = connect(); $stmt = $pdo->prepare('SELECT * FROM boards INNER JOIN res ON boards.id = res.id'); $stmt->execute(); $rows = $stmt->fetchAll(); }catch(PDOException $e){ $error['login'] = 'データベースの接続に失敗しました。'; echo $e->getMessage(); } ?> <!DOCTYPE html> <html lang="ja"> <head> <link rel="stylesheet" href="/css/styles.css"> <meta charset="utf-8"> <title>メインページ</title> <h1>掲示板へようこそ</h1> </head> <body> <?php if(count($error) > 0) : ?> <?php foreach($error as $e) : ?> <p><?php echo h($e); ?></p> <?php endforeach; ?> <?php endif; ?> <section> <h2>新規投稿</h2> <form action="" method="post"> <label for="message">メッセージ</label><br> <input type="text" name="message" id="message"><br> <button type="submit">投稿</button> </form> </section> <section> <h2>投稿一覧</h2> <?php if(!empty($rows)): ?> <?php foreach($rows as $row): ?> <div class="linkbox"> <?php echo h($login); ?> <?php echo h($row['res_time']); ?><br> <?php echo h($row['message']); ?> </div> <?php endforeach; ?> </ul> <?php else: ?> <p>投稿はまだありません。</p> <?php endif; ?> </section> </body> </html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。