- ベストアンサー
データベースから取り出した2種類のレコードをforeachの処理対象にしたい
http://oshiete1.goo.ne.jp/qa2731520.html の続きです。 No.2さんのご回答の通りにすると、 番号 1 2 3 4 5 名前 阿藤 江藤 加藤 木藤 工藤 年齢 20 23 21 24 23 のような、横に長いテーブルを組むことができます。 (ここで、名前と年齢はDBから取り出したレコードになります) ここで、名前とカッコ付き年齢を並べて同じセル(<td></td>の間)に 収めるにはどうしたらいいですか? 番号 1 2 3 4 5 名前(年齢)阿藤(20) 江藤(23) 加藤(21) 木藤(24) 工藤(23) 「// 番号、名前、年齢の配列を作る」という処理の箇所で 二次元配列というのにしなければならないのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
手っ取り早く、 $name[$i] = $col["name"].'('.$col["age"].')'; ――で済ますとか。 $name_with_age[$i]とか別の配列を用意する手も。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
こないだのを流用するとこんな感じで。 <?PHP $con = mysql_connect(SERVER, USER, PASS); mysql_select_db(DB, $con); $sql = "select * from mytable"; $res=mysql_query($sql); $count=0; while($rows = mysql_fetch_array($res,MYSQL_ASSOC)){ $count++; $array['count'].="<td>{$count}</td>"; $array['name_age'] .="<td>{$rows['name']}({$rows['age']})</td>"; } $table=<<<eof <table border=1> <tr> <td>番号</td> {$array['count']} </tr> <tr> <td>名前(年齢)</td> {$array['name_age']} </tr> </table> eof; print $table; ?>
お礼
yambejpさん、またまたお助けいただきありがとうございました。 ↓のNo2さんと同じようなアプローチですね。 大変参考になりました。ありがとうございました。
- ham_kamo
- ベストアンサー率55% (659/1197)
前の質問のNo.2さんの回答を手直しするのであれば、 以下でできませでしょうか? <?PHP $con = mysql_connect(SERVER, USER, PASS); mysql_select_db(DB, $con); $sql = "select * from mytable"; $res=mysql_query($sql); $count=0; while($rows = mysql_fetch_array($res,MYSQL_ASSOC)){ $count++; $array['count'].="<td>{$count}</td>"; $array['name_and_age'] .="<td>{$rows['name']}({$rows['age']})</td>"; } $array['name'].="<td> $table=<<<eof <table border=1> <tr> <td>番号</td> {$array['count']} </tr> <tr> <td>名前(年齢)</td> {$array['name_and_age']} </tr> </table> eof; print $table; ?>
お礼
ham_kamoさん、ありがとうございました。 答えだけ聞いてしまうと、あ、そっか、それだけ なのかと思いますが、なかなかそういう発想が出てこなくて 苦労してます・・・ありがとうございました。
お礼
osamuyさん、早速ありがとうございました。 実現できる方法をお尋ねした次第なので、 手っ取り早いも何も、ドンピシャ回答です。 ありがとうございました!