使用PHP从MySQL中选择类别id和所有子类别id
我的数据库结构和数据如下:使用PHP从MySQL中选择类别id和所有子类别id,php,mysql,categories,recursive-query,Php,Mysql,Categories,Recursive Query,我的数据库结构和数据如下: id | sub | title ------+---------+---------- 1 | 0 | Cat 1 2 | 0 | Cat 2 3 | 1 | Cat1-1 4 | 2 | Cat2-1 5 | 2 | Cat2-2 6 | 5 | Cat2-2-1 现在,当我有ID 4时,我想选择所有子类别ID,所以我应该选择
id | sub | title
------+---------+----------
1 | 0 | Cat 1
2 | 0 | Cat 2
3 | 1 | Cat1-1
4 | 2 | Cat2-1
5 | 2 | Cat2-2
6 | 5 | Cat2-2-1
现在,当我有ID 4时,我想选择所有子类别ID,所以我应该选择4,5,6。
我知道我应该使用递归函数,但我不知道该怎么做:-(说你是否在URL中传递id 这样你就可以拿到你想要的身份证了
$category_id = $_GET['id']; //Say 4 here,
//Also don''t forget to validate that ID and sannitize it before you use it in your query
so now you can fetch the sub categories like
$fetch_sub_cat = mysqli_query($connection, "SELECT * FROM table_name WHERE id = $category_id");
while($throw_results = mysqli_fetch_array($fetch_sub_cat)) {
echo $throw_results['id'];
}
如果要循环类别ID,而不需要嵌套此循环以及查询以获取子类别,请提供一些信息,您可以更改列名称并使用
$data=array(
array('Menu_ID'=>1, 'Menu_Name'=>'Catalog', 'Menu_Link'=>'#', 'Menu_ParentID'=>0),
array('Menu_ID'=>2, 'Menu_Name'=>'Reports', 'Menu_Link'=>'#', 'Menu_ParentID'=>0),
array('Menu_ID'=>3, 'Menu_Name'=>'Products','Menu_Link'=> '#','Menu_ParentID'=> 1),
array('Menu_ID'=>4, 'Menu_Name'=>'Sales','Menu_Link'=> '#', 'Menu_ParentID'=>2),
array('Menu_ID'=>5, 'Menu_Name'=>'Customers','Menu_Link'=> '#', 'Menu_ParentID'=>2),
array('Menu_ID'=>6, 'Menu_Name'=>'Tvs','Menu_Link'=> '#','Menu_ParentID'=> 3));
print_r(loop_menu($data));
// Menu_ID Menu_Name Menu_Link Menu_ParentID
function loop_menu($rows,$parent = 0){
$arr=array();
$i=0;
foreach ($rows as $row)
{
if (array_key_exists('Menu_ParentID',$row) && $row['Menu_ParentID'] == $parent){
if(array_key_exists($i,$arr)){
$arr[$i]=array();
}
$arr[$i]['data']=$row;
$arr[$i]['child']= loop_menu($rows,$row['Menu_ID']);
$i++;
}
}
return $arr;
}
然后
然后将类似数组的代码编写到ul
另一种数组样式
$arr[$i]['data'] = $row;
$arr[$i]['child']= loop_menu($rows,$row['Menu_ID']);
改为
$row['child'] = loop_menu($rows,$row['Menu_ID']);
$arr[$i] = $row;
@DipeshParmar谢谢,但这对甲烷不起作用,但递归函数对我很重要,我想知道如何使用递归函数来实现这一点problem@MajAfy为什么需要递归函数?谢谢,正如我说的,我需要从数据库而不是数组中获取数据
$row['child'] = loop_menu($rows,$row['Menu_ID']);
$arr[$i] = $row;