今、会員制チャットサイトを作っていて、g_id(ID)を主キーとして、
ID(g_id),タイトル(g_title),本文(g_text)を入力して
送信ボタンを押すとDBにID(g_id),会員登録された時のニックネーム(g_name),タイトル(g_title),本文(g_text)の順に挿入されて
その入力内容が画面に出るという内容のプログラムを作っているのですが、
入力画面では、ニックネームはアカウントごとに違うニックネームは取れています。
しかし、入力し終えて送信ボタンを押して、反映されている場所を見ると
ニックネームがDBの一番下のニックネームしか取れていません。
データベース確認したら
g_nameはデータが有りません。
これをアカウント毎にニックネームを反映させて欲しいのですが、どうすれば良いでしょうか?
ちなみに
chat.phpが入力画面で、
chat2.phpがDBに書き込む機能です。
構造は
g_idは主キーがありint(8)
g_nameはvarchar(30)
g_titleはvarchar(20)
g_textはvarchar(100)
(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> <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> (ニックネーム:<?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']); } ?> ) <p>タイトル:<input type = "text" name = "g_title" size = "10" maxlength = "220"></p> <p>本文:<input type = "text" name = "g_text" size = "40" maxlength = "40"></p> </div> <p><input type = "submit" name="insert" value="送信"> <input type = "reset" value="リセット"></p> <a href="head.php">戻る</a></th> <table border=1> </table> </form> <br> <?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'].','); print($aaa['name'].','); print($row['g_title'].','); print($row['g_text'].''); print('<br />'); } }catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } $dbh = null; ?> </center> </body> </html>
(chat2.php)
<?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(); // UPDATE文を実行 $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>'; ?>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/17 02:51