拖动&将保存保存到mysql优化
drag & drop saving to mysql optimalized
在SO上也有一些类似的问题,但我已经实现了我的方法;认为这与预期的"好"相去甚远;问题是我有一个列表,你可以拖动&drop,但是如果将1个元素从位置拖动到位置50,则需要更新49个元素(这将是49个查询)以保存1个动作;现在为了不这么做,我保存了一个列表,并将该列表保存到mysql中;
+---------+------------+-----------+
| user_id | project_id | user_sort |
+---------+------------+-----------+
| 1 | 2 | 3,1,2 |
+---------+------------+-----------+
这有好处,我只需要更新1行;然而,问题是当用户返回时,我需要进行2次查询(选择user_sort,并选择所有id);并在两者之间使用PHP进行爆炸(user_sort);最不干净,语速最慢。
有更好的方法吗?
如果将1个元素从一个位置拖到另一个位置50,则需要49个元素要更新(这将是49个查询),只需保存1个操作
这不是真的,您可以在两个查询中更新所有49行:
$id = 10; // moved element
$old_pos = 1;
$new_pos = 50;
// elements between old and new position
if ($new_pos > $old_pos) {
$sql1 = "
UPDATE my_table
SET user_sort=user_sort-1
WHERE user_sort > $old_pos
AND user_sort <= $new_pos";
} else {
$sql1 = "
UPDATE my_table
SET user_sort=user_sort+1
WHERE user_sort >= $old_pos
AND user_sort < $new_pos";
}
// moved element
$sql2 = "UPDATE my_table SET user_sort=$new_pos WHERE id=$id";
相关文章:
- 如何将getJson的响应保存在全局变量中
- 按下按钮时保存cookie
- 如何使用 Angular JS 将数据保存在数据库中
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 以可优化的方式使用requirejs加载模板
- HTML5在画布中加载较小的图像并保存实际大小的图像
- 是否可以在浏览器中使用纯JavaScript保存音频流
- 如何将多个画布保存为一个图像
- PHP:显示sqlite数据库中的html格式数据,使用tinymce保存
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- 保存数组javascript
- 使用优化器在慢速连接上加载main.js时需要js超时
- JavaScript数组优化以提高性能
- React+Redux性能优化与组件ShouldUpdate
- 保存串行端口列表与流星
- 将JavaScript变量保存到Rails模型
- Java脚本将URL转换为已保存的URL时出错
- 如何自动保存动态生成的HTML SVG元素
- 拖动&将保存保存到mysql优化
- 优化js -保存对象中复选框的值