1列ごとに、その列に紐付く子テーブルの内容をwhileループで表示したくいろいろ試した。
親名前 子情報
————————–
A あか
あお
————————–
B あお
き
くろ
————————–
・
・
・
上記のイメージなのだけど、
そもそも2重のループも初めてで試行錯誤しながらなんとか達成。
(そもそも2重ループが最適なのかは謎)
~~~~~~~~~~~~~~~~~~
$sql = “SELECT 名前 FROM 親テーブル”;
echo”<table>”;
$res = mysql_query( $sql, $・・ )
WHILE( $row = mysql_fetch_assoc($res) )
{
extract($row);
echo”<tr>”;
echo”<td>” . $row[“親名前”] . “</td>”;
echo”<td><table>”;
$sql2 = “SELECT 子情報 FROM 子テーブル WHERE 子テーブルの中の親名前=’$親名前‘”;
$res2 = mysql_query( $sql2, $・・ );
WHILE( $row = mysql_fetch_assoc($res2) )
{
echo”<tr>”;
echo”<td>” . $row[“子情報”] . “</a></td>”;
echo”</tr>”;
}
echo”</table></td>”;
echo”</tr>”;
}
echo”</table>”;
~~~~~~~~~~~~~~~~~~
決め手はextract。
mysql_fetch_assocの説明に、
// 注: ループ内で extract($row); を実行すれば、
// $カラム名 で変数として利用できる
ようなことが書いてあり、むむむとひっかかった。
親の列に紐つけたいんだけど
列の内容自体がwhileループされている内容だからどうしようと思ったのだけど、
extractがカラム名を自動で$カラム名と変数に入れてくれるんですね。
子テーブルのsqlクエリ自体も親テーブルのwhile分の中に書いちゃって
(この発想はなかった 汗)
検索条件を親テーブルの出力された名前と子テーブルのもつ名前がイコールのもの
WHERE 子テーブルの中の親名前カラム = ’$親名前’
で紐付ければちゃんとでてきた
—–
コメント