По порядку: SET Sort = :Sort + 1 То есть вы увеличивается значение не на +1, а на :Sort (отправленный параметр) + 1, так и должно быть?
-
Ну а по сути в остальном все должно работать, в чем вопрос то? Если вылетает ошибка: какая ошибка вылетает?
animr: ну и на хер этот код? Вы думаете что если в вашей функции все нормально, то где то выше косяк?? Возьмите, руками прямо в базу напишите запрос:
UPDATE table SET Sort = 666 + 1 WHERE Sort = (SELECT Sort FROM table WHERE Sort > 666)
Вместо "666" число которые вы посылаете в запросе, и посмотрите произойдет что-то или нет.
Когда я говорил, что поля "нет строк удовлетворяющий условию", я говорил про SQL а не про PHP!
animr: если сам SQL запрос работает корректно, то проверяйте что у вас приходит в функцию в качестве $value. Если все ок, то подавайте в суд на PHP, вас нае...обманули!
animr: я понял что ты не можешь объяснить что тебе надо, и тебе лень сделать:
1. проверку запроса напрямую к базе;
2. проверку входных параметров функций;
3. хоть немного пошевелиться.
Умник, ты тут умничаешь или помогаешь? если я разбирался бы в этом я сюда не писал. Я только начинаю это все учить. Если помогаешь помогай, иначе не трать ни свое не мое время.
animr: я умничаю? Я тебе пишу ЧТО нужно сделать, ты в ответ шлешь ... КОД, непонятно зачем. Если ты не знаешь КАК сделать то ЧТО я написал, так ты спроси КАК это сделать.
если ты помогаешь то слушай, я объясню тебе что мне нужно. В базе есть поле Sort, в ней уникальные значения числа. Это поле позволяет сортировать товары на сайте по возрастанию. Когда я хочу поднять товар вперед, я прописываю там число например 5, и все остальные товары у которых значение поля больше или равно 5ти, увеличиваются как "значение + 1" . Теперь понятно ?
animr: ты скинул код который ВЫШЕ функции, там ничего с базой не делается и поэтому смысла в этом коде нет.
Что приходит в функцию которая выполняет запрос? Проверить можно:
public static function SortProduct($value){
var_dump($value); die();
$db = Db::getConnection();
$sql = "UPDATE table SET Sort = Sort + 1 WHERE Sort IN (SELECT Sort FROM table WHERE Sort >= :Sort)";
$result = $db->prepare($sql);
$result->bindParam(':Sort', $value, PDO::PARAM_INT);
return $result->execute();
}
После запроса, у тебя на экране появится все что успел вывести скрипт и значение которое приходит в фукнцию.
В функции я также поправил SQL: теперь у тебя у ВСЕХ записей, у которых Sort больше переданного значения, увеличиться на +1.
animr: NULL или что-то другое? Если NULL - то значит вы либо не отправляете запрос методом POST (проверьте какой метод указан в тэге, должно быть ну и собственно в форме должно быть поле с именем 'Sort'), либо некорректные данные отправляете.
Я редактирую например какую нибудь строчку с id = 20, у него значение числа поля сортировки равна 200, хочу его переместить на 7 место, и число 200 изменил на 7, и все строчки у которых значение поля Sort > 7 увеличиваются на "значение поля + 1" там у кого старое значение 7 становится 8, где 8 = 9, где 9= 10 и т.д. КАК такое реализовать.????