1

私はデータベースとしてMySQLを使用してphpプロジェクトに取り組んでいます。これがテーブル構造です

product_id (PK)
shop_id (FK)
product_name
product_desc

Product_idは主キーで、shop_idは外部キーです(製品がどのショップに属しているかを示します)。次に、これらの製品を選択して、に表示します<div>。ショップ商品ごとに異なる表示をしたいと思います<div>。たとえば、p1、p2、p3という3つの商品があり、それらが同じshop_id(say)1を持っている場合、それらを別々に表示したいと思います<div>。shop_idごとに個別<div>になり、そのshop_idに属するすべての商品がその中に表示され<div>ます。My_SQLクエリまたはPHPを使用してこれを行うにはどうすればよいですか。私はこのような単純なSELECTクエリを使用しましたが、これ<div>では別のショップで別のクエリを開始する方法を見つけることができませんでした。

$q = mysql_query("SELECT * FROM table");
echo "<div>";
while($product = mysql_fetch_assoc($q)){
echo $product['product_name']."<br/>";
}
echo "</div>";

1回のダイビングですべての商品を投入するだけです。別のショップ(そのショップのすべての商品が含まれています)に別のdivが必要です。読んでくれてありがとう..

4

1 に答える 1

1

最も簡単な方法は、配列内のIDで製品をグループ化し、それらをループすることです。

$all_products = array();
while($product = mysql_fetch_assoc($q)){
    $all_products[$product['shop_id']][] = $product;
}

foreach($all_products as $shop_id => $product_array){
echo "<div id='shop_".$shop_id."'>";
   foreach($product_array as $product){
      echo $product['product_name']."<br/>";
    }
echo "</div>";
}

または、各ショップIDから商品データを呼び出します

$q = mysql_query("SELECT * FROM shops");

while($shops = mysql_fetch_assoc($q)){
       $product_q = mysql_query("SELECT * FROM product_table WHERE shop_id=$shops['id']");
       echo "<div>";
       while($product = mysql_fetch_assoc($product_q)){
           echo $product['product_name']."<br/>";
           }
       echo "</div>";

    }
于 2012-12-01T04:42:04.387 に答える