[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Изменение порядка вывода данных таблицы
IPnex
Все привет! Помогите пожалуйста!

Есть таблица data, с полями id, name, orderby.
Выводится она в цикле сортируясь по полю orderby. В таблице, которая выводится, есть столбец “Порядок”, в котором будут выводится стрелки-ссылки “вверх/вниз”. Что-то типа этого:

Заголовок | Порядок
---------------------
статья 1 | вниз
статья 2 | вверх/вниз
статья 3 | вверх/вниз
статья 4 | вверх

В общем требуется реализовать изменение порядка вывода данных через БД.
Вот как я думаю это должно происходить: например, я нажимаю “вниз” у “статья 2”, в БД поступает запрос и значения полей orderby у “статья 2” и “статья 3” меняются местами. Только вот вопрос в том каким образом узнать значение поля orderby следующей по списку записи (в случае если нажата “вниз”) и предыдущей записи (если нажата “вверх”)?




Спустя 20 минут, 34 секунды (13.01.2010 - 17:03) sergeiss написал(а):
Читай параметры у SELECT, тебе нужны в данном случае WHERE и LIMIT.

Спустя 8 минут, 55 секунд (13.01.2010 - 17:12) IPnex написал(а):
sergeiss

А можешь привести какой-нибудь пример запроса, с помощью которого можно узнать значение определенного поля у предыдущей записи и у следующей?
Или мою задачу можно решить как-то проще?

Спустя 6 минут, 42 секунды (13.01.2010 - 17:19) VolCh написал(а):
Цитата (IPnex @ 13.01.2010 - 16:42)
Только вот вопрос в том каким образом узнать значение поля orderby следующей по списку записи (в случае если нажата “вниз”) и предыдущей записи (если нажата “вверх”)?


+1 и -1 соотвественно? smile.gif

Спустя 37 секунд (13.01.2010 - 17:19) Joker написал(а):
что храниться в orderby ? номер строки при отображении?

Спустя 21 минута, 47 секунд (13.01.2010 - 17:41) IPnex написал(а):
Joker
При добавлении новой записи в поле orderby добавляется число на 1 больше предыдущего (т.е. идет нумерация 1,2,3...)

VolCh
Я так пробовал. Проблема в том, что при удалении например двух записей, порядок по полю orderby будет к примеру такой: 1,2,5,6. И если реализовывать по такому методу (+1 и -1), то чтобы поменять местами 2(orderby=2) и 3(orderby=5) записи, нужно нажимать ссылку “вверх” (или “вниз”, смотря какую запись мы двигаем) 2 раза. А если разнице еще больше (1,2,56,60), то придется нажимать до тех пор, пока не получится нужное значение. Следовательно, проще всего сделать так, чтобы значения полей просто менялись местами, только вот как это сделать? Т.е. как узнать значание поле orderby у предыдущей записи, если мы двигаем вверх и значение orderby следующей записи, если двигаем вниз

Спустя 1 час, 25 минут, 57 секунд (13.01.2010 - 19:07) vagrand написал(а):
Я у себя в системе реализовал похожую вещь при помощи вот такого скрипта на клиентской стороне:
http://wiki.github.com/madrobby/scriptacul...sortable-create

и сохраняя новые позиции всего списка на серверной
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.