[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Return режет массив
vegasmoscow
Здравствуйте, коллеги.

Работаю с категориями на сайте, делаю выборку всех вложенных категорий, использую рекурсию, поскольку уровень вложенности может быть бесконечным. Пример меню.

Родительская
==Подкатегория 1
====Подкатегория 11
====Подкатегория 12
====Подкатегория 13
====Подкатегория 14
==Подкатегория 2
==Подкатегория 3
==Подкатегория 4

При нахождении в родительской категории скрипт должен выбрать из базы все ID вложенных категорий.

Вот скрипт.

// Show internal goods
function ShowInternalCategories ($c_id) {
$q_1 = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE `parent`='$c_id' AND `visible`='yes'");
while ($row_1 = db_fetch_row($q_1)) {
$q_2 = db_query("SELECT categoryID FROM ".CATEGORIES_TABLE." WHERE `parent`='".$row_1[0]."' AND `visible`='yes'");
if (mysql_num_rows ($q_2) > 0) {
ShowInternalCategories ($row_1[0]);
}
$internal_cat[] = $row_1[0];
}
// Если здесь перебрать $internal_cat с помощью foreach, все вложенные категории будут отображены
return $internal_cat;
}
foreach (ShowInternalCategories ($categoryID) as $key=>$val) {
echo $val." "; // Здесь же отображены только категории второго уровня, а третий уровень игнорируется
}


Комментариями в скрипте указал, где проблема. Вчера полночи голову ломал, пробовал по-всякому - не работает как надо.

Как вывести все вложенные категории вне функции?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.