質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1555閲覧

PHPでチャットの名前部分に出したい

maqtaro

総合スコア14

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/01/17 01:18

編集2018/01/17 01:22

今、会員制チャットサイトを作っていて、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>'; ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

g_nameがPOSTされていないです。
$aaa['name']が表示されているニックネームだと思いますが、それをPOSTする必要があります。


print($aaa['name']);
としている行の下に
print("<input type=\"hidden\" name=\"g_name\" value=\"".$aaa['name']."\">");
この行を追加してみてください。

chat.phpをブラウザで表示させ、ソースコード(HTML)を確認した時に
<input type="hidden" name="g_name" value="ニックネーム">
となっていれば正しく動作すると思います。

投稿2018/01/17 02:29

編集2018/01/17 03:29
sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maqtaro

2018/01/17 02:51

すみません。ちょっと分からないので仕方を教えて欲しいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問