我如何组织我的数据库,以便我可以上下移动项目?

时间:2013-10-05 21:12:01

标签: php mysql

我正在创建一些软件,其中人们有生日列表,他们可以将项目放在他们的列表中,并且可以被其他人查看。我的数据库中有一个表,其中所有内容都被组织为birthday lists。它的安排如下:

Organization of my database

示例行将是:

Example row

人员字段是拥有该项目的人员,并且每个人的所有项目都在同一个表格中。 id,名称,链接和描述都非常自我解释。数字字段是您查看列表页面时的显示方式,因此数字10将显示在0以上,优先级与此问题无关。这是我在浏览器中查看Jimmy列表时会发生什么的示例。 (别担心,我最终会到达我的观点)

Jimmy’s list

我添加了很多图片,因为我从来没有任何意义,这是我解释事情的最佳方式:)

无论如何,这是另一张显示示例数据库的图片。

Example

如果我在浏览器中查看了Russell的列表,它将如下所示:

Russell’s List

注意$$$$项目如何位于订书机上方,因为它的编号更高。这就是它的用途。如果我以Russell的身份登录查看此列表,我会看到按钮Move UpMove Down增加和减少该项目的数字属性。我将用示例场景演示我的问题。

让我们说Jimmy登录,他有很多列表项。他移动了几次,所以它得到一个项目的数值远高于其他项目的数值。然后他移动另一个项目,重新加载页面,并认为它没有做任何事情,因为第二个项目的数字值仍然小于第一个项目的数字值。我希望这是有道理的。另一个问题是,如果两个项目的数值相同,那么这是一个很大的问题。关键是,我拥有它的方式无法发挥作用。

有没有人知道我可以让这个号码正常工作的方式,并告诉我如何才能让它能让用户在列表中上下移动项目? (另外,如果我的数据库组织严重,我也很想知道:))

提前致谢!

结束信息,以备不时之需:

  • 我正在使用PHP 5和MySQL
  • 构建它
  • 这是在使用GoDaddy
  • 的远程Linux服务器上

2 个答案:

答案 0 :(得分:1)

当您将项目向上或向下移动一个'move'时,将要移动的项目的'number'值与其跳过的项目的'number'值进行交换。

答案 1 :(得分:0)

我会这样处理:

  1. 对于移动/排序项目,您可以使用jQuery UI sortable作为示例。

  2. 您可以通过method serialize()获取订单。

  3. 将序列化数据发送到PHP脚本并交换/更新已更改的位置(表中的number

  4. 更新数据库中的数据集。

  5. SELECT您的已排序数据使用ORDER BY number DESCmore

  6. 祝你好运! : - )