glem1337
@glem1337

Почему последние sql запросы не выполняются?

Есть функция удаление картинки по айдишнику.
//Удаление одной картинки по айдишнику
function delete_attached_img($img_id)
{

	/* Эти запросы отвечают за удаление картинки из базы и сам файл	*/
	$query = "SELECT picture
                FROM catalogue_pictures
                WHERE id=".(int)$img_id." LIMIT 1";
	$result = mysql_query($query) or trigger_error(mysql_error(), E_USER_ERROR);
	while ($row = mysql_fetch_assoc($result)) {
		@unlink(IMGS_PATH.$row['picture']);
	}
  $query = "DELETE FROM catalogue_pictures WHERE id = '".(int)$img_id."' LIMIT 1";
  mysql_query($query) or trigger_error(mysql_error(), E_USER_ERROR);
  /* Эти запросы отвечают за удаление картинки из базы и сам файл	*/


  /* А эти нужны для того что бы сбросить позиции картинок. Например я удалил картинку и сейчас позиции имеют вид (2, 3, 4, 6)
  Этот код должен сделать так что бы вид стал(1, 2, 3, 4) */
  /* Если я удаляю два верхних запроса, и вручную проставляю картинкам позиции (2, 3, 4, 6), то все работает */
  $query = "SELECT product
                FROM catalogue_pictures
                WHERE id=".(int)$img_id." LIMIT 1";
	$result = mysql_query($query) or trigger_error(mysql_error(), E_USER_ERROR);
	$prod_id = mysql_fetch_assoc($result); // Тут получаю id товара для которого удалена картинка


	$query = "SELECT id
                FROM catalogue_pictures
                WHERE product=".(int)$prod_id['product']."  ORDER BY id";
	$result = mysql_query($query) or trigger_error(mysql_error(), E_USER_ERROR); // Тут получаю все id картинок которые остались
	$pos = 1;
  while ($row = mysql_fetch_assoc($result)) {
  	$query = "UPDATE catalogue_pictures
                SET position=".(int)$pos."
                WHERE id=".(int)$row['id'];
    mysql_query($query) or trigger_error(mysql_error(), E_USER_ERROR); // Перебираю эти картинки и обновляю им позицию
    $pos++;
  }
  /* А эти нужны для того что бы сбросить позиции картинок. Например я удалил картинку и сейчас позиции имеют вид (2, 3, 4, 6)
  Этот код должен сделать так что бы вид стал(1, 2, 3, 4) */
}


Так вот. Запросы которые отвечают за обновление позиций перестают работать как только я добавляю два верхних запроса. В чем моя ошибка?

P.S. сайт на самописном движке и функционал этот уже был. Я хочу сделать только обновление позиций картинок, то есть добавить запросы которые за это отвечают.
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
@i-yard
Во втором запросе вы удаляете из таблицы catalogue_pictures запись с id=$img_id
А в третьем вы выбираете эту же запись из таблицы catalogue_pictures (id=$img_id), соотвественно результат запроса = null и последующие запросы не пройдут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы