「みんな教えて! 選手権!!」開催のお知らせ

現在PHP+MySQLにて検索アプリを作成中です。
そこで、検索結果一覧から各アイテムの先頭フィールドに「checkbox」を設置して、
ユーザーにアイテムを複数選択させ、別画面にてアイテムの詳細を表示して比較するというプログラムを考えています。

実は、先日も「checkbox」の件でこちらにお世話になったのですが、。
素晴らしい回答者様に出会い、チェック後のアイテム表示を実現させることができました。

っで、今回実現させたいのは、フィールド(各項目)を横に設定するのではなく、
縦に設定したいのです。チェックしたアイテムを比較するために横に表示されるようにしたいのです。自分なりに考えて試してみたのですが、やはり解決に至りませんでした。


実現したいことは、

ECナビ
http://kakaku.ecnavi.jp/item_compare/?check=2012 …

このような感じです。

スキル不足でお恥ずかしいのですが、
ご教授、何卒宜しくお願いいたします。

A 回答 (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;

?>
    • good
    • 0
この回答へのお礼

yambejp様、どうもです。
おかげさまで表示することができました。
有難うございました。

ただ、ソースを理解するところまではいっていない、スキル不足の自分がもどかしいのですが...(汗っ)

この度は最後までご教授いただきまして、本当に有難うございました。

お礼日時:2006/06/13 18:22

たとえばこんな感じでわかります?



<?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>";

?>
    • good
    • 0
この回答へのお礼

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";

}
}

?>

大変恐縮ですが上記をどのように変更すれば、アイテムを横に並べることが出来るのでしょうか?宜しくお願いいたします。

お礼日時:2006/06/13 15:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報