Как лучше всего управлять отображением записей в базе данных на моей веб-странице? - PullRequest
1 голос
/ 30 января 2010

У меня есть клиент, для которого я создаю небольшую CMS. Одна из функций заключается в том, что он хотел бы иметь возможность выбирать порядок отображения изображений на странице.

В моей базе данных mySql у меня есть таблица с именем image_info с полями:
индекс (с автоматическим увеличением)
img_url
img_link

Я думал о добавлении дополнительного поля с именем img_order, которое будет int, к которому я буду обращаться, чтобы отсортировать данные, возвращаемые в мой php-скрипт.

Я не уверен, что это лучший способ. Я чувствую, что мне придется заново нумеровать каждую запись в базе данных, чтобы переместить одно изображение вверх или вниз по списку.

Существует ли стандартная процедура для этого типа функции?

Спасибо, -J

Ответы [ 2 ]

1 голос
/ 30 января 2010

Я думаю, что добавить столбец img_order - это самый простой способ, и нетрудно перенумеровать поля. Например, если вы добавляете изображение в img_order положение 15, просто вставьте его с этим значением, а затем выполните следующий запрос:

update image_info set img_order = img_order + 1 where img_order >= 15;

Если вы удаляете существующее изображение, вам придется уменьшить значения img_order для всех изображений после этого:

update image_info set img_order = img_order - 1 where img_order >= 15;

И если вы перемещаете изображение из одной позиции в другую, вам придется увеличить img_order для всех изображений между исходной и новой позицией:

update image_info set img_order = img_order + 1 where 
img_order between (least($old_img_order, $new_img_order), 
greatest($old_img_order, $new_img_order));
0 голосов
/ 30 января 2010

При каждой смене позиции вам придется пересчитывать номера. Но алгоритм не слишком сложен, вы можете сделать все это в двух запросах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...