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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Nested. Каскадный список запросом Возможно ли это?

Сообщения:  [1-2] 

 
 автор: Trianon   (14.06.2007 в 16:56)   письмо автору
 
   для: brys   (14.06.2007 в 16:43)
 


$menu = $_GET["id_sort_menu"];
$menu2 = $_GET["id_sort_menu"] - 1;
$sum = $menu+$menu2;
$sql = "update menu set id_sort_menu=$sum - id_sort_menu where id_sort_menu in($menu,$menu2)";
mysql_query($sql);

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

альтернатива - применять другие методы хранения дерева: вложенные множества или материализованные пути.

   
 
 автор: brys   (14.06.2007 в 16:43)   письмо автору
 
 

Два вопроса:

1 вопрос. Возможно создать условие сортировки запроса?

id_menu | id_dir_menu | name_menu

------1---------------null-----------menu 1
------2---------------null-----------menu 2
------3-----------------1------------sub_menu
------4-----------------1------------sub_menu_2
------5 ----------------2------------sub_menu_3

SELECT id_menu, id_dir_menu, name_menu FROM menu WHERE ?????

Чтобы при запросе список сортировался так?

menu 1
- sub_menu
- sub_menu_2
menu 2
- sub_menu_2

------------------------------------------------------------------------------------------------------------------------
2 вопрос. В БД есть поле.

id_sort_menu

------1------
------2------
------3------
------4------

Когда пользователь нажимает на ссылку допустим со значением 4
<a href="sort_menu.php?id_sort_menu=<?php echo $row_detail2menu['id_sort_menu']; ?>">^</a>
запись в БД меняет 4 на число 3 (тоесть -1) а за место 3 подставляет 4(тоесть+1).

Пытался сделать так:

$menu = $_GET["id_sort_menu"];
$menu2 = $_GET["id_sort_menu"] - 1;

$sql = "update menu set id_sort_menu=$menu-1 where id_sort_menu=$menu";
$sql2 = "update menu set id_sort_menu=$menu where id_sort_menu=$menu-1 ";
mysql_query($sql);
mysql_query($sql2);

но дело в том что в этом запросе сначало обновляется первая запись и значения двух записей становятся одинаковыми.

Подскажите как можно решить эти задачи.
Заранее спасибо.

   

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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