Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2012, 12:26   #1
ETOYSPEh
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 17
По умолчанию изобретение меню(mysql)

Имеется таблица, вида:
|1|Категория1|Название1|
|2|Категория2|Название2|

Нужно поменять их местами, лучше всего в одном запросе. Ничего в голову не приходит, прошу помощи...

Сама идея заключается в том, чтобы в админке, рядом с пунктами меню, было 2 кнопки, вверх, и вниз, НО для того, чтобы сменить положение пунктов, нужно сменить id... Надеюсь на помощь.
ETOYSPEh вне форума Ответить с цитированием
Старый 30.11.2012, 12:37   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Просто добавь в таблицу поле `order`, в котором указывай порядок вывода пунктов меню.
Andkorol вне форума Ответить с цитированием
Старый 30.11.2012, 12:49   #3
ETOYSPEh
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 17
По умолчанию

Так это-то понятно, это вовсе не проблема, но как поменять затем в одном запросе, 2 значения в разных строчках таблицы? нужно же сделать, чтоб одно поле получило значение, например, нижнего поля, чтоб подняться, а то, в свою очередь, получило значение первого поля.
ETOYSPEh вне форума Ответить с цитированием
Старый 30.11.2012, 13:42   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Одним простым запросом – никак.
От нескольких запросов БД не развалится – она как раз для этого и предназначена.
Делай сначала просто, чтоб всё работало как нужно – не думай о количестве запросов и времени их выполнения.
Тем более, что в этом случае это всё совершенно не критично.
Andkorol вне форума Ответить с цитированием
Старый 30.11.2012, 14:05   #5
ETOYSPEh
Пользователь
 
Регистрация: 30.11.2012
Сообщений: 17
По умолчанию

Хорошо, спасибо за помощь
А вы можете свой скайп в личку скинуть? А то так нередко возникают вопросы, каждый раз на форум бежать как-то не так, если конечно вы не слишком занятой человек
ETOYSPEh вне форума Ответить с цитированием
Старый 30.11.2012, 14:41   #6
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Так общий пример (для 2-x строк), вдруг чем-то поможет
Код:
UPDATE `table`
SET `order` = IF(`id` = 1, 200, 201)
WHERE `id` IN (1,2)
Для большего кол-ва строк можно генерировать условия с CASE

А вообще, если запросы и сортировки будут действительно сложными, я бы написал хранимую процедуру
Cronos20 вне форума Ответить с цитированием
Старый 30.11.2012, 15:35   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

2 селекта и 2 апдейта. Если учесть что менять позиции будете не ежедневно по 1000 раз - то приемлемый результат
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Патент на изобретение DIgorevich Свободное общение 16 23.07.2010 02:27
И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки? TwiX Win Api 9 15.10.2009 01:57
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20