- ベストアンサー
フィールド(項目)を縦に設定したいのですが...
- 現在PHP+MySQLにて検索アプリを作成中です。先頭フィールドに「checkbox」を設置して、ユーザーにアイテムを複数選択させ、別画面にてアイテムの詳細を表示して比較するというプログラムを考えています。
- 実現したいのは、チェックしたアイテムを比較するために横に表示されるようにすることです。
- スキル不足でお恥ずかしいのですが、ご教授、何卒宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ざっとかきなおしました。 基本的には一度$rowsに抽出データを受ける。 その後$colsに縦横を入れ替えて配置する。 最後に表示する・・・という流れです。 仮に、テーブル内のフィールド名を以下のとおりと しました。 ID=`id`,飛び先=`url`,写真画像=`image`,商品名=`name`,価格=`price` <?php $link=mysql_connect(ホスト,ユーザー,パスワード); mysql_select_db('table',$link); $id = $_GET['item']; $allid=""; foreach($id as $val){ $allid.=($allid==""?"(":" OR ")."(`id`='$val')"; } $allid.=")"; $sql = "SELECT `id`,`url`,`image`,`name`,`price` FROM `table` where $allid" ; //print $sql; $res=mysql_query($sql,$link); while($row= mysql_fetch_array($res,MYSQL_ASSOC)){ $rows[]=$row; } foreach($rows as $key1=>$val1){ foreach($val1 as $key2=>$val2){ $cols[$key2][$key1]=$val2; } } $body .= <<<eof <TABLE width="100%" border="1" cellspacing="0" cellpadding="3"> eof; $body.="<TR>"; $body.="<TD>写真</TD>"; foreach($cols['image'] as $key=>$val){ $body.="<TD><a href=\"".$cols['url'][$key]."\"><img src=\"".$val."\"></a></TD>\n"; } $body.="</TR>"; $body.="<TR>"; $body.="<TD>商品名</TD>"; foreach($cols['name'] as $key=>$val){ $body.="<TD><a href=\"".$cols['url'][$key]."\">".$val."</a></TD>\n"; } $body.="</TR>"; $body.="<TR>"; $body.="<TD>価格</TD>"; foreach($cols['price'] as $key=>$val){ $body.="<TD>".number_format($val)."円</TD>\n"; } $body.="</TR>"; $body.="</TABLE>"; print $body; ?>
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
たとえばこんな感じでわかります? <?PHP $rows[]=Array(id=>"001",name=>"りんご",color=>"赤",price=>200); $rows[]=Array(id=>"002",name=>"みかん",color=>"橙色",price=>50); $rows[]=Array(id=>"003",name=>"レモン",color=>"黄色",price=>100); print "<table border>"; foreach ($rows[0] as $key=>$val1) { print "<tr>"; foreach ($rows as $val2) { print "<td>".$val2[$key]."</td>"; } print "</tr>"; } print "</table>"; ?>
お礼
yambejp様、ご回答ありがとうございます。 大変申し訳ございません、恥ずかしながら理解することができませんでした。 ご足労ですが、今一度ご教授おねがいいたします。 下記のようにして、チェックしたアイテムを縦に表示することは出来ました。 <?php 中略 $db = "test"; $id = $_GET['item']; //checkboxの変数の値 if (count($_GET['item'] > 0)) { foreach ($_GET['item'] as $id) { $sql = "SELECT * FROM nucleus_plug_znitemfieldex_table_table_item_b28 where id =". $id ; $rs = mysql_db_query($db,$sql); $rows[] = mysql_num_rows($rs); $body .= " <TABLE width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"3\"> <TR> <TD>写真</TD> <TD>商品名</TD> <TD>販売価格</TD> <TR>\n"; while($row = mysql_fetch_array($rs)) { $body .= "<TR>\n"; $body .= "<TD width=\"40\" height=\"40\"><div align=\"center\"><a href=\"" .$row[6]. "\" ><img src=\" " .$row[7]. "\" width=\"30\" height=\"30\" border=\"0\"></a></div></TD>\n"; $body .= "<TD><a href=\"" .$row[6]. "\" >". $row[11]. "</a></TD>\n"; $body .= "<TD>" . number_format($row[4]) . "円</TD>\n"; $body .= "</TR>\n"; } $body .= "</TABLE>\n"; } } ?> 大変恐縮ですが上記をどのように変更すれば、アイテムを横に並べることが出来るのでしょうか?宜しくお願いいたします。
お礼
yambejp様、どうもです。 おかげさまで表示することができました。 有難うございました。 ただ、ソースを理解するところまではいっていない、スキル不足の自分がもどかしいのですが...(汗っ) この度は最後までご教授いただきまして、本当に有難うございました。