2013-04-23 58 views
1

我的数据库结构和数据的所有子类ID与PHP是这样的:选择类别ID和从MySQL

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时,我有ID为4,所以我应该选择4, 5,6。 我知道我应该使用递归函数,但我不知道我该怎么办呢:-(

+0

http://dipesharea.wordpress.com/2011/06/03/n-level-category/ – 2013-04-23 07:51:10

+0

@DipeshParmar谢谢,但这不是我的工作 – MajAfy 2013-04-23 08:14:48

回答

0

说,如果你是路过的ID在你的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的比你需要嵌套这个循环,以及查询获取子类别

+0

谢谢但递归函数对我很重要,我想要知道如何使用这个问题的递归函数 – MajAfy 2013-04-23 08:13:45

+0

@MajAfy为什么你需要一个递归函数? – 2013-04-23 08:15:05

-1

给你一些信息,您可以更改colume名称,并使用

$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; 
} 

然后

Array 
(
    [0] => Array 
     (
      [data] => Array 
       (
        [Menu_ID] => 1 
        [Menu_Name] => Catalog 
        [Menu_Link] => # 
        [Menu_ParentID] => 0 
       ) 

      [child] => Array 
       (
        [0] => Array 
         (
          [data] => Array 
           (
            [Menu_ID] => 3 
            [Menu_Name] => Products 
            [Menu_Link] => # 
            [Menu_ParentID] => 1 
           ) 

          [child] => Array 
           (
            [0] => Array 
             (
              [data] => Array 
               (
                [Menu_ID] => 6 
                [Menu_Name] => Tvs 
                [Menu_Link] => # 
                [Menu_ParentID] => 3 
               ) 

              [child] => Array 
               (
               ) 

             ) 

           ) 

         ) 

       ) 

     ) 

    [1] => Array 
     (
      [data] => Array 
       (
        [Menu_ID] => 2 
        [Menu_Name] => Reports 
        [Menu_Link] => # 
        [Menu_ParentID] => 0 
       ) 

      [child] => Array 
       (
        [0] => Array 
         (
          [data] => Array 
           (
            [Menu_ID] => 4 
            [Menu_Name] => Sales 
            [Menu_Link] => # 
            [Menu_ParentID] => 2 
           ) 

          [child] => Array 
           (
           ) 

         ) 

        [1] => Array 
         (
          [data] => Array 
           (
            [Menu_ID] => 5 
            [Menu_Name] => Customers 
            [Menu_Link] => # 
            [Menu_ParentID] => 2 
           ) 

          [child] => Array 
           (
           ) 

         ) 

       ) 

     ) 

) 

然后代码类似阵列UL

http://sandbox.onlinephpfunctions.com/code/2b3ab04f959413ebf75b65034edd60da61ed0020

另一个数组风格

$arr[$i]['data'] = $row; 
$arr[$i]['child']= loop_menu($rows,$row['Menu_ID']); 

变化

$row['child'] = loop_menu($rows,$row['Menu_ID']); 
$arr[$i] = $row; 
+0

谢谢,正如我所说,我需要从数据库中取数据而不是从数组 – MajAfy 2013-04-23 12:21:40