Всем добрый день. Скорее всего мой вопрос покажется вам слишком простым, но тем не менее второй день не могу решить поставленную задачу. Постараюсь расписать подробнее. Очень буду благодарен помощи.
В общем надо обновить несколько полей одновременно.
1 ФайлКод HTML:2 Файл<?PHP require "scripts/connect.php"; $result = mysql_query("SELECT * FROM ceni"); $myrow = mysql_fetch_array($result);?> <form name='form1' method='POST' action='scripts/update.php'> <?PHP do { printf ("<label><br> <input name='id[]' title='id' type='hidden' value='%s'> </label> <br> <label>Услуга<br> <input name='usluga[]' title='usluga' type='text' value='%s'> </label> <label>Цена<br> <input name='cena[]' title='cena' type='text' value='%s'> </label><br><br><br><br>", $myrow ['id'], $myrow ['usluga'], $myrow ['cena']); } while ($myrow = mysql_fetch_array ($result)); ?> <input type='submit' value='ОК' name='submit' title='submit'> </form>Код HTML:База<?php require 'connect.php'; $c = count($_POST['id']); for($i = 0; $i < $c; $i++) { $sql = "UPDATE ceni SET usluga='$_POST[usluga][$i]', cena = '$_POST[cena][$i]' WHERE id = '$_POST[id][$i]'"; mysql_query ($sql) or die( mysql_error() ); echo '<p>Цена успешно обновлена!</p>'; } ?>
Обновить несколько полей одновременно через PHP (MYSQL)
(Ответов: 11, Просмотров: 812)
- 08.09.2016 15:09
- Регистрация: 27.01.2015
- Сообщений: 34
- Репутация: 7
- 08.09.2016 17:21
Gesite, скорее всего проблема здесь
Выведите этот запрос на экран, а потом скопируйте и выполните его в рнрmyadmin. Если выполнится, значит колдуйте над этой строкой в коде рнр.$sql = "UPDATE ceni SET usluga='$_POST[usluga][$i]', cena = '$_POST[cena][$i]' WHERE id = '$_POST[id][$i]'";
mysql_query deprecated (не кошерно). Замените на mysqli или PDO.Спасибо сказали:
OKyJIucT(09.09.2016), - 08.09.2016 17:59
- Регистрация: 27.01.2015
- Сообщений: 34
- Репутация: 7
brainix, я добавил на вывод :
Код HTML:Итог такой:<pre><?php print_r($_REQUEST) ?></pre>
Код HTML:Наглядно посмотреть как все отрабатывает можно по ссылке: http://a-die.ru/edit.phpArray ( [id] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) [usluga] => Array ( [0] => [1] => Зуб [2] => Десна [3] => Протезирование ) [cena] => Array ( [0] => 0 [1] => 2 [2] => 3003 [3] => 11 ) [submit] => ОК )
- 08.09.2016 21:20
Gesite, так у вас запрос не проходит или информация в запрос не вставляется?
- 09.09.2016 11:13
- Регистрация: 27.01.2015
- Сообщений: 34
- Репутация: 7
brainix,запрос проходит, а базу не обновляет, хотя ошибок нету
- 09.09.2016 11:53
Gesite, я же вам написал. Сделайте echo $sql; и запрос который выведется в браузер выполните через рнрmyadmin.
- 09.09.2016 12:17
- Регистрация: 27.01.2015
- Сообщений: 34
- Репутация: 7
brainix, дэмс, подставляя значения массива в PHPMYADMIN запросы проходят и по сути все правильно, только вот сам он не обновляет базу:
Код HTML:UPDATE ceni SET usluga='Array[0]', cena = 'Array[0]' WHERE id = 'Array[0]' Цена успешно обновлена! UPDATE ceni SET usluga='Array[1]', cena = 'Array[1]' WHERE id = 'Array[1]' Цена успешно обновлена! UPDATE ceni SET usluga='Array[2]', cena = 'Array[2]' WHERE id = 'Array[2]' Цена успешно обновлена! UPDATE ceni SET usluga='Array[3]', cena = 'Array[3]' WHERE id = 'Array[3]'
Последний раз редактировалось Gesite; 09.09.2016 в 12:39.
- 09.09.2016 13:41
Gesite, я бы сперва подготовил данные, а потом только вставлял, например, вот так
Код:$result = array(); foreach($array as $name => $data) { foreach($data as $key => $value) { $result[$key][$name] = $value; } }
Чтобы на выходе был более читаемый массив
Код:Array ( [0] => Array ( [id] => 1 [usluga] => [cena] => 0 ) [1] => Array ( [id] => 2 [usluga] => Зуб [cena] => 2 ) [2] => Array ( [id] => 3 [usluga] => Десна [cena] => 3003 ) [3] => Array ( [id] => 4 [usluga] => Протезирование [cena] => 11 ) )
Тогда вставлять можно будет так
Код:Ну и не забывайте о фильтрации входящих данных - входящие данные надо обрабатывать ВСЕГДА.<?php require 'connect.php'; $c = count($_POST['id']); foreach($result as $item) { $sql = "UPDATE `ceni` SET `usluga` = '" . $item['usluga'] . "', `cena` = '" . $item['cena'] . "' WHERE `id` = '" . $item['id'] . "'"; mysql_query ($sql) or die( mysql_error() ); echo '<p>Цена успешно обновлена!</p>'; }
- 09.09.2016 14:41
Gesite, вам самим то запрос подозрительным не кажется?
Когда не значения, а массивы в базу улетают. И конечно запрос не выполнится когда у вас нет поля id со значением Array[0]UPDATE ceni SET usluga='Array[0]', cena = 'Array[0]' WHERE id = 'Array[0]'
Вот прислушайтесь к тому что OKyJIucT говорит. - 09.09.2016 15:19
- Регистрация: 27.01.2015
- Сообщений: 34
- Репутация: 7
OKyJIucT, прошу прощения за назойливость, c Mysql я пока на Вы...
Поясните пожалуйста по-подробнее куда мы вставляем код:PHP код:И о фильтрации входящих данных...$result = array();
foreach($array as $name => $data) {
foreach($data as $key => $value) {
$result[$key][$name] = $value;
}
}
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Публикация одной новости одновременно в несколько рубрик | Общие вопросы поисковой оптимизации | 4 | 12.07.2015 09:31 |
Очень большая база данных mysql, есть ли способ загрузить ее не через import? | Web программирование | 2 | 24.11.2014 17:36 |
Экспорт/Импорт JoomShopping прямо через Mysql | Joomla | 3 | 28.02.2014 19:42 |
Несколько регионов через hCard - как правильно? | Вопросы от новичков | 7 | 08.12.2012 13:15 |
Вывод данных через сортировку в mysql | Web программирование | 0 | 20.08.2012 21:36 |