更改mysql的条目运行顺序

时间:2011-10-31 11:01:17

标签: php mysql

我不确定如何做到这一点,即使有可能。我有一个条目表,但我想更改条目的运行顺序。我有一个名为'ID'的字段,它被设置为自动递增。我希望后端的人改变条目本身的顺序。例如,如果他们向上移动一个条目,那么上面的一个将自动向下移动。

我在每个条目上都竖起了箭头,但我不确定下一步该做什么。我写的代码是:

<?php
$id = $_GET['id'];
$direction = $_GET['direction'];
$menu = $_GET['menu'];

con = mysql_connect("hostname", "user", "password");
if  (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("table", $con); 
$sql = "SELECT priority FROM Menu WHERE ID = $_GET[id]";
list($curpos) = mysql_fetch_array(mysql_query($sql));
// Find new position
if ($direction > 0)
{
// To be moved up
$sql = "SELECT priority FROM Menu WHERE priority < $curpos AND ID = $id ORDER BY priority DESC LIMIT 1";
list($newpos) = @mysql_fetch_array(mysql_query($sql));
}
else
{
// To be moved down
$sql = "SELECT priority FROM Menu WHERE priority > $curpos AND ID = $id ORDER BY priority ASC LIMIT 1";
list($newpos) = @mysql_fetch_array(mysql_query($sql));
}
if ($newpos)
{
$sql = "UPDATE Menu SET priority = $curpos WHERE priority = $newpos AND Menu = $menu";
mysql_query($sql);

$sql = "UPDATE Menu SET priority = $newpos WHERE ID = $id";
mysql_query($sql);
}
echo $msg; ?>

但这似乎没有做任何事情,我看到它在像cPanel这样的东西上工作,但我真的不知道如何自己实现它。 我会感激任何帮助。

3 个答案:

答案 0 :(得分:1)

请勿触摸ID。创建一个新列“排序”并使用它。更改ID可能会导致问题并且不太好<​​/ p>

答案 1 :(得分:0)

最好有记录的优先级字段来执行此操作。更改记录的主键是不好的。

答案 2 :(得分:0)

如果添加了优先级字段,则需要将SQL更改为按优先级排序,并确保更改顺序的代码更新优先级字段。