У нас есть структура, подобная тому, как вы видите ниже снимок экрана:
И наша структура базы данных выглядит так:
Здесь в таблице базы данных «ПИД» – это идентификатор родителя, в котором 0 = родительский идентификатор. И rest PID является родительским идентификатором того же идентификатора.
Теперь мы пытаемся получить всю подкатегорию «Бренд» или «Обувь», чтобы она отображала все (под-подкатегорию и под-подкатегорию) детали подкатегории под этим деревом. Можно ли это сделать через PHP? любой цикл или каким-либо образом?
Спасибо!
попробуй это
function fetchCategoryTreeList($parent = 0, $user_tree_array = '') { global $con; if (!is_array($user_tree_array)) $user_tree_array = array(); $sql = "SELECT * FROM `location` WHERE 1 AND `parent_id` = $parent ORDER BY id ASC"; $result=$con->query($sql); if (mysqli_num_rows($result) > 0) { $user_tree_array[] = "<ul>"; while ($row =$result->fetch_object()) { $user_tree_array[] = "<li>". $row->name."</li>"; $user_tree_array = fetchCategoryTreeList($row->id, $user_tree_array); } $user_tree_array[] = "</ul><br/>"; } return $user_tree_array; }
функция вызова здесь
$res = fetchCategoryTreeList(); foreach ($res as $r) { echo $r; }
Попробуйте вот так:
<?php //connect to mysql and select db $conn = mysqli_connect('localhost', 'rootuser', 'rootpwd','dbname'); if( !empty($conn->connect_errno)) die("Error " . mysqli_error($conn)); //call the recursive function to print category listing category_tree(0); //Recursive php function function category_tree($catid){ global $conn; $sql = "select * from category where pid ='".$catid."'"; $result = $conn->query($sql); while($row = mysqli_fetch_object($result)): $i = 0; if ($i == 0) echo '<ul>'; echo '<li>' . $row->category; category_tree($row->id); echo '</li>'; $i++; if ($i > 0) echo '</ul>'; endwhile; } //close the connection mysqli_close($conn); ?>
Надеюсь, это поможет.
Я использовал эту функцию в своем проекте, это рекурсивная функция.
/ **** ПОЛУЧИТЬ ВСЕ КАТЕГОРИИ ФУНКЦИЯ ******* /
function categoryChild($id, $spacing = '') { $s = "SELECT * FROM category WHERE parent_cat_id = $id "; $r = mysql_query($s); $children = array(); if(mysql_num_rows($r) > 0) { while($row = mysql_fetch_array($r)) { $children[$row['category_id']]['category_name'] = $spacing.$row['category_name']; $children[$row['category_id']]['id'] = $row['category_id']; $children[$row['category_id']]['child'] = categoryChild($row['category_id'], $spacing . ' '); } } return $children; } > /************ GET ALL CATEGORIES FUNCTION****************/ $allcategory = categoryChild(0); print_r($allcategory);