Добрый вечер. Почему при рекурсии возникает Apache HTTP Server прекращает свою работу......, когда я скрипт запускаю.... Что делать ?Настройки d php.ini или же в http.сonf (apache) когрда эту рекурсивную функцию закомментить(внутрение команды оставить), все так чисто заработает.-)))) работаю в денвере..... Большая просьба намекнуть, подсказать.
У рекурсии есть определённое число "оборотов". Почитайте про значение по умолчанию для рекурсий. Возможно проблема в этом
http://www.php.ru/forum/viewtopic.php?t ... 57f6591d5b там рекурсия... посмотрите, пожалуйста для обсуждения... PHP: PHP: <?php function build_tree($link, $parent=0) { $sql = sprintf("SELECT `cat_id`, `cat_name` FROM `cat_categories` WHERE `cat_parent`=%d ORDER BY `cat_id` ASC;", $parent); if (!$result = mysql_query($sql, $link)) { return mysql_error(); } if (mysql_num_rows($result)) { $output = '<ul>'; while($cat = mysql_fetch_assoc($result)) { $output .= sprintf( '<li><a href="%s?cat_id=%d">%s</a>%s</li>', basename(__FILE__), intval($cat['cat_id']), htmlspecialchars($cat['cat_name']), build_tree($link, $cat['cat_id']) ); } $output .= '</ul>'; mysql_free_result($result); return $output; } else { return false; } } ?> если закомментить рекурсивную функцию , причем внутренний вход оставить, все аж заработает. Для такого маленького списка эта рекурсия не работает Каталог1 Подкаталог1.1 Подкаталог1.2 Каталог 2 Подкаталог2.1 Подкаталог 2.1.1 Никак.... Просьба помочь, -)))и Большая пребольшая.... Что мне делать в этой ситуации
PHP: <?function build_tree($args = array(), $parent = 0){ $sql = "Select `cat_id`, `cat_name`, `cat_parent`, `cat_url` from `cat_categories` where cat_parent='$parent' order by cat_id asc"; $data = mysql_fetch_assoc($sql); foreach($data as $k => $v){ $args[$v['cat_parent']] = array('id' => $v['cat_id'], 'link' => $v['cat_url'], 'name' => $v['cat_name']); $args = build_tree($args, $v['id']); } return $args; }?> Я б делал так. Но тогда нужно хранить ссылку в базе. Функция вернет массив с ссылками названиями и айдишниками в массиве. Обращаться так: PHP: <?$menu = build_tree();?> Использовать: PHP: <?foreach($menu as $k => $v){ echo "<a href="{$v['href']}">{$v['name']}<br/>"; if(sizeof($menu[$v['id']]){ echo '<ul>'; foreach($menu as $k => $v){ echo "<li><a href="{$v['href']}">{$v['name']}</li>"; } echo '</ul>'; } } ?> Это пример для второго уровня, можно не ограничеваться двумя.