agga_gaag
Новичок
как сделать "недревовидный вид дерева категорий"
Привет!
Моя задача - вывести массив единичной вложенности дерева категорий, хранимых в базе как
id parent_id
1 0
2 0
3 1
4 3
и потом перебросить данную структуру (вместе с генерируемым в функции элементом массива level (уровень вложенности, для форматирования отступа) в шаблон, который преобразует массив в елемент формы select. Проблема в том, что при вызове нижеприведённой функции, она выдаёт массив многоуровневой вложенности, а мне, надо, чтобы была нулевая вложенность. Те, чтобы все элементы были на одном уровне, вне зависимости от их иерархии. Какой бы хак изменил бы поведение данной функции?
Спасибо
Привет!
Моя задача - вывести массив единичной вложенности дерева категорий, хранимых в базе как
id parent_id
1 0
2 0
3 1
4 3
и потом перебросить данную структуру (вместе с генерируемым в функции элементом массива level (уровень вложенности, для форматирования отступа) в шаблон, который преобразует массив в елемент формы select. Проблема в том, что при вызове нижеприведённой функции, она выдаёт массив многоуровневой вложенности, а мне, надо, чтобы была нулевая вложенность. Те, чтобы все элементы были на одном уровне, вне зависимости от их иерархии. Какой бы хак изменил бы поведение данной функции?
PHP:
function getCategoryTree($start_id = 0, $lvl = 0) {
$sql = "SELECT * FROM category WHERE parent_id = %d ORDER BY id DESC";
$prepared_sql = sprintf($sql, $start_id);
$result = mysql_query($prepared_sql);
$row = null;
while($rows = mysql_fetch_assoc($result)) {
$row[] = array('id' => $rows['id'], 'parent_id' => $rows['parent_id'], 'title' => $rows['title'], 'url' => $rows['url'], 'level' => $lvl);
$temp = $this->getCategoryTree($rows['id'], $lvl + 1);
if (isset($temp)) {
$row[] = $temp[0];
}
}
return $row;
}