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

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

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

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

Q&A

1回答

260閲覧

テーブルがうまく作れない

maqtaro

総合スコア14

PHP

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

0グッド

0クリップ

投稿2018/01/19 01:06

編集2022/01/12 10:55

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

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

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

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

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

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

m.ts10806

2018/01/19 01:13

登録処理部分もご提示ください。
arasi

2018/01/19 01:58

$pdo->vind_queryというのがありますが vind_queryは自身で作ったものですか? できればこのvind_queryの部分も見せてください。 また実際のデータは正しく登録されていますか?
guest

回答1

0

カラムの表示がおかしいのであればまず最初にやることは
「select *」をやめて、具体的なカラム名を列記することです

投稿2018/01/19 01:17

yambejp

総合スコア114572

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問