我想允许用户通过提供号码来重新排列项目。所以,如果有5个项目
Id, Item, Display Order
1, Item a, 1
2, Item b, 2
3, Item c, 3
4, Item d, 4
5, Item e, 5
用户可获得5个输入框,他们可以提供数字并单击更新以重新排序项目。如果用户在上面输入125作为新位置,则只将其设置为最大值(即5)并更新其他项目,如果用户输入-10,则只将该项目设为1并更新其他项目。
一旦用户提交表单,我就无法弄清楚如何更新订单。任何帮助,将不胜感激。感谢
更新
使用上面的数据,我向用户提供了5行,其中包含5个输入框,其中包含display_order值作为默认值。如果用户希望对列表重新排序,则可以更新输入框值并单击“提交”以更新数据库。我使用ORDER BY displayorder查询列出reocrds。
有任何问题请询问
答案 0 :(得分:2)
表单如下:
<form ...>
<table>
<tr>
<th>Item A</th>
<td><input type="text" name="order[1]" value="1" /></td>
</tr>
<tr>
<th>Item B</th>
<td><input type="text" name="order[2]" value="2" /></td>
</tr>
etc...
名称字段数组中的下标值是该特定项目的ID。提交表单时,您可以执行以下操作:
foreach($_POST['order'] as $key => $val) {
$val = intval($val);
$key = intval($key);
$sql = "UPDATE yourtable SET DisplayOrder=$val WHERE id=$key;";
mysql_query($sql) or die(mysql_error());
}
然后进行检索,它只是:
SELECT ...
FROM yourtable
ORDER BY DisplayOrder ASC
用户输入他们想要的任何号码,并由他们来确保他们以正确的顺序升序。您的脚本只需记录这些数字并在检索时按它们排序。
答案 1 :(得分:1)
为什么不使用jQuery Sortable。更容易,用户友好,你不会有“重复的订单价值”问题。