0

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

我的数据库的组织

一个示例行是:

示例行

person 字段是项目的所有者,每个人的所有项目都在同一个表中。id、name、link 和 description 是非常不言自明的。数字字段是查看列表页时的显示方式,所以数字 10 会出现在 0 之上,优先级与本题无关。这是我在浏览器中查看 Jimmy 的列表时发生的情况的一个示例。(别担心,我最终会到达我的观点)

吉米的名单

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

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

例子

如果我在浏览器中查看 Russell 的列表,它会是这样的:

罗素的名单

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

假设 Jimmy 登录并且他有很多列表项。他将一些向上移动了很多次,因此一个项目的数值远远高于其他所有项目的数值。然后他向上移动另一个项目,重新加载页面,并认为它没有做任何事情,因为第二个项目的数值仍然小于第一个项目的数值。我希望这是有道理的。另一个问题是,如果两个项目的数值相同,这是一个巨大的问题。关键是,我拥有它的方式行不通。

有谁知道我可以让这个数字正常工作的方法,并告诉我如何做到这一点,以便用户可以在他们的列表中上下移动项目?(另外,如果我的数据库组织不好,我也很想知道 :))

提前致谢!

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

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

2 回答 2

1

当您将项目向上或向下移动一个“移动”时,将正在移动的项目的“数字”值与它正在跳过的项目的“数字”值交换。

于 2013-10-05T21:18:51.017 回答
0

我会这样处理:

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

  2. 您可以通过它的方法 serialize()获取订单。

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

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

  5. SELECT您的排序数据使用ORDER BY number DESC更多

祝你好运!:-)

于 2013-10-05T21:28:41.713 回答