我正在寻找一种从 mysql 数据库中提取数据以创建无限子类别菜单的方法。菜单中有大约 1500 个类别,它们以下列格式存储到数据库表(菜单)中:
category_id , 类别标题 , parent_id
我想做 1 mysql 查询将所有数据放入一个数组中。
$menu_list =array();
$query = mysql_query("SELECT * FROM menu ORDER BY category_id ASC");
if(mysql_num_rows($query) != 0) {
while($row = mysql_fetch_array($query)){
$category_id = $row['category_id'];
$title = $row['category_title'];
$parent_id = $row[parent_id'];
$menu_list[] = array($category_id,$title,$parent_id);
}
}
那是我目前用来将数据转换为数组的代码。
然后我需要遍历数组来建立一个菜单。
然后我将隐藏所有子类别并使用 jquery 扩展(我可以做到这一点没问题)
我遇到的问题是遍历数组并以正确的顺序显示数据。该菜单有无限的子类别,因此它可能需要一个递归函数来检索数据。我已经关注了这里的很多例子,但后来我迷失了如何显示数据..
我现在需要结束:
main item
sub cat
sub cat
sub cat
sub cat
main item
sub cat
main item
main item
sub cat
sub cat
sub cat
sub cat
sub cat
etc...
每个类别都在自己的 div 中,然后我需要能够编辑每个类别(即标题名称和位置,如果需要)然后如果我更改子类别的位置,快速页面刷新将以新顺序重新加载菜单..
最终我想把它变成一个拖放,但这将在以后的日期。
我希望这已经足够解释了..
提前致谢..
所以问题又回来困扰我了......我的ajax调用另一个mysql选择的方法对于CMS部分来说是可以的,因为它只是不时使用。但是现在我们已经到了前端。每次查看页面时,都会使用大量 mysql 请求来拉取菜单的前 3 级。随着类别越来越大,这导致 1600 多个类别被多次提取,即使每天 1000 次访问也会导致每天超过 1000000 个 sql 请求。所以我想我肯定需要将类别拉到一个数组中,然后递归地遍历数组。
我已经查看了上面的解决方案,它们似乎在纸上有效,但在实践中却没有。
如果有人可以尝试给我另一种解决方案,将不胜感激..
只是回顾一下我的数据库:id,category_name,parent_id
我现在正在使用 PDO 和 mysql 并准备语句以增加安全性..
提前致谢..