|
|
|
| Здравствуйте!
Делаю CMS. Пункты меню хранятся в таблице MySQL и нужно реализовать возможность менять порядок вывода этих пунктов на экран, тоесть дать пользователю возможность передвигать вниз-вверх любые пункты меню.
Я сделал так:
id INT -- первичный ключ
title VARCHAR(50) -- название раздела
order_num INT -- числовой значение для рортировки (порядковый номер в списке)
|
При таком подходе, очень тяжело следить за целостностью списка, учитывая, что записей может быть бесконечно много. Наверняка есть какие-то простые решения это задачи?
Заранее благодарен за помощь! | |
|
|
|
|
|
|
|
для: Temnovit
(01.11.2008 в 15:28)
| | А по моему, самый простой, надежный и естественный подход.
Проще придумать сложно. | |
|
|
|
|
|
|
|
для: Trianon
(01.11.2008 в 15:39)
| | Ну вся проблемы в функциях, которые будут выполнять задачу
<?
function move_up() {
}
function move_dоwn() {
}
?>
|
Необходимо сдледить, чтобы последовательность Order_num оставалась целостной. Та же проблема при удалении и добавлении записи. Нужно узнать какое максимальное значение и так далее. Все это конечно решается, но получается как-то громоздко. | |
|
|
|
|
|
|
|
для: Temnovit
(01.11.2008 в 15:46)
| | по идее смена порядка должна выполняться одним запросом UPDATE
UPDATE tbl
SET num = замена(num)
WHERE ...
где замена(num) - выражение, вычисляющее новый номер по старому.
функции IF() вкупе со сложением и вычитанием должно хватить. | |
|
|
|