ieroglif
Новичок
Размышления над древовидным меню
Привет сообществу! Решил вот присоедениться и для начала имею такой вопрос.
Предварительно заглянул в FAQ на соответствующую тему, и подивился тому, сколько оказывается есть всяких способов "выращивания" деревьев. Я же пока знаю только один самый простой, поэтому именно им и воспользовался, когда возникла необходимость сделать древовидное меню. Т.е. для каждой вершины указывается её родитель. Соответственно, само меню формируется с помощью простой рекурсивной функции:
В целом здесь всё понятно и работает как надо. Но меня терзают смутные сомнения... Это получается по одному запросу к базе на каждый пункт меню! А их уже сейчас несколько десятков и скоро может набраться под сотню и больше. Не будет ли такое меню создавать чересчур большую нагрузку на сервер? Может лучше стоит использовать какой-нибудь другой вариант? Или всё-таки ничего страшного?
Привет сообществу! Решил вот присоедениться и для начала имею такой вопрос.
Предварительно заглянул в FAQ на соответствующую тему, и подивился тому, сколько оказывается есть всяких способов "выращивания" деревьев. Я же пока знаю только один самый простой, поэтому именно им и воспользовался, когда возникла необходимость сделать древовидное меню. Т.е. для каждой вершины указывается её родитель. Соответственно, само меню формируется с помощью простой рекурсивной функции:
PHP:
function get_tree_menu ($parent_id = 0) {
global $out;
$result = mysql_query("SELECT id, parent_id, name FROM categories WHERE parent_id = '$parent_id'");
while ($row = mysql_fetch_assoc($result)) {
$out .= "d.add($row[cat_id],$parent_id,'$row[cat_menu]','index.php?cat=$row[cat_id]');\n";
// Это функция яваскрипта, формирующего внешний вид меню
get_tree_menu($row['cat_id']);
}
return $out;
}