※ ChatGPTを利用し、要約された質問です(原文:複数テーブルの情報を一つのページで使いたいのですが)
複数テーブルの情報を一つのページで使用する際の注意点と解決方法
このQ&Aのポイント
mysqlとphpでサイトを構築している際、複数テーブルの情報を一つのページで使用したい場合、注意点や解決方法をまとめました。
具体的なテーブルの構成と表示したい内容について説明し、phpでの記述方法に関しても解説しています。
テーブルの連結方法やループ処理の追加、データの取得方法など、問題の解決に役立つ情報を提供しています。
複数テーブルの情報を一つのページで使いたいのですが
お世話になります。
mysqlとphpでサイトを構築しています。
複数テーブルの情報を一つのページで使いたいのですが、どうも上手くいきません。
どうかよろしくお願い致します。
環境:Mysql 5.1.22-rc,PHP 5.2.5
データベース:test01
main
--------------------------------------------------------
id name kana
1 太郎 たろう
2 次郎 じろう
3 花子 はなこ
--------------------------------------------------------
sub1 (実際には8カラムあります)
--------------------------------------------------------
id age cat home
1 26 A 東京
2 24 B 千葉
3 31 O 大阪
--------------------------------------------------------
sub2
--------------------------------------------------------
id a_sakuhin title
1 data_1 青空
1 data_2 夕日
1 data_3 流星
3 data_1 町並み
3 data_2 列車
--------------------------------------------------------
sub3
--------------------------------------------------------
id b_sakuhin title
1 data_1 犬
2 data_1 猫
2 data_2 牛
3 data_1 ネズミ
3 data_2 象
--------------------------------------------------------
上記のような構成になっており、
htmlのページ上では下記の様に表示したいと考えています。
--------------------------------------------------------
*id=1 の人間のページ
─────────────────────────
header
─────────────────────────
─────────────────────────
テーブルmainとテーブルsub1の内容
─────────────────────────
─────────────────────────
テーブルsub2の内容をデータがあるだけ繰り返す
─────────────────────────
─────────────────────────
テーブルsub3の内容をデータがあるだけ繰り返す
─────────────────────────
─────────────────────────
footer
─────────────────────────
--------------------------------------------------------
このようにしたいのですが、上手くいきません。
現在は
<?php
//データベースへ接続
$dbname = "test01";
$user = "hoge";
$passwd = "**********";
$host = "hogehoge";
$db = mysql_connect("$host", "$user", "$passwd");
if (!$db){
echo "データベースの接続でエラーが発生しました<br />\n";
exit;
}
mysql_select_db($dbname);
$sel = mysql_query("SELECT * FROM main LEFT JOIN sub1 ON main.id = sub1.id WHERE main.id = '1'");
if (!$sel) {
echo "検索でエラーが発生しました<br />\n";
exit;
}
?>
<?php
while ($row = mysql_fetch_array($sel, MYSQL_BOTH)) {
?>
<dl>
<dt>名前</dt>
<dd><? echo $row["name"]; ?></dd>
</dl>
<dl>
<dt>ふりがな</dt>
<dd><? echo $row["kana"]; ?></dd>
</dl>
<dl>
<dt>年齢</dt>
<dd><? echo $row["age"]; ?></dd>
</dl>
<dl>
<dt>出身</dt>
<dd><? echo $row["home"]; ?></dd>
</dl>
<?php
}
mysql_free_result ($sel);
mysql_close($db);
?>
のようにしています。
この下にさらにsub2とsub3の内容を繰り返しで入れたいです。
while文を追加してみたり、for文を入れてみたり試しましたが何度やってもエラーがでてしまいます。
テーブルを4つ連結させるのがいいのか、別々に呼び出すのがいいのか…
phpの記述がおかしいのか。そもそも、テーブルの設計から間違っているのか。
何が悪いのか、またphpの記述方法などご教授頂ければと思います。
すみませんが、よろしくお願いします。
お礼
遅くなり申し訳ございません。 その後アドバイス通り、結合せずそれぞれのクエリを受け取る事により解決しました。本当にありがとうございました。