2017-02-10 9 views
2

下のサブカテゴリを表示しますそれぞれサブカテゴリです。ここ は、スニペットの残りの部分である:PHPコードは、私は、データベースからのカテゴリとSUBCAT情報を取得するカテゴリ

$subcat="Notset"; 
$cat=array(); 
$sub=array(); 
$j=0; 
for ($i=0;$i<$conn->count; $i++) 
{ 
    if($result[$i]['subcat'] != $subcat) 
    { 
     $subcat=$result[$i]['subcat']; 
     $sub[$j]=$subcat; 
     $j++; 
    } 
$cat[$i]=$result[$i]['name']; 
} 

しかし、私は次のようになった結果:ください Snapshot of web page

enter image description here

をしかし、私はノートパソコンのカテゴリの下にデスクトップのカテゴリとMacBookの下でソニーを表示したいです上記の画像の赤いボタンはカテゴリが緑色でサブカテゴリです。

+0

私はあなたを理解することができませんそれは何をしていますか? –

+1

'$ result = $ conn-> get(" category "、null、$ cols);' – jetblack

+0

の行の後に 'var_dump($ result);'の結果を投稿してください。 '$ result [$ result] i] ['subcat'] 'は' Notset'ではありません。あなたは実際にそれが下にある*親をチェックしていません。 –

答えて

0

次のコードを使用することができます(。あなたはあなたの例では$fetched_categories = $resultを設定する必要があります)

function get_subcategories($array, $category_name){ 
    $return = array(); 

    foreach ($array as $key => $category){ 
     if ($category['subcat'] == $category_name){ 
      $category['sub_categories'] = get_subcategories($array, $category['name']);    
      $return[] = $category; 
     } 
    } 

    return $return; 
} 

function print_categories($array, $level = 0){ 
    echo ($level > 0 ? '<ol>' : '<ul>'); 

    foreach ($array as $category){ 
     echo '<li>' . $category['name'] . '</li>'; 
     print_categories($category['sub_categories'], ++$level); 
    } 

    echo ($level > 0 ? '</ol>' : '</ul>'); 
} 

$fetched_categories = array(); 
$fetched_categories[] = ['name' => 'Camera', 'subcat' => '']; 
$fetched_categories[] = ['name' => 'Macbook', 'subcat' => 'Laptops']; 
$fetched_categories[] = ['name' => 'Laptops', 'subcat' => '']; 
$fetched_categories[] = ['name' => 'Desktops', 'subcat' => '']; 
$fetched_categories[] = ['name' => 'Sony', 'subcat' => 'Desktops']; 
$fetched_categories[] = ['name' => 'DSLR', 'subcat' => 'Camera']; 

$categories = get_subcategories($fetched_categories, ''); 

print_categories($categories); 

ここで出力されます:

https://eval.in/734955

0

Iは、以下のPHPコードを使用してこれを達成する:

# categories with a parent id of 0 are parent categories 
$selectparents = $db->prepare(" 
SELECT category_id, category_name 
FROM categories 
WHERE parent_category_id = 0 
ORDER BY category_name 
"); 

$selectparents->execute(); 

while($row = $selectparents->fetch(PDO::FETCH_ASSOC)){ 
     $p_category_id = $row['category_id']; 
     $category_name = $row['category_name']; 

     echo '<b>'.$category_name.'</b><br>'; 

      # get sub categories for this parent 
      $selectchilds = $db->prepare(" 
      SELECT category_id, category_name 
      FROM categories 
      WHERE parent_category_id = ".$p_category_id." 
      ORDER BY category_name 
      "); 
      $selectchilds->execute(); 

      while($row = $selectchilds->fetch(PDO::FETCH_ASSOC)){ 
      $category_id = $row['category_id']; 
      $category_name = $row['category_name']; 

      echo '<b>'.$category_name.'</b><br>'; 

      } 
} 

基本的にすべての親カテゴリがアルファベット順に照会され、0に設定PARENT_IDを有し、その後、それぞれについてサブルーチンが親のwhileループ内で照会され親の下でアルファベット順に表示されます。

関連する問題