Всем привет.
Такой вопрос.
есть таблица для текстов и таблица для разделов
и есть связывающая их табличка
id_content | id_razdel | sort
в функционале приложения пользователь может менять очередность текстов в разделе и для их правильного размещения существует поле sort.
т.е. допустим у нас были тексты по порядку 1,2,3
пользователь поменял сортировку 2,1,3
есть возможность реализовать текущий функционал за счет musql ?
Winston
5.01.2015 - 15:50
Цитата (hurt3 @ 5.01.2015 - 13:38) |
пользователь поменял сортировку 2,1,3
|
Значения поля sort должны всегда идти по порядку.
К примеру у записи с ID 2 поле sort = 2, у записи с ID 3 поле sort = 3.
Если ID 3 переместить над ID 2, то значения поля sort должны обновиться, то есть теперь все будет выглядеть так
ID | sort
1 | 1
3 | 2
2 | 3
Ну и при выводе использовать возможности sql "... ORDER BY `sort`"
PS: здесь можно посмотреть варианты решения данной задачи
http://phpforum.su/index.php?act=Search&CO...%F0%EE%E2%EA%F3
так усложним задачу для уточнения вопроса,
допустим у нас етсь 5 строк
1
2
3
4
5
5 ставим на самый верх
5
1
2
3
4
теперь получается что номера должны поменяться у всех строк, это реально сделать за счет функционала mysql?
Цитата (hurt3 @ 5.01.2015 - 15:26) |
теперь получается что номера должны поменяться у всех строк, это реально сделать за счет функционала mysql? |
а можно хотя бы ссылку просто там столько примеров, где конкретно смотреть?
sergeiss
5.01.2015 - 18:06
hurt3, ты все-таки обрати внимание на первый же ответ в этой теме
Дополню только (или, можно сказать, чуть подробнее опишу то, что уже было сказано), что тебе надо добавить еще одно поле, которое будет отвечать за порядок вывода (сортировку) значений. И вот в этом поле ты можешь менять цифирьки так, как хочешь. А остальные поля лучше не трогай.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
sergeiss, это понятно цифры сортировки как изменять все переписывать?
т.е. в любом случае придется указывать все значения сортировки в запросе или это как то можно решить через mysql?
Michael
5.01.2015 - 18:45
Тут на форуме был даже конкурс на тему произвольной сортировки или что то типа того.
Он проявил непонимание проблематики участниками.
hurt3 тебе надо более точно формулировать ТЗ.
Ответы выше предполагали что поле sort - это что то типа вес, когда записи с большим весом оказываются ниже. Сортировка тут обычная - order by. При изменении порядка перестраиваются веса всем эл-там.
Если же нужно что то более хитрое то уточняй.
_____________
There never was a struggle in the soul of a good man that was not hard
Michael
мммммм
вот таблица
id_content | id_razdel | sort
вот изначальная сортировка
1
2
3
4
5
5 ставим на самый верх
5
1
2
3
4
видите сортировка поменялась
как эту сортировку можно в таблице сохранить в поле sort нужно формировать от 1 до несольких запросов или же можно как-то посредством mysql решить эту задачу, допустим я передаю лишь sort измененного столбца, а mysql сам меняет в остальных строках сортировку
я хз как еще это написать
Michael
5.01.2015 - 19:10
если у тебя вариант что перемещать только вверх, то "текущей" записи можно оттолкнуться от верхней и вычислять относительно нее и идти в минус, ну или ставь sort=1, а для всех остальных выполняй запрос вида update ... set sort=sort+1
_____________
There never was a struggle in the soul of a good man that was not hard
да то же к этому пришел
но здесь работа нужна для диапазонов минуту сейчас сгенерю
в общем примерно что то вроде этого
если перемещаем элемент вверх
получаем два положения элемента стартовое и финальное
$this->sql = 'UPDATE `topikgroup_part` SET `sort` = `sort`+1 WHERE `sort` >= '.$fine. ' AND `sort` < '.$start.' ';
если вниз меняем условия
ну и меняем сорт у двигаемого элемента
sergeiss
6.01.2015 - 02:20
Цитата (hurt3 @ 5.01.2015 - 18:53) |
допустим я передаю лишь sort измененного столбца, а mysql сам меняет в остальных строках сортировку |
Ты можешь сделать функцию внутри Мускуля, внутри которой уже сделаешь всё, что тебе нужно.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
серж, можно ссылку? первый раз слышу что внутри mysql можно создать что то подобное
sergeiss
6.01.2015 - 16:06
Цитата (hurt3 @ 6.01.2015 - 12:47) |
серж, можно ссылку? первый раз слышу что внутри mysql можно создать что то подобное |
Гугли по словам "mysql create function" и "mysql create procedure".
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.