[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как UPDATE одним запросом несколько строк
Kurenchuks
Задача такова надо сделать форму изменения статуса продукции
то есть сбоку имя продукции а справа два переключателя (true and false)
и так вывожу все строчки из таблицы. Первый вопрос как посчитать выведенное кол во строк.

Второе после передачи я присваиваю каждой продукции свою переменную (вот из-за чего надо высчитывать количество выведенных строк, так вот как весь этот товар Обновить за раз



Спустя 12 минут, 56 секунд (30.01.2012 - 16:53) Игорь_Vasinsky написал(а):
$sql = "UPDATE 1; UPDATE 2; .... UPDATE 10";

mysql_query($sql);


Спустя 1 минута, 52 секунды (30.01.2012 - 16:55) inpost написал(а):
Игорь_Vasinsky
Не будет же работать smile.gif Зачем советуешь smile.gif

Kurenchuks
Ничего непонятно. Особенно содержание отличается от заголовка.

Спустя 1 минута, 5 секунд (30.01.2012 - 16:56) Игорь_Vasinsky написал(а):
в PMA работает если запросы ";" разделять - а тут почему нет?

Спустя 2 минуты, 44 секунды (30.01.2012 - 16:59) inpost написал(а):
Игорь_Vasinsky
Потому что mysql не поддерживает множественные запросы smile.gif
mysqli только поддерживает!

Спустя 4 минуты, 3 секунды (30.01.2012 - 17:03) Игорь_Vasinsky написал(а):
ну тады mysql_multi_query() в помощь!

Спустя 47 минут, 10 секунд (30.01.2012 - 17:50) sergeiss написал(а):
Цитата (Игорь_Vasinsky @ 30.01.2012 - 19:03)
ну тады mysql_multi_query() в помощь!

...или сразу за PostgreSQL браться... Там можно в одном (множественном) запросе много чего сделать.

Спустя 23 минуты, 35 секунд (30.01.2012 - 18:13) dadli написал(а):
Kurenchuks
прочитаите про CASE WHEN, может пригадится

Спустя 15 минут, 19 секунд (30.01.2012 - 18:29) Игорь_Vasinsky написал(а):
ты имеешь ввиду что манипулируя условиями - можно подставить хоть скока запросов?

Спустя 1 месяц, 5 дней, 1 час, 35 минут, 49 секунд (5.03.2012 - 20:05) Pride_St написал(а):
Насколько я понял проблему самая примитивная реализация:

//Вывод "формы"
echo "<form action='URL скрипта, который будет вносить изменения в базу' method='post'>";
$result=mysql_query("SELECT id, name, on_off FROM prodykciya");
$i=0;
echo '<table>';
while ($row=mysql_fetch_row($result)) {
if ($row[2]) $checked="checked";//проверка on_off===true
else $checked="";
//Выводим очередной товар и переключатель, например табличной версткой
echo "
<tr>
<td>
Наименование: ".$row[1]."</td>
<td>
<input
type='checkbox' name=''check_box[] ".$checked.">
<input
type='hidden' name='id[]' value=".$row[0].">
</td>

</tr>
";
$i++;
}
</table>
echo '<input type='hidden' name='summ_of_produkts' value=' ".$i." '>';
echo '</form>';
//Инкрементарное вычисление суммы можно заменить запросом типа
//$summ=mysql_query('SELECT COUNT(produkt_name) FROM produkts');

//В скрипте- обработчике считываем сумму из автоглобального
//массива $_POST['summ_of_produkts'], также как и массив значений переключателей
//Аналогично в цыкле производим построчную запись в базу
for($i=0; $i<$_POST['summ_of_produkts']; $i++) {
if (!mysql_query("UPDATE produkts SET on_off=".$_POST["check_box"][$i]." WHERE id=".$_POST["id"][$i])) {
$error=1;
breack;
}
}
//т.к. скрипт ничего не выводит для красоты можно сделать в
//конце обратный редирект (я бы так и сделал)
header("location: http://фдрес исходного скрпита.php?on_error=".$error);

//В исходном скрипте читаем $_GET['on_error'] и пишем либо "данные внесены" либо "ошибка"
//можно даже пересылать 2 параметра и указывать в какой строке


Писал как идею сходу, неисключены ошибки

Спустя 1 месяц, 16 дней, 18 часов, 6 минут, 13 секунд (22.04.2012 - 14:11) ruzarh написал(а):
INSERT INTO table (a,b,c) VALUES (4,5,6),(4,5,6),(4,5,6),(4,5,6)
ON DUPLICATE KEY UPDATE a=values(a);


Все работает и все существует
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.