Что-то никак не могу реализовать вывод категорий с неограниченной вложенностью.
есть таблица:
id name p_id
1 | gg | 0
--------------------------
2 | sdf | 5
--------------------------
3 | we | 0
--------------------------
5 | xc | 0
--------------------------
6 | df | 3
--------------------------
7 | cv | 3
--------------------------
8 | zx | 7
--------------------------
9 | cx | 1
как мне вывести всё вот так:
gg
--cx
we
--df
--cv
----zx
и т.д.
[php:1:213e58b616]<?php
// Создаем массив категорий
$categories = array();
$query = mysql_query('SELECT * FROM `cats`');
while($res = mysql_fetch_assoc($query)) {
$categoryes[$res['p_id']][$res['id']] = $res['name'];
}
// Функция обработки массива категорий
function ShowCats($current = 0, $prefix = '') {
global $categories;
if(empty($categories[$current]))
return ;
foreach($categories[$current] as $id=>$name) {
echo $prefix.$name;
ShowCats($id, $prefix.'--');
}
}
ShowCats();
?>[/php:1:213e58b616]
как то так
Маньяк, спс, но я уже так сделал
саам
$result = $db->query('SELECT `id`, `name`, `parrent_category` FROM `'.DB_PREFIX.'news_category`');
while($category = $result->fetch_assoc()) {
$array_category[$category['id']] = array (
'name' => $category['name'],
'parrent_category' => $category['parrent_category']
);
}
function viveCategory($category_array, $parrent_id = 0, $spaces_count = 1) {
foreach($category_array as $id => $params) {
if($params['parrent_category'] == $parrent_id) {
echo str_repeat('--', $spaces_count);
echo $params['name'];
echo '<br>';
viveCategory($category_array, $id, ($spaces_count + 1));
}
}
}