Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: цикл FOR и MySQL UPDATE
."\n WHERE city=1 AND category=2 AND ordering=".$i);
$database->query();
}
обновление проходит, но все строки "ordering" принимают значение "100", а надо 1, 2, 3, ..... 100
в чем проблема?
grefon
Отправлено: 14 Мая, 2011 - 14:48:57
Частый посетитель
Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010
Помог: 32 раз(а)
Всмотритесь в свой запрос! Он делает то, что Вы ему говорите, цикл тут не причем.
У Вас есть поле со значением 4, в 4 интерации Вы ему присваиваете значение 5, в 5 - 6, в 6 - 7 и так далее. Короче Вы все поля поднимаете до 100.
----- ____________________________________________________________________
Ну как то так, наверное. http://grefon[dot]com
Saymor
Отправлено: 14 Мая, 2011 - 14:55:27
Новичок
Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011
Помог: 0 раз(а)
grefon пишет:
Всмотритесь в свой запрос! Он делает то, что Вы ему говорите, цикл тут не причем.
У Вас есть поле со значением 4, в 4 интерации Вы ему присваиваете значение 5, в 5 - 6, в 6 - 7 и так далее. Короче Вы все поля поднимаете до 100.
спасибо, это я понимаю, но как это обойти?
grefon
Отправлено: 14 Мая, 2011 - 14:58:39
Частый посетитель
Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010
Помог: 32 раз(а)
Вам нужно во всей таблице поднять ordering на +1? (Добавление)
В общем или пускайте цикл в обратную сторону, или переделайте запрос, что лучше!
----- ____________________________________________________________________
Ну как то так, наверное. http://grefon[dot]com
Saymor
Отправлено: 14 Мая, 2011 - 15:06:21
Новичок
Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011
Помог: 0 раз(а)
grefon пишет:
Вам нужно во всей таблице поднять ordering на +1? (Добавление)
В общем или пускайте цикл в обратную сторону, или переделайте запрос, что лучше!
Вам нужно во всей таблице поднять ordering на +1? ДА.
Сударь, но в чем соль-то? чет я не совсем понимаю..
если сделать " ordering=".$i[$i]" ", то "ordering" принимают значение 1, цикл проход по скрипту 1 раз не более..
$database->setQuery("UPDATE table1 SET ordering=ordering+1 WHERE city=1 AND category=2");
$database->query();
Вот так и без всяких циклов! Соль в том, что так Ахилес не догонит черепаху
Вы не совсем правильно меня поняли.
у меня есть например 100 объектов в БД, все они имеют поле "ordering" 1,2,3,.... 100, так вот при добавлении нового объекта мне надо чтоб все объекты поменяли своё значение "ordering" на +1, тем самым новый объект будет всегда "ordering=1"
grefon
Отправлено: 14 Мая, 2011 - 15:32:46
Частый посетитель
Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010
Помог: 32 раз(а)
Saymor пишет:
Вы не совсем правильно меня поняли.
Теперь я совсем ничего не понял. Вы попробуйте код который я написал, может вопрос решится сам собой.
----- ____________________________________________________________________
Ну как то так, наверное. http://grefon[dot]com
OrmaJever
Отправлено: 14 Мая, 2011 - 15:33:33
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
а вы пробовали запрос? Этот запрос имено это и должен делать
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Saymor
Отправлено: 14 Мая, 2011 - 15:41:00
Новичок
Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011
Помог: 0 раз(а)
grefon пишет:
Теперь я совсем ничего не понял. Вы попробуйте код который я написал, может вопрос решится сам собой.
OrmaJever пишет:
а вы пробовали запрос? Этот запрос имено это и должен делать
код попробовал, без всяких циклов, работает!!!!
но теперь я ничего не понимаю...
хотя если поразмыслить, то все логично, вопрос у меня возникает как он проходит все поля?! хотя ведь мы не указали конкретную запись! вот он и увеличил все на 1, а если бы мы указали явно в какой строке менять, то надо цикл...
взглянул прям с другого ракурса Низкий Вам поклон!
grefon
Отправлено: 14 Мая, 2011 - 15:44:12
Частый посетитель
Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010
Помог: 32 раз(а)
С помощью правильных запросов можно сделать 90% всей работы. Просто нужно научится понимать что-к-чему. А использование циклов при работе с базой в большинстве случае неверное решение и дополнительная нагрузка на сервер.
----- ____________________________________________________________________
Ну как то так, наверное. http://grefon[dot]com
Saymor
Отправлено: 14 Мая, 2011 - 15:52:27
Новичок
Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011
Помог: 0 раз(а)
grefon пишет:
С помощью правильных запросов можно сделать 90% всей работы. Просто нужно научится понимать что-к-чему. А использование циклов при работе с базой в большинстве случае неверное решение и дополнительная нагрузка на сервер.
Я написал Вам личное сообщение, ответьте пожалуйста..
Stierus
Отправлено: 16 Мая, 2011 - 09:27:08
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
Еще один живой пример, иллюстрирующий, что нужно описывать первоначальную задачу, а не ваш способ ее реализации .
Запросов в цикле не должно быть вообще, я не могу вспомнить ни одного случая, когда запросы в цикле были бы хоть чем-то лучше нормальных запросов без цикла (пусть не 1, а несколько - не важно, но без цикла). Если человек предлагает вам поставить запрос внутрь цикла - значит что он некомпетентен в этой области и его слушать не стоит.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.