|
|
|
Помогите с сортировкой!
|
|||
|---|---|---|---|
|
#18+
Ребята, такой вопрос: Есть маленькая БД для простенького сайта. В ней таблица которая содержит список всех разделов, количество разделов может быть от 1 до 10, НЕ БОЛЬШЕ. В таблице поля: id (primary key, auto increment) и name (здесь просто название раздела). По id к разделу будет привязываться различный контент из других таблиц. Пользователь может самостоятельно создавать и удалять разделы, порядок отображения в меню сортируется по id и вроде бы все в порядке. Наконец вопрос: что если пользователь захочет вставить раздел например между 3-м и 4-м, или поменять 5-й и 6-й местами?! Я вижу только один выход, завести еще одно числовое поле, которое будет хранить порядковый номер раздела (от 1 до 10), и каждый раз при вставке раздела или изменении порядка записывать туда номер, а в остальных строках начиная с этой позиции циклом увеличивать значение на единицу, строк ведь не много. Но этот способ кажется мне каким-то корявым. Может есть какое-то более грамотное решение?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2013, 19:51:55 |
|
||
|
Помогите с сортировкой!
|
|||
|---|---|---|---|
|
#18+
Не смешивайте роли для полей. id оставьте для идентфикации, его менять не надо. А вот какой-нибудь display_order (т.е. отдельное поле) вполне подойдет для указания порядка сортировки. А уж как заполнять display_order - вопрос второй. Вам, наверное, проще всего целыми числами. При вставке между 3-м и 4-ым сначала увеличиваете на единицу все значения от 4 и выше, а потом вставляете 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2013, 20:16:17 |
|
||
|
Помогите с сортировкой!
|
|||
|---|---|---|---|
|
#18+
miksoft, я как раз и не собирался смешивать роли, планировал завести еще одно поле. но думал может быть есть способ получше. к сожалению не силен по части MySql, да и вообще с БД имел дело последний раз в 99-м и это был FoxPro :) спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2013, 20:27:45 |
|
||
|
Помогите с сортировкой!
|
|||
|---|---|---|---|
|
#18+
Pedro Garciya Lopezместами?! Я вижу только один выход, завести еще одно числовое поле, которое будет хранить порядковый номер раздела (от 1 до 10), и каждый раз при вставке раздела или изменении порядка записывать туда номер, а в остальных строках начиная с этой позиции циклом увеличивать значение на единицу, строк ведь не много. Но этот способ кажется мне каким-то корявым. Может есть какое-то более грамотное решение?? Великолепное решение, и достаточно стандартное, что тебе не нравится -- не понятно. По-любому оно грамотное. Нужна пользовательская сортировка -- мы её задаём с помощью специально для этого созданного поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2013, 22:28:48 |
|
||
|
Помогите с сортировкой!
|
|||
|---|---|---|---|
|
#18+
MasterZiv, оно мне уже нравится :) так скажем решил посоветоваться с более опытными людьми в этом вопросе, говорю же что по теме MySql располагаю достаточно поверхностными знаниями и думал вдруг есть какое-то техническое чудо о котором мне не известно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2013, 23:00:52 |
|
||
|
Помогите с сортировкой!
|
|||
|---|---|---|---|
|
#18+
Pedro Garciya Lopezи думал вдруг есть какое-то техническое чудо о котором мне не известноДа, есть как раз такое чудо. Именно его вы и придумали :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 05:41:28 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=218&tid=1836445]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 333ms |

| 0 / 0 |
