今、会員制チャットサイトを作っていて、g_id(ID)を主キーとして、
ID(g_id),タイトル(g_title),本文(g_text)を入力して
送信ボタンを押すとDBにID(g_id),会員登録された時のニックネーム(g_name),タイトル(g_title),本文(g_text)の順に挿入されて
その入力内容が画面に出るという内容のプログラムを作っているのですが、
出力内容を表示して、それを(ID(g_id).名前(g_name).タイトル(g_title).本文(g_text)の順番にテーブルにしたのですが、
IDの所に名前が出たり、ズレます。
どうすれば良いですか?
(chat.php)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>チャット</title> </head> <body> <div align="center" > <h1>チャットしましょ~い!!!</h1> <th><font size="7" color="#AABBAC">楽しく呟きましょ~い!!!</font></th> <form action ="chat2.php" method = "post"> <div> <p><?php // エラー出力しない場合 ini_set('display_errors', 0); ?> <html> <head> <title>ヘッダー</title> </head> <body> <table width="1000"> <tr> <th><font size="50" color="#ff0000"> <?php session_start(); if (isset($_POST['login'])) { $_SESSION['userId'] = $_POST["userId"]; } ?> <th> <p>ID:<input type = "text" name = "g_id" size = "10" maxlength = "4"></p> <p>(ユーザID:<?php $dsn = 'mysql:dbname=kakunabi;host=localhost'; $db['user'] = "hoge"; $db['pass'] = "1234"; $dbh = new PDO($dsn,$db['user'],$db['pass'] ); $sql = 'select * from user'; foreach ($dbh->query($sql) as $aaa) { if (($_SESSION['userId'] !== $aaa["user_id"] )){ continue; } // 両方一致していたらhead.phpへ遷移する print($aaa['user_id']); } ?> ) (ニックネーム:<?php $dsn = 'mysql:dbname=kakunabi;host=localhost'; $db['user'] = "hoge"; $db['pass'] = "1234"; $dbh = new PDO($dsn,$db['user'],$db['pass'] ); $sql = 'select * from user'; foreach ($dbh->query($sql) as $aaa) { if (($_SESSION['userId'] !== $aaa["user_id"] )){ continue; } // 両方一致していたらhead.phpへ遷移する print($aaa['name']); print("<input type=\"hidden\" name=\"g_name\" value=\"".$aaa['name']."\">"); } ?> ) <p>タイトル:<input type = "text" name = "g_title" size = "50" maxlength = "70"></p> <p>本文:::<input type = "text" name = "g_text" size = "50" maxlength = "140"></p> </div> <p><input type = "submit" name="insert" value="送信"> <input type = "reset" value="リセット"></p> <a href="head.php">戻る</a></th> <table border=1> <tbody> <tr> <td>ID</td><td>名前</td><td>タイトル</td><td>本文</td> </tr> <tr> <td><?php $dsn = 'mysql:host=localhost;dbname=kakunabi'; $user = 'hoge'; $password = '1234'; try{ $dbh = new PDO($dsn,$user,$password); $sql = 'select * from genre'; foreach ($dbh->query($sql) as $row) { print($row['g_id'].','); ?></td> <td><?php print($row['g_name'].',');?></td> <td><?php print($row['g_title'].',');?></td> <td><?php print('<br />');?></td> </tr>" <?php } }catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } $dbh = null; ?> </center> </body> </html>
登録処理部分です
<?php // エラー出力しない場合 ini_set('display_errors', 0); ?> <?php require_once('class_db.php'); ////POSTで変数'id'が渡されていた場合の処理 //DBへPOSTで渡されたデータの挿入 if(isset($_POST['g_id'])){ //POSTのデータを変数に代入+型チェック $g_id = (int)filter_input(INPUT_POST, 'g_id'); $g_name= (string)filter_input(INPUT_POST, 'g_name'); $g_title= (string)filter_input(INPUT_POST, 'g_title'); $g_text= (string)filter_input(INPUT_POST, 'g_text'); } ////DB接続 $pdo= new connect();session_start(); if (isset($_POST['insert'])) { $_SESSION['g_id'] = $_POST["g_id"]; } ////DB接続 $pdo= new connect(); // INSERT文を実行 $sql= "INSERT INTO genre VALUES (?,?,?,?)"; $stmt= $pdo->vind_query($sql, $g_id, $g_name, $g_title, $g_text); echo "$g_id<br>$g_name<br>$g_title<br>$g_text<br>登録しました。<br>"; echo '<button type="button" onclick="history.back()">戻る</button>'; ?>