2016-06-07 6 views
0

Невозможно получить категории и подкатегории в php mysql.Показать категории и подкатегории в php mysql

Здесь я получаю все категории (кошки и subcats):

function get_categories() { 
    $conn = db_connect(); 
    $query = "select * from categories"; 
    $result = $conn->query($query); 
    if(!$result) { 
     return false; 
    }else { 
     $result = db_result_to_array($result); 
     return $result; 
    } 
} 

И вот я получаю subcats:

function get_child_cats($parent_id) { 
    $conn = db_connect(); 

    $query = "select * from categories where parent_id = '".$parent_id."'"; 

    $result = $conn->query($query); 

    if(!$result) { 
     return false; 
    }else { 
     $result = db_result_to_array($result); 
     return $result; 
    } 

} 

db_result_to_array() функция находится здесь:

function db_result_to_array($result) { 
    $res_array = array(); 
    for($count = 0; $row = $result->fetch_assoc(); $count++) { 
     $res_array[$count] = $row; 
    } 
    return $res_array; 
} 

DB состоит от cat_id, cat_name, parent_id

Здесь я пытаюсь показать кошка и subcats:

if(is_array($categories)) { 
    echo "<ul>"; 
    foreach($categories as $row) { 

     if(!$row['parent_id']) { 
      $childs = get_child_cats($parent_id); 
      echo "<li>".$row['cat_name']; 
      if($row['parent_id']) { 
       echo "<ul>"; 
       foreach($childs as $row) { 
        echo "<li>".$row['cat_name']."</li>"; 
       } 
       echo "</ul>"; 
      } 
      echo "</li>"; 
     } 

    } 
    echo "</ul>"; 
} 

Однако, я получаю только кошка без subcats.

+1

'if (! $ Row ['parent_id']) {' и три строки ниже, без изменения 'row':' if ($ row ['parent_id']) '- это не может быть правдой. –

ответ

0

Вы написали неправильную логику, считаете, что ваше первое условие - if(!$row['parent_id']) {, а затем внутри вы добавляете условие if($row['parent_id']) {. так что если «ложь» условие удовлетворения и курсор переходит в «если», то как можно было бы выполнить логику для «истинного» для того же параметра и состояния

Я попытался ниже, чтобы сделать вашу логику правильно:

foreach($categories as $row) { 
    if(!$row['parent_id']) { 
     echo "<li>".$row['cat_name']; 
     $childs = get_child_cats($parent_id); 

    } 
    else { 
     echo "<ul>"; 
     foreach($childs as $row) { 
      echo "<li>".$row['cat_name']."</li>"; 
     } 
     echo "</ul>"; 
    } 
    echo "</li>"; 
} 

Надеюсь, он сработает для вас!

+0

Большое спасибо Рупал. Оно работает) –

Смежные вопросы