| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
agat 18.06.2007 16:22
поправил чуток код, вроде все норм стало################################################
@moveGroup[hParams][iShift]
$iShift(^math:sign($hParams.newOrderPosition - $hParams.orderPosition))
^if($iShift){
^oSql.void{
UPDATE
groups
SET
orderPosition = orderPosition - ($iShift)
WHERE
^if($iShift > 0){
orderPosition >= ^hParams.orderPosition.int(0) + 1
AND orderPosition <= ^hParams.newOrderPosition.int(0)
}{
orderPosition > ^hParams.newOrderPosition.int(0)
AND orderPosition <= ^hParams.orderPosition.int(0) - 1
}
}
^oSql.void{
UPDATE
groups
SET
orderPosition = ^hParams.newOrderPosition.int(0) ^if($iShift < 0){ + 1}
WHERE
id = ^hParams.id.int(0)
}
}
# end of @moveGroup[]В противном случае, при попытке переместить первую группу на место пятой, имели пятую группу с номером 6. И так росло до бесконечности. И при попытке сменить пятую на первую - имели две первых.