我無法使用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