我无法使用mysql更新一系列的列。我的总体目标是让用户能够更改列表项目的位置,并让所有其他列表项目改变位置以适应更改。所以说你有一系列的数字,1-6,你想将位置2的项目移动到位置4,并且每个项目都会对变化进行补偿,而每个项目只占用一个位置编号。我一直在为此工作了几个小时,而且我太累了,没法思考。我仍然是一个mysql的新手,但我几乎完成了我的第一个CMS,除了这最后一个恼人的消息。在mysql中更新列的范围
的代码中的问题是:
$newposition = $_POST['position'];
$oldposition = $_GET['oldposition'];
$id = $_GET['id'];
while ($work = mysql_fetch_array($workset)) {
if ($newposition>$oldposition) {
mysql_query('UPDATE work SET position=position-1 WHERE position<='.$newposition.' AND position>'.$oldposition.'');
mysql_query('UPDATE work SET position='.$newposition.' WHERE id='.$id.'');
}
elseif
($newposition<$oldposition) {
mysql_query('UPDATE work SET position=position+1 WHERE position<'.$oldposition.' AND position<='.$newposition.'');
mysql_query('UPDATE work SET position='.$newposition.' WHERE id='.$id.'');
}
elseif
($newposition==$oldposition) {
echo 'same value! ';
}
}
它正确地创建要求的位置变化,但都在范围内的其他数字得到改变不正确的值。这可能是一个简单的错误..
尝试输出您正在生成的SQL,并按照实际执行更新的逻辑进行操作。 – andrewsi