使用类别在PHP中显示MySQL数据

时间:2014-01-23 07:36:28

标签: php mysql

我有一个看起来像这样的表:

+----------------------------------+
|    Category   |    Sub-Category  |
+---------------+------------------+
|  Cell Phones  |   Smart Phones   |
|  Cell Phones  |   Tablet Phones  |
|  Cell Phones  |    Other Phones  |
|   Computers   |      Desktops    |
|   Computers   |      Laptops     |
|   Computers   |    Chromebooks   |
+---------------+------------------+ etc..

我想使用PHP在我的网站上显示这些数据,如下所示:

desired layout

如何使用PHP显示上述信息(一个类别,所有子类别)?另外,我如何将类别/子类别列表均分为3列?

我找到了教程,但似乎没有人使用PHP,这是我遇到麻烦的部分。

谢谢你们的时间。

4 个答案:

答案 0 :(得分:1)

此类报告称为交叉标签报告。在sql中有pivot功能,可根据需要提供数据。但是在mysql中没有旋转,所以你需要使用自己的逻辑。
为了达到这个目的,你需要有两个循环,如下所述,这是一个关于如何做到这一点的简短想法。

Select distinct maincategory from table
Loop for main category{
  select subcategory from table where maincategory='category'{
   print all sub categories
  }
}

答案 1 :(得分:0)

$data = query_data();
$cat = array();
foreach($data as $item)
{
    $cat[$item['category']][] = $item['sub_category'];
}

现在,您需要$cat

答案 2 :(得分:0)

你可以为它们提供类别ID,例如,手机的id为1,那么其中的所有项目也将具有1的子类别。同样,如果打印机的id为2,则其下的所有子类别_id将具有id为2。

现在,您可以运行简单查询来检索特定于字段的类别。像:

SELECT * from table_name WHERE subcategory_id = 1;

这将给出手机内的所有类别......类似地,你可以为所有领域做...

答案 3 :(得分:0)

这应该有效 -

$categories = Array();
//Assuming database handle is $db
$r1 = $db->query("select distinct(Category) from table_name") or die("err in q1");
while($cat_arr = $r1->fetch_assoc()){
    $cat = $cat_arr['Category'];
    $sub_cats = Array();
    $db->query("select Sub-Category from table_name where Category = $cat") or die("err in q2");
    while($sub_arr = $r2->fetch_assoc()){
        array_push($sub_cats,$sub_arr['Sub-Category']);
    }
    $categories[$cat] = $sub_cats;
}

$ categories数组现在具有表的详细信息,可以按原样使用。