[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка записей
Страницы: 1, 2
hurt3
Всем привет.
Такой вопрос.
есть таблица для текстов и таблица для разделов

и есть связывающая их табличка

id_content | id_razdel | sort

в функционале приложения пользователь может менять очередность текстов в разделе и для их правильного размещения существует поле sort.

т.е. допустим у нас были тексты по порядку 1,2,3
пользователь поменял сортировку 2,1,3

есть возможность реализовать текущий функционал за счет musql ?




Winston
Цитата (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
hurt3
так усложним задачу для уточнения вопроса,
допустим у нас етсь 5 строк
1
2
3
4
5

5 ставим на самый верх

5
1
2
3
4

теперь получается что номера должны поменяться у всех строк, это реально сделать за счет функционала mysql?

Valick
Цитата (hurt3 @ 5.01.2015 - 15:26)
теперь получается что номера должны поменяться у всех строк, это реально сделать за счет функционала mysql?
hurt3
а можно хотя бы ссылку просто там столько примеров, где конкретно смотреть?
sergeiss
hurt3, ты все-таки обрати внимание на первый же ответ в этой теме smile.gif
Дополню только (или, можно сказать, чуть подробнее опишу то, что уже было сказано), что тебе надо добавить еще одно поле, которое будет отвечать за порядок вывода (сортировку) значений. И вот в этом поле ты можешь менять цифирьки так, как хочешь. А остальные поля лучше не трогай.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
hurt3
sergeiss, это понятно цифры сортировки как изменять все переписывать?
т.е. в любом случае придется указывать все значения сортировки в запросе или это как то можно решить через mysql?
Michael
Тут на форуме был даже конкурс на тему произвольной сортировки или что то типа того.
Он проявил непонимание проблематики участниками.
hurt3 тебе надо более точно формулировать ТЗ.
Ответы выше предполагали что поле sort - это что то типа вес, когда записи с большим весом оказываются ниже. Сортировка тут обычная - order by. При изменении порядка перестраиваются веса всем эл-там.
Если же нужно что то более хитрое то уточняй.

_____________
There never was a struggle in the soul of a good man that was not hard
hurt3
Michael
мммммм

вот таблица

id_content | id_razdel | sort

вот изначальная сортировка

1
2
3
4
5

5 ставим на самый верх

5
1
2
3
4

видите сортировка поменялась

как эту сортировку можно в таблице сохранить в поле sort нужно формировать от 1 до несольких запросов или же можно как-то посредством mysql решить эту задачу, допустим я передаю лишь sort измененного столбца, а mysql сам меняет в остальных строках сортировку

я хз как еще это написать
Michael
если у тебя вариант что перемещать только вверх, то "текущей" записи можно оттолкнуться от верхней и вычислять относительно нее и идти в минус, ну или ставь sort=1, а для всех остальных выполняй запрос вида update ... set sort=sort+1

_____________
There never was a struggle in the soul of a good man that was not hard
hurt3
да то же к этому пришел
но здесь работа нужна для диапазонов минуту сейчас сгенерю
hurt3

в общем примерно что то вроде этого
если перемещаем элемент вверх

получаем два положения элемента стартовое и финальное

$this->sql = 'UPDATE `topikgroup_part` SET `sort` = `sort`+1 WHERE `sort` >= '.$fine. ' AND `sort` < '.$start.' ';

если вниз меняем условия
ну и меняем сорт у двигаемого элемента
sergeiss
Цитата (hurt3 @ 5.01.2015 - 18:53)
допустим я передаю лишь sort измененного столбца, а mysql сам меняет в остальных строках сортировку

Ты можешь сделать функцию внутри Мускуля, внутри которой уже сделаешь всё, что тебе нужно.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
hurt3
серж, можно ссылку? первый раз слышу что внутри mysql можно создать что то подобное
sergeiss
Цитата (hurt3 @ 6.01.2015 - 12:47)
серж, можно ссылку? первый раз слышу что внутри mysql можно создать что то подобное

Гугли по словам "mysql create function" и "mysql create procedure".

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

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