我有一个看起来像这样的表:
+----------------------------------+
| Category | Sub-Category |
+---------------+------------------+
| Cell Phones | Smart Phones |
| Cell Phones | Tablet Phones |
| Cell Phones | Other Phones |
| Computers | Desktops |
| Computers | Laptops |
| Computers | Chromebooks |
+---------------+------------------+ etc..
我想使用PHP在我的网站上显示这些数据,如下所示:
如何使用PHP显示上述信息(一个类别,所有子类别)?另外,我如何将类别/子类别列表均分为3列?
我找到了教程,但似乎没有人使用PHP,这是我遇到麻烦的部分。
谢谢你们的时间。
答案 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数组现在具有表的详细信息,可以按原样使用。