mysqlを使用して列の範囲を更新するのに問題があります。私の全体的な目標は、ユーザーがリストアイテムの位置を変更できるようにし、変更に対応するために他のすべてのリストアイテムの位置をシフトできるようにすることです。たとえば、1〜6の範囲の番号があり、位置2のアイテムを位置4に移動し、各アイテムが1つの位置番号のみを占有している間に、各アイテムに変更を補正させたいとします。私はこれに数時間取り組んできましたが、疲れすぎて正直に考えることができません。私はまだmysqlの初心者ですが、この最後の厄介な情報を除いて、最初のcmsの作成はほぼ完了しています。
問題のコードは次のとおりです。
$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! ';
}
}
要求された位置変更は正しく作成されますが、範囲内の他のすべての数値が誤った値に変更されます。おそらく単純な間違いです。