使用php通过前端重新排序数据库记录行

时间:2010-09-04 05:19:14

标签: php mysql sorting swap

我正在使用PHP / MYSQL。我想在我的前端,让用户在早期阶段对用户自己输入的数据库记录进行排序和重新排列。用户上传的记录有时可能随机地插入到数据库中,因此在用户配置文件中,他/她可能具有根据此明智地重新排列数据库中的行的工具。

任何人都可以为我提供一个可以帮助我这样做的脚本。

id  title     date     desc
1   s1        s1_date  s1_desc
2   s2        s2_date  s2_desc
3   s3        s3_date  s3_desc
4   s4        s4_date  s4_desc
5   s5        s5_date  s5_desc

在用户个人资料中,他想要重新排列行,以便s2将向上移动一个并且将为每个字段保存为s2-> s1和s1-> s2 ..可能在

我正在以另一种方式查看..用户页面将以行方式显示字段,并且在侧面将有每个当前行的输入框id id(id)被设置为该输入框的值,因此用户可以在其间切换并将整个重新排序的列表提交给后端。在那种情况下,我们可以做什么...将同时进行许多交换..

2 个答案:

答案 0 :(得分:4)

最佳解决方案是添加另一个字段“ordering”,您可以在其中存储默认的int ID,并且在重新排列行时,您可以交换这些行之间的排序值。在查询中,您将按ORDER BY订购ASC / DESC

答案 1 :(得分:0)

获取两行并更新值

假设表名为:t

$result = mysql_query("SELECT title, `date`, `desc` FROM t WHERE id = 1");
$row1 = mysql_fetch_assoc($result);

$result = mysql_query("SELECT title, `date`, `desc` FROM t WHERE id = 2");
$row2 = mysql_fetch_assoc($result);

mysql_query("UPDATE t SET title = '{$row2['title']}', `date` = '{$row2['date']}', `desc` = '{$row2['desc']}' WHERE id = 1");
mysql_query("UPDATE t SET title = '{$row1['title']}', `date` = '{$row1['date']}', `desc` = '{$row1['desc']}' WHERE id = 2");