Intereting Posts
Функция Laravel принадлежит модели или контроллеру PHP Предупреждение: DOMDocument :: loadHTML (): Атрибут alt переопределен фильтр диапазона времени на конечной точке объявлений (API Facebook) PHP для галереи изображений, вытащенной из facebook, только захватывает первые 25 изображений Редактор шаблона PHP, использующий хранилище файлов, базу данных или и то, и другое? PHP Mink / Zombie – просмотр страницы возвращает код состояния 0? как защитить изображения внутри папки загрузки от просмотра кем-либо ЗА ИСКЛЮЧЕНИЕМ admin Лучший способ предотвращения азартных игр с анонимным голосованием как вызвать функцию после завершения загрузки страницы Отдельное здание от развертывания с помощью Хадсона Вход для Codeigniter с codeigniter-bcrypt Загрузка изображения Codeigniter не работает Использование MySQL, как мне выбрать ранг результата запроса для одной конкретной строки? PHP поиск ключа в массиве и вернуть его значение? Apache Benchmark – параллелизм и количество запросов

Петля из категории в подкатегорию в PHP

У нас есть структура, подобная тому, как вы видите ниже снимок экрана:

введите описание изображения здесь

И наша структура базы данных выглядит так:

введите описание изображения здесь

Здесь в таблице базы данных «ПИД» – это идентификатор родителя, в котором 0 = родительский идентификатор. И rest PID является родительским идентификатором того же идентификатора.

Теперь мы пытаемся получить всю подкатегорию «Бренд» или «Обувь», чтобы она отображала все (под-подкатегорию и под-подкатегорию) детали подкатегории под этим деревом. Можно ли это сделать через PHP? любой цикл или каким-либо образом?

Спасибо!

Solutions Collecting From Web of "Петля из категории в подкатегорию в 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 . '&nbsp;&nbsp;&nbsp;&nbsp;'); } } return $children; } > /************ GET ALL CATEGORIES FUNCTION****************/ $allcategory = categoryChild(0); print_r($allcategory);