|
|
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Есть список. Пользователь делает какой-то дневник на сайте с помощью конструктора. Каждый пункт - отдельная строка в таблице. Хочу дать возможность пользователю перетаскивать мышкой изменяя порядок. В таблице также сортировка должна каким-то образом измениться. Как с найменший нагрузкой на сервер сделать подобную операцию когда например запись из 101 должен быть уже 51, розсунув все следующий после 51 на +1 ? Или как-то по другому может ?.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2015, 22:16:54 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Сделай связный список... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2015, 22:42:09 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Как связной список мне может помочь? Это наверное выгодно в случае если бы пользователь переходил с одной страницы на другую. А в одном Select список Where ид_пользователь=тот_кто_смотрит как он будет выводить данные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2015, 23:39:29 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Андрей159, связанный список очень сложно сортировать на sql. не пойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2015, 00:13:33 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
MasterZivАндрей159, связанный список очень сложно сортировать на sql. не пойдет. Я тоже об этом. А решение вообще есть простое кроме невыгодных по большой нагрузке на сервер ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2015, 00:54:38 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
добавь колонку с цифрой внутри, которая и будет определять порядок сортировки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2015, 06:36:11 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Андрей159MasterZivАндрей159, связанный список очень сложно сортировать на sql. не пойдет. Я тоже об этом. А решение вообще есть простое кроме невыгодных по большой нагрузке на сервер ? там не будет какой то совсем уж большой нагрузки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2015, 07:09:52 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
MasterZivсвязанный список очень сложно сортировать на sql. не пойдет.Без уточнения как минимум структуры хранения данных фраза не имеет смысла. Потому как на некоторых заведомо ложна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2015, 18:32:20 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
AkinaMasterZivсвязанный список очень сложно сортировать на sql. не пойдет.Без уточнения как минимум структуры хранения данных фраза не имеет смысла. Потому как на некоторых заведомо ложна. так структура связаного списка вполне очевидна. в каждой записи необязательная ссылка на PK следующей записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2015, 19:00:45 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Это немного не так. Ссылка обязана присутствовать - это верно, но количество таких ссылок и форма реализации могут сильно различаться. Например, nested set тоже является разновидностью связного списка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2015, 21:06:47 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
AkinaЭто немного не так. Ссылка обязана присутствовать - это верно, но количество таких ссылок и форма реализации могут сильно различаться. Например, nested set тоже является разновидностью связного списка. ну если бу я имел в виду needed sets, я бы так и написал бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 07:08:22 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Андрей159, То есть, у вас есть некая табличка, записи которой имеют внешний ключ на "юзверя" И их надо выводить в определенном порядке. Причем, порядок может изменяться юзверем (его мышкой). Что смущает в таком решении: Заводите в этой табличке ещё одно поле `order`, в котором тупо, чиселкой прописываем этот порядок. Интерфейс, тупо при изменении порядка после тыка мышкой отправляет запрос (ajax) на сервер и тот также тупо обновляет порядок в табличке для этого юзверя. Выборка - примитивна, сортировка тоже. Смущает количество ajax-запросов? Ну так сделайте "отложенные" изменения, например по "завершению" действий юзверя (конец сессии) ... или ваще кроном... ... в смысле нафига тут ваще какие-то "связанные списки"? (зачем городить говно-огород) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 08:29:28 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Arhat109, начинаем с простого варианта... просто "в лоб" только доп поле 1. при вставке значение = автоинкремент x 10 (как вариант, можно *2+1) 2. в момент перетаскивания меняете значение "в дырку". Тут же "update по порядку" *10 (*2+1) как то так, весь вопрос в количестве строк в дневнике. Будет перестроение индекса по этому полю (ну а индекс обязателен...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 09:27:33 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Arhat109... в смысле нафига тут ваще какие-то "связанные списки"? (зачем городить говно-огород) :) ТС желает иметь возможность хранить порядок сортировки (уже сортированный список) и в любой момент иметь возможность переместить в этом сортированном списке элемент или непрерывный блок элементов в произвольное место. Решений тут два. Либо хранение "порядка сортировки", либо использование структуры, изначально предназначенной доля выполнения такой операции. В первом случае имеем простую внешне структуру, но дополнительную процедуру перемещения, производящую "раздвижку" в месте вставки (что в среднем кончается перенумерацией ака пересчёт половины записей). Во втором - при усложнении структуры достаточно простая и, главное, вылизанная толпами программистов процедура перемещения, выполняемая одним запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 10:00:35 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinov2. в момент перетаскивания меняете значение "в дырку". Тут же "update по порядку" *10 (*2+1)Если использовать для указания порядка сортировки float/double-числа, то "update по порядку" можно отложить, например, на ночь. Или сделать его частичным - локальный (например, в пределах ближайших целых чисел) делать сразу, глобальный (по всей таблице) ночью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 10:16:03 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
miksoft, я посмотрел на ситуацию со стороны простого пользователя, если он часто "переносит дела" или просто играется с красивым интерфейсом... дырки-окна закончаться после третьего перетаскивания... для надежности все таки лучше делать сразу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 10:22:35 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinovесли он часто "переносит дела" или просто играется с красивым интерфейсом... дырки-окна закончаться после третьего перетаскиванияНе закончатся, miksoftЕсли использовать для указания порядка сортировки float/double-числа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 10:25:26 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Arhat109Андрей159, То есть, у вас есть некая табличка, записи которой имеют внешний ключ на "юзверя" И их надо выводить в определенном порядке. Причем, порядок может изменяться юзверем (его мышкой). Что смущает в таком решении: Заводите в этой табличке ещё одно поле `order`, в котором тупо, чиселкой прописываем этот порядок. Интерфейс, тупо при изменении порядка после тыка мышкой отправляет запрос (ajax) на сервер и тот также тупо обновляет порядок в табличке для этого юзверя. Выборка - примитивна, сортировка тоже. Смущает количество ajax-запросов? Ну так сделайте "отложенные" изменения, например по "завершению" действий юзверя (конец сессии) ... или ваще кроном... ... в смысле нафига тут ваще какие-то "связанные списки"? (зачем городить говно-огород) :) я согласен с этим постом абсолютно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 10:30:51 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
tanglir, да, пропустил самый главный смысл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 10:33:48 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
tanglirAlex_Ustinovесли он часто "переносит дела" или просто играется с красивым интерфейсом... дырки-окна закончаться после третьего перетаскиванияНе закончатся, miksoftЕсли использовать для указания порядка сортировки float/double-числаСтрого говоря, тоже могут закончиться. Все-таки разрядность не бесконечная, а в худшем случае может тратиться один двоичный разряд на одну перестановку. Но на большинство случаев этого хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 10:40:15 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinov, авторначинаем с простого варианта... просто "в лоб" только доп поле 1. при вставке значение = автоинкремент x 10 (как вариант, можно *2+1) 2. в момент перетаскивания меняете значение "в дырку". Тут же "update по порядку" *10 (*2+1) как то так, весь вопрос в количестве строк в дневнике. Будет перестроение индекса по этому полю (ну а индекс обязателен...) ?!? Не, оно конечно, ежели хочется "прибор сломать" можно и так изголяться... только "зачем" ;) "Интерфейс, тупо при изменении порядка после тыка мышкой отправляет запрос (ajax) на сервер и тот также тупо обновляет порядок в табличке для этого юзверя" решений 2: а) тупо(!) отправляем ВЕСЬ список сортировки и обновляем ВСЕ записи этого юзверя... кстати "индекс" на это поле там НЕ нужен ваще-то... нужен индекс на юзверя - он является фильтром, а записи для показу вы выгредаете все одно "все". В этом случае, пофиг какие там значения. Сортировка локальных записей пользователя может идти и подряд и перенумеровываться "хоть на лету"... выборка по его записям. Всё одно, у вас КАЖДЫЙ юзверь имеет СВОЙ набор элементов меню... б) вводить сортировку по float/double. Уже обсуждено. Оптимизация решений - отложенное вычисление для хранений. То есть, пока у вас юзверь играется с сортировкой - все значения берутся ИЗ сессии... или кеша. Как только "наигрался" (сессию/кеш пора удалять) - записываем в БД "последний сохраненный вариант сортировки"... и тоже всё. Действие (реальное) Мускуль выполняет ровно единожды. В конце. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 10:56:45 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
miksoftСтрого говоря, тоже могут закончиться.Но не после третьего перетаскивания :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 11:29:44 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
Юзер - существо творческое и без тормозов. Он от нехрен делать будет с утра до обеда пункты таскать, имитируя бурную деятельность... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 13:14:43 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
я так понял скриптами нужно делать или заменой в php, а в базе только через запятую сохранить порядок в одном текстовом поле. Иного в голову не приходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 14:02:30 |
|
||
|
Произвольная сортировка
|
|||
|---|---|---|---|
|
#18+
AkinaЮзер - существо творческое и без тормозов. Он от нехрен делать будет с утра до обеда пункты таскать, имитируя бурную деятельность...Ввести оплату каждой перестановки. А за повторение комбинации, которая уже была - лишать премии! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2015, 14:17:07 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=139&tid=1833287]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 340ms |

| 0 / 0 |
