2010-01-30 59 views
1

我有一个客户,我正在为此构建一个小型CMS。其中一个功能是他希望能够选择图像在页面上显示的顺序。什么是最好的方式来操纵数据库中条目的方式显示在我的网页上?

在我的MySQL数据库我有一个与领域称为image_info表:
指数(自动递增)
img_url
img_link

我想增加一个额外的领域被称为img_order这将是一个int,我会参考排序返回到我的PHP脚本的数据。

我不确定这是否是最好的方法。我觉得我不得不重新编号数据库中的每个条目,只是为了在列表中向上或向下移动一个图像。

是否有这种类型的功能的标准程序?

感谢, -J

回答

1

我认为,加入img_order列是最简单的方式,它不会很难被重新编号字段。举例来说,如果你在img_order 15位添加图片,只需用该值插入,然后运行以下查询:

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

如果要删除现有的图像,你必须降低

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

而且如果你从一个位置移动图像到另一个,你必须递增img_order原始和新位置之间的所有图像:

一个后 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

您将不得不重新编号每个位置的变化。但算法不太复杂,你可以在两个查询中完成。

相关问题