Обновить несколько полей одновременно через PHP (MYSQL)

(Ответов: 11, Просмотров: 812)
Страница 1 из 2 12 Последняя
  1. Студент
    • Регистрация: 27.01.2015
    • Сообщений: 34
    • Репутация: 7
    Всем добрый день. Скорее всего мой вопрос покажется вам слишком простым, но тем не менее второй день не могу решить поставленную задачу. Постараюсь расписать подробнее. Очень буду благодарен помощи.
    В общем надо обновить несколько полей одновременно.

    1 Файл
    Код HTML:
    <?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>
    2 Файл
    Код 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>';
    }
    
    
    
    
    
    
    ?>
    База
    Нажмите на изображение для увеличения.  Название:	smallsafetyshield.jpg  Просмотров:	2  Размер:	15.5 Кб  ID:	22000
    • 0
  2. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Gesite, скорее всего проблема здесь

    $sql = "UPDATE ceni SET usluga='$_POST[usluga][$i]', cena = '$_POST[cena][$i]' WHERE id = '$_POST[id][$i]'";
    Выведите этот запрос на экран, а потом скопируйте и выполните его в рнрmyadmin. Если выполнится, значит колдуйте над этой строкой в коде рнр.

    mysql_query deprecated (не кошерно). Замените на mysqli или PDO.
    • 1

    Спасибо сказали:

    OKyJIucT(09.09.2016),
  3. Студент
    • Регистрация: 27.01.2015
    • Сообщений: 34
    • Репутация: 7
    brainix, я добавил на вывод :
    Код HTML:
    <pre><?php print_r($_REQUEST) ?></pre>
    Итог такой:
    Код HTML:
    Array
    (
        [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] => ОК
    )
    Наглядно посмотреть как все отрабатывает можно по ссылке: http://a-die.ru/edit.php
    • 0
  4. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Gesite, так у вас запрос не проходит или информация в запрос не вставляется?
    • 0
  5. Студент
    • Регистрация: 27.01.2015
    • Сообщений: 34
    • Репутация: 7
    brainix,запрос проходит, а базу не обновляет, хотя ошибок нету
    • 0
  6. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Gesite, я же вам написал. Сделайте echo $sql; и запрос который выведется в браузер выполните через рнрmyadmin.
    • 0
  7. Студент
    • Регистрация: 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.
    • 0
  8. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    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>';
    }
    Ну и не забывайте о фильтрации входящих данных - входящие данные надо обрабатывать ВСЕГДА.
    • 0
  9. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Gesite, вам самим то запрос подозрительным не кажется?

    UPDATE ceni SET usluga='Array[0]', cena = 'Array[0]' WHERE id = 'Array[0]'
    Когда не значения, а массивы в базу улетают. И конечно запрос не выполнится когда у вас нет поля id со значением Array[0]

    Вот прислушайтесь к тому что OKyJIucT говорит.
    • 0
  10. Студент
    • Регистрация: 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;
        }



    И о фильтрации входящих данных...
    • 0
Страница 1 из 2 12 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
Публикация одной новости одновременно в несколько рубрик
Общие вопросы поисковой оптимизации 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

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры