在单个页面中列出每个类别标题下的产品

时间:2012-11-15 09:29:49

标签: php mysql arrays select categories

我有两张桌子 第一个是类别,第二个是产品。 类别表包含cat_id, cat_name, Cat_desc. 产品表包含product_id, product_name, Product_desc and cat_id

我希望将所有类别显示为标题,并在每个类别标题下仅列出4个相关产品。

例如:

Category1
 Product 1, Product 2, product 3


Category 2
  Product 4, product 5

我该如何编写脚本呢?我是新手请帮助

4 个答案:

答案 0 :(得分:2)

好的我觉得你的问题还可以。试试这个......

$sql = "SELECT cat_id, cat_name FROM  categories ";
$query = mysql_query($sql);
while($result = mysql_fetch_array($query)){
   echo $result['cat_name'];
   $sql1 = "SELECT * FROM products WHERE cat_id=".$result['cat_id'];
   $query1 = mysql_query($sql1);
   while($row  = mysql_fetch_array($query1)){
      echo $row['product_name'];
   }
}

并参考此http://php.net/manual/en/book.mysql.php

答案 1 :(得分:0)

试试这个::

Select * from 

categories c left join products p on (p.catId = c.catId)

order by c.catId

答案 2 :(得分:0)

您可以参考本教程 您需要为此执行递归功能 我称之为 类别树

http://codeassembly.com/How-to-display-inifinit-depth-expandable-categories-using-php-and-javascript/

答案 3 :(得分:0)

在Nytram的帖子的帮助下,我只是改变了代码。所以这个答案是对Nytram的99%欠款。

    $sql = "SELECT cat_id, cat_name FROM  categories ";
$query = mysql_query($sql);
while($result = mysql_fetch_array($query)){
   echo $result['cat_name'];

改变的行是:

$sql1 = "SELECT * FROM products WHERE cat_id='".$result['cat_id']."' LIMIT 0,10";

然后使用相同的代码

 $query1 = mysql_query($sql1);
       while($row  = mysql_fetch_array($query1)){
          echo $row['product_name'];
       }
    }