【问题标题】:Grouping values from my_ MySQL to be shown in separate <div> on the basis of certain criteria根据某些标准将 my_ MySQL 中的值分组显示在单独的 <div> 中
【发布时间】:2012-11-19 07:59:16
【问题描述】:

我正在开发一个使用 MySQL 作为数据库的 php 项目。这是表结构

product_id (PK)
shop_id (FK)
product_name
product_desc

Product_id 是主键,shop_id 是外键(显示产品属于哪个店铺)。现在我想选择这些产品并将它们显示在&lt;div&gt; 中。对于每个店铺产品,我想显示不同的&lt;div&gt;。例如,如果有三个产品说 p1、p2 和 p3,并且它们具有相同的 shop_id(比如)1,我希望它们显示在单独的 &lt;div&gt; 中。每个shop_id都会有一个单独的&lt;div&gt;,属于那个shop_id的所有产品都会显示在那个&lt;div&gt;中。如何使用 My_SQL 查询或使用 PHP 来做到这一点。我使用了这样一个简单的 SELECT 查询,但是我找不到为单独的商店启动不同的&lt;div&gt; 的方法。

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

它只是将所有产品放在一次潜水中,我想要单独的商店(包含该商店的所有产品)的单独 div。感谢阅读。。

【问题讨论】:

    标签: php html mysql


    【解决方案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>";
    
        }
    

    【讨论】:

    • 感谢 Elijan,这个概念看起来很像 inception 电影,“array of arrays for array,我们必须更深入。” :-) 但它解决了我的问题......
    • @WaqarAkbar 。哈哈,是啊。我已经更新了不同且更优雅的解决方案的评论,您可以通过商店 id 查询商店产品,因为一般不做选择 *
    • 所以我应该使用每个列名而不是*...使用select *..有什么问题吗???
    • @WaqarAkbar 理想情况下,是的,如果你只使用那个库。根据操作,该列应在数据库中建立索引以便更快地进行查询。所以,例如$q = mysql_query("SELECT id FROM shops");,然后是mysql_query("SELECT product_name FROM product_table WHERE shop_id=$shops['id']");,其中 stores.id 和 products.shop_id 都被编入索引
    • 这很有意义,将尝试遵循它...感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    相关资源
    最近更新 更多