Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Древовидное меню, слева.
 
 автор: bartik   (20.05.2008 в 16:23)   письмо автору
 
 

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

$result = mysql_query("select * from cms_content where id_site='1' and sub_cat='0'");
while($row=mysql_fetch_array($result)){
echo "<a href='$row[url]/'><b>".$row['title']."</b></a> <br />";
$res = mysql_query("select * from cms_content where id_site='1' and sub_cat='$row[id]'");
while($rs=mysql_fetch_array($res)){ echo "<a href='$row[url]/$rs[url]/'>".$rs['title']."</a> <br />";  }
}


Задача сделать
Основная категория 1
Основная категория 2 ( мы находимся тут)
--подкатегория
--подкатегория
Основная категория 3

Кто знает подскажите ?

   
 
 автор: SiM(R)   (20.05.2008 в 18:14)   письмо автору
 
   для: bartik   (20.05.2008 в 16:23)
 

Ну в принципе можно взять из БД все данные сразу, а условия отборки (where...) задать при помощи условия if () уже в циклах while().

   
 
 автор: вит   (20.05.2008 в 18:36)   письмо автору
 
   для: SiM(R)   (20.05.2008 в 18:14)
 

ну так, а если у тебя более 2 уровней вложенности меню,
то твой скрипт не работает.
Надо данные в базу занести соответствующим образом
(каждый пункт имеет id и parent_id помимо прочей информации(тема для поиска "Хранение древовидных структур данных в бд"))
и написать функцию которая рекурсивно вызывает сама себя пока не построит меню.

   
 
 автор: bartik   (21.05.2008 в 01:11)   письмо автору
 
   для: вит   (20.05.2008 в 18:36)
 

Если не сложно, можете показать пример тут, больше всего интересует чтобы было как меньше запросов и они не зависили от новых категорий.
ID
CAT если 0 - значит главная

Спасибо, очень жду...

   
 
 автор: ONYX   (21.05.2008 в 06:59)   письмо автору
3.4 Кб
 
   для: bartik   (21.05.2008 в 01:11)
 

Есть вот такой вариант скрипта

   
 
 автор: bartik   (21.05.2008 в 11:12)   письмо автору
 
   для: ONYX   (21.05.2008 в 06:59)
 

спасибо большое -)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования