Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Произвольная сортировка / 25 сообщений из 27, страница 1 из 2
18.04.2015, 22:16:54
    #38939920
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Есть список. Пользователь делает какой-то дневник на сайте с помощью конструктора. Каждый пункт - отдельная строка в таблице. Хочу дать возможность пользователю перетаскивать мышкой изменяя порядок. В таблице также сортировка должна каким-то образом измениться. Как с найменший нагрузкой на сервер сделать подобную операцию когда например запись из 101 должен быть уже 51, розсунув все следующий после 51 на +1 ? Или как-то по другому может ?....
...
Рейтинг: 0 / 0
18.04.2015, 22:42:09
    #38939925
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Сделай связный список...
...
Рейтинг: 0 / 0
18.04.2015, 23:39:29
    #38939936
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Как связной список мне может помочь? Это наверное выгодно в случае если бы пользователь переходил с одной страницы на другую. А в одном Select список Where ид_пользователь=тот_кто_смотрит как он будет выводить данные ?
...
Рейтинг: 0 / 0
19.04.2015, 00:13:33
    #38939939
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Андрей159,

связанный список очень сложно сортировать на sql. не пойдет.
...
Рейтинг: 0 / 0
19.04.2015, 00:54:38
    #38939946
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
MasterZivАндрей159,
связанный список очень сложно сортировать на sql. не пойдет.
Я тоже об этом. А решение вообще есть простое кроме невыгодных по большой нагрузке на сервер ?
...
Рейтинг: 0 / 0
19.04.2015, 06:36:11
    #38939967
bochkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
добавь колонку с цифрой внутри, которая и будет определять порядок сортировки
...
Рейтинг: 0 / 0
19.04.2015, 07:09:52
    #38939968
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Андрей159MasterZivАндрей159,
связанный список очень сложно сортировать на sql. не пойдет.
Я тоже об этом. А решение вообще есть простое кроме невыгодных по большой нагрузке на сервер ?
там не будет какой то совсем уж большой нагрузки.
...
Рейтинг: 0 / 0
19.04.2015, 18:32:20
    #38940159
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
MasterZivсвязанный список очень сложно сортировать на sql. не пойдет.Без уточнения как минимум структуры хранения данных фраза не имеет смысла. Потому как на некоторых заведомо ложна.
...
Рейтинг: 0 / 0
19.04.2015, 19:00:45
    #38940165
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
AkinaMasterZivсвязанный список очень сложно сортировать на sql. не пойдет.Без уточнения как минимум структуры хранения данных фраза не имеет смысла. Потому как на некоторых заведомо ложна.

так структура связаного списка вполне очевидна.
в каждой записи необязательная ссылка на PK следующей записи.
...
Рейтинг: 0 / 0
19.04.2015, 21:06:47
    #38940190
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Это немного не так. Ссылка обязана присутствовать - это верно, но количество таких ссылок и форма реализации могут сильно различаться. Например, nested set тоже является разновидностью связного списка.
...
Рейтинг: 0 / 0
20.04.2015, 07:08:22
    #38940273
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
AkinaЭто немного не так. Ссылка обязана присутствовать - это верно, но количество таких ссылок и форма реализации могут сильно различаться. Например, nested set тоже является разновидностью связного списка.

ну если бу я имел в виду needed sets, я бы так и написал бы.
...
Рейтинг: 0 / 0
20.04.2015, 08:29:28
    #38940295
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Андрей159,

То есть, у вас есть некая табличка, записи которой имеют внешний ключ на "юзверя" И их надо выводить в определенном порядке. Причем, порядок может изменяться юзверем (его мышкой).

Что смущает в таком решении: Заводите в этой табличке ещё одно поле `order`, в котором тупо, чиселкой прописываем этот порядок. Интерфейс, тупо при изменении порядка после тыка мышкой отправляет запрос (ajax) на сервер и тот также тупо обновляет порядок в табличке для этого юзверя.

Выборка - примитивна, сортировка тоже. Смущает количество ajax-запросов? Ну так сделайте "отложенные" изменения, например по "завершению" действий юзверя (конец сессии) ... или ваще кроном...

... в смысле нафига тут ваще какие-то "связанные списки"? (зачем городить говно-огород) :)
...
Рейтинг: 0 / 0
20.04.2015, 09:27:33
    #38940318
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Arhat109,
начинаем с простого варианта... просто "в лоб"

только доп поле
1. при вставке значение = автоинкремент x 10 (как вариант, можно *2+1)
2. в момент перетаскивания меняете значение "в дырку". Тут же "update по порядку" *10 (*2+1)

как то так, весь вопрос в количестве строк в дневнике. Будет перестроение индекса по этому полю (ну а индекс обязателен...)
...
Рейтинг: 0 / 0
20.04.2015, 10:00:35
    #38940340
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Arhat109... в смысле нафига тут ваще какие-то "связанные списки"? (зачем городить говно-огород) :)
ТС желает иметь возможность хранить порядок сортировки (уже сортированный список) и в любой момент иметь возможность переместить в этом сортированном списке элемент или непрерывный блок элементов в произвольное место.
Решений тут два. Либо хранение "порядка сортировки", либо использование структуры, изначально предназначенной доля выполнения такой операции.
В первом случае имеем простую внешне структуру, но дополнительную процедуру перемещения, производящую "раздвижку" в месте вставки (что в среднем кончается перенумерацией ака пересчёт половины записей). Во втором - при усложнении структуры достаточно простая и, главное, вылизанная толпами программистов процедура перемещения, выполняемая одним запросом.
...
Рейтинг: 0 / 0
20.04.2015, 10:16:03
    #38940363
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Alex_Ustinov2. в момент перетаскивания меняете значение "в дырку". Тут же "update по порядку" *10 (*2+1)Если использовать для указания порядка сортировки float/double-числа, то "update по порядку" можно отложить, например, на ночь. Или сделать его частичным - локальный (например, в пределах ближайших целых чисел) делать сразу, глобальный (по всей таблице) ночью.
...
Рейтинг: 0 / 0
20.04.2015, 10:22:35
    #38940369
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
miksoft,

я посмотрел на ситуацию со стороны простого пользователя, если он часто "переносит дела" или просто играется с красивым интерфейсом... дырки-окна закончаться после третьего перетаскивания... для надежности все таки лучше делать сразу...
...
Рейтинг: 0 / 0
20.04.2015, 10:25:26
    #38940373
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Alex_Ustinovесли он часто "переносит дела" или просто играется с красивым интерфейсом... дырки-окна закончаться после третьего перетаскиванияНе закончатся,
miksoftЕсли использовать для указания порядка сортировки float/double-числа
...
Рейтинг: 0 / 0
20.04.2015, 10:30:51
    #38940377
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Arhat109Андрей159,

То есть, у вас есть некая табличка, записи которой имеют внешний ключ на "юзверя" И их надо выводить в определенном порядке. Причем, порядок может изменяться юзверем (его мышкой).

Что смущает в таком решении: Заводите в этой табличке ещё одно поле `order`, в котором тупо, чиселкой прописываем этот порядок. Интерфейс, тупо при изменении порядка после тыка мышкой отправляет запрос (ajax) на сервер и тот также тупо обновляет порядок в табличке для этого юзверя.

Выборка - примитивна, сортировка тоже. Смущает количество ajax-запросов? Ну так сделайте "отложенные" изменения, например по "завершению" действий юзверя (конец сессии) ... или ваще кроном...

... в смысле нафига тут ваще какие-то "связанные списки"? (зачем городить говно-огород) :)


я согласен с этим постом абсолютно.
...
Рейтинг: 0 / 0
20.04.2015, 10:33:48
    #38940386
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
tanglir,

да, пропустил самый главный смысл
...
Рейтинг: 0 / 0
20.04.2015, 10:40:15
    #38940394
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
tanglirAlex_Ustinovесли он часто "переносит дела" или просто играется с красивым интерфейсом... дырки-окна закончаться после третьего перетаскиванияНе закончатся,
miksoftЕсли использовать для указания порядка сортировки float/double-числаСтрого говоря, тоже могут закончиться. Все-таки разрядность не бесконечная, а в худшем случае может тратиться один двоичный разряд на одну перестановку. Но на большинство случаев этого хватит.
...
Рейтинг: 0 / 0
20.04.2015, 10:56:45
    #38940408
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Alex_Ustinov,

авторначинаем с простого варианта... просто "в лоб"

только доп поле
1. при вставке значение = автоинкремент x 10 (как вариант, можно *2+1)
2. в момент перетаскивания меняете значение "в дырку". Тут же "update по порядку" *10 (*2+1)

как то так, весь вопрос в количестве строк в дневнике. Будет перестроение индекса по этому полю (ну а индекс обязателен...)

?!? Не, оно конечно, ежели хочется "прибор сломать" можно и так изголяться... только "зачем" ;)

"Интерфейс, тупо при изменении порядка после тыка мышкой отправляет запрос (ajax) на сервер и тот также тупо обновляет порядок в табличке для этого юзверя"

решений 2:
а) тупо(!) отправляем ВЕСЬ список сортировки и обновляем ВСЕ записи этого юзверя... кстати "индекс" на это поле там НЕ нужен ваще-то... нужен индекс на юзверя - он является фильтром, а записи для показу вы выгредаете все одно "все".
В этом случае, пофиг какие там значения. Сортировка локальных записей пользователя может идти и подряд и перенумеровываться "хоть на лету"... выборка по его записям. Всё одно, у вас КАЖДЫЙ юзверь имеет СВОЙ набор элементов меню...

б) вводить сортировку по float/double. Уже обсуждено.

Оптимизация решений - отложенное вычисление для хранений. То есть, пока у вас юзверь играется с сортировкой - все значения берутся ИЗ сессии... или кеша. Как только "наигрался" (сессию/кеш пора удалять) - записываем в БД "последний сохраненный вариант сортировки"... и тоже всё. Действие (реальное) Мускуль выполняет ровно единожды. В конце.
...
Рейтинг: 0 / 0
20.04.2015, 11:29:44
    #38940434
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
miksoftСтрого говоря, тоже могут закончиться.Но не после третьего перетаскивания :)
...
Рейтинг: 0 / 0
20.04.2015, 13:14:43
    #38940545
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
Юзер - существо творческое и без тормозов. Он от нехрен делать будет с утра до обеда пункты таскать, имитируя бурную деятельность...
...
Рейтинг: 0 / 0
20.04.2015, 14:02:30
    #38940602
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
я так понял скриптами нужно делать или заменой в php, а в базе только через запятую сохранить порядок в одном текстовом поле. Иного в голову не приходит
...
Рейтинг: 0 / 0
20.04.2015, 14:17:07
    #38940621
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Произвольная сортировка
AkinaЮзер - существо творческое и без тормозов. Он от нехрен делать будет с утра до обеда пункты таскать, имитируя бурную деятельность...Ввести оплату каждой перестановки. А за повторение комбинации, которая уже была - лишать премии!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Произвольная сортировка / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]