【发布时间】:2015-01-04 00:11:51
【问题描述】:
我正在尝试构建一个菜单,其中包含存储在数据库中三个单独的表中的类别、子类别和三级类别,如下所示:
TABLE A
------------------------
| ID | name |
| 1 | Category 1 |
| 2 | Category 2 |
------------------------
TABLE B
------------------------------------
| ID | Parent_ID | name_b |
| 1 | 1 | Subcategory 1 |
| 2 | 1 | Subcategory 2 |
| 3 | 2 | Subcategory 3 |
------------------------------------
TABLE C
--------------------------------------
| ID | Parent_ID | name_c |
| 1 | 1 | Tertiarycategory 1 |
| 2 | 2 | Tertiarycategory 2 |
| 3 | 2 | Tertiarycategory 3 |
| 4 | 3 | Tertiarycategory 4 |
--------------------------------------
这些应该在一个看起来像这样的无序列表中返回
- 类别 1
- 子类别 1
- 第三类 1
- 子类别 2
- 第三类 2
- 第三类 3
- 子类别 1
- 类别 2
- 子类别 3
- 第三类 4
- 子类别 3
我已经在谷歌上搜索了几天,现在尝试不同的东西,但似乎无法让它工作,所以如果有人能帮我破解它,我将不胜感激:)
尝试这样做以获得第一级和第二级(没有列表,只是正常的回声,而我得到了正确的查询)但它根本不起作用......
$query_select = "SELECT * FROM table_a";
$result_select = mysqli_query($link, $query_select) or die(mysql_error());
$rows = array();
while($menurow = mysqli_fetch_array($result_select))
$menurows[] = $menurow;
foreach($menurows as $menurow){
$ename = stripslashes($menurow['name']);
$eid = $menurow['id'];
echo $ename . '<br/>';
$query_select2 = "SELECT * FROM table_b WHERE parent_id = '$eid'";
$result_select2 = mysqli_query($link, $query_select2) or die(mysql_error());
$rows2 = array();
while($menurow2 = mysqli_fetch_array($result_select2))
$menurows2[] = $menurow2;
foreach($menurows2 as $menurow2){
$ename2 = stripslashes($menurow2['name_b']);
$eid2 = $menurow2['id'];
echo $ename2 . '<br/>';
}
}
【问题讨论】:
-
你尝试过什么吗?
-
我会加入数据库以返回单个结果集(但按顺序),然后在一个专注于类别 ID/名称更改的循环中将其放入表中。
-
我试图找出 JOIN 但根本没有得到任何结果,我尝试了多个查询但无法弄清楚。事情是……我主要是一名设计师,我的 PHP/MySQL 技能充其量是有限的,而且生疏。如果有人想写下必要的代码以使其正常工作,我会很长时间(并且通过研究所述代码能够理解如何为将来的需要执行此操作)
-
您可以进行查询以获取第一级,并为它们中的每一个回显类别名称并查询第二级,对于这些第二级中的每一个,执行相同的操作:回显子类别并查询第三级。最后,对于每个第三级,呼应第三级。不是最优化的,但很简单。
标签: php html mysql web html-lists