javascript - 存储 HTML 列表的顺序而不更新数据库中的每一行?

标签 javascript sql html

我有一个可以排序的 HTML 列表(使用 jQuery's sortable API )。我将列表项存储在数据库中;每行存储项目的顺序和文本。 如何存储列表项的顺序,以便在项目的顺序更改时不需要更新多行?可以添加和删除列表项。

这是我正在谈论的例子:

<ol>
  <li>Go shopping</li> <!-- Order: 1 -->
  <li>Go jogging</li> <!-- Order: 2 -->
  <li>Eat</li> <!-- Order: 3 -->
</ol>

用户将“吃”列表项移到顶部,现在我必须更新数据库中的每一行以存储订单。

<ol>
  <li>Eat</li> <!-- Order: 3, now update to 1 -->      
  <li>Go shopping</li> <!-- Order: 1, now update to 2 -->
  <li>Go jogging</li> <!-- Order: 2 now update to 3 -->
</ol>

最佳答案

有一次我不得不做的是有某种“标题”记录,它按顺序存储所有“项目”的 ID,以逗号分隔...
因此,在您的情况下,我会在第一个版本中存储 1,2,3,在第二个版本中存储 3,1,2。

这绝对不是归一化的,而且感觉很丑,但是:

  • 当用户更改顺序时,您只更新一行。这很重要,我们的名单可能会变大。
  • 当用户添加一个项目时,该项目自然会落在列表的开头或结尾,具体取决于您检索项目以显示它们的方式。

当您想要显示列表时,您读取项目并将它们放入哈希表中,并按其 ID 排序。 然后你读取设置顺序的字符串,用逗号分隔,对于每个 ID,你在哈希表中找到对应的项目,并将其添加到“列表”或“集合”。
然后,如果您的哈希表中还有项目,您可以将它们附加到列表的开头或结尾,具体取决于您希望新内容出现的位置。

只是我的 2 美分

关于javascript - 存储 HTML 列表的顺序而不更新数据库中的每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/919017/

相关文章:

php - 在Resize上设置最大高度

javascript - 在任何情况下都防止 onbeforeunload 关闭页面

javascript - 如何从 JavaScript 中的嵌套对象中过滤掉值

sql - 使用 hibernateTemplate、JdbcTemplate 进行 Spring 批量插入

javascript - 如何在 Bootstrap 4 中实现全高列

android - 可点击的网站图像无法在 iPhone 和 Android 设备上运行

javascript - jquery 给我元素未定义的值

javascript - 谷歌地图不显示任何标记

mysql - 根据外部 csv 文件的内容更新现有的 sql 表?

sql - 如何锁定选择,而不仅仅是插入/更新/删除