помогите записать $_POST в бд

Тема в разделе "Как сделать...", создана пользователем Runapa, 24 дек 2015.

  1. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    64
    Симпатии:
    5
    Что-то я понять не могу, как такой массив -
    Код:
    Array
    (
    [u_id] => Array
    (
    [0] => 3d3aac5857cac816191a72ec0bddc14a
    [1] => 3ee6f2485868320575aa90235a69c90a
    [2] => 02cdcb3b3a61ded94c6952897549cffb
    [3] => 9ead3fd83050c97cce7188405363a9a0
    [4] => 0e7ed4bad9278b3a294f4ba78a009d26
    [5] => 3a075929e8f761f354ac983a6fb0599d
    )
    
    [point] => Array
    (
    [0] => 5
    [1] =>
    [2] =>
    [3] =>
    [4] =>
    [5] =>
    )
    
    [comment] => Array
    (
    [0] => qwerty
    [1] =>
    [2] =>
    [3] =>
    [4] =>
    [5] =>
    )
    
    [submit] => Сохранить
    )
    
    записать в бд.
    Имена полей совпадают с ключами.
    Помогите разобраться. Что-то не получается вывести что-то типа $row['u_id'].
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.199
    Симпатии:
    2.221
    PHP:
    foreach ($array[u_id] as $key => $value) {
    /// INSERT INTO `table` (`u_id`, `point`, `comment`) VALUES ($array[u_id][$key], $array[point][$key], $array[comment][$key])
    }
    Код не готовый, принцип работы описан
     
    ZiX и Runapa нравится это.
  3. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    64
    Симпатии:
    5
    А как можно определить, какой элемент изменился, и записать только его ?
     
  4. denverkurt

    denverkurt Denve®

    Регистр.:
    23 дек 2013
    Сообщения:
    694
    Симпатии:
    383
    можно сделать проверку на стороне клиента в браузере средствами скрытых полей и javascript, и отправлять форму только с измененными полями
    однако такой вариант может быть небезопасен, поскольку пользователь сможет умышленно подправить поля по своему усмотрению

    второй вариант - отправка всех данных на сервер, далее сервер делает выборку из таблицы, и методом перебора полей со сравнением определяет какие поля изменились. и делает запрос
    Код:
    UPDATE table SET ......
    но я не представляю себе, где бы это пригодилось на практике... быстрее и проще обновить все поля строки
     
    Горбушка нравится это.
  5. chirs

    chirs Создатель

    Регистр.:
    14 фев 2016
    Сообщения:
    24
    Симпатии:
    17
    я бы сделал так:
    PHP:
    for ($i 0$i count($_POST['u_id']); $i++) {
      if (!empty(
    $_POST['u_id'][$i])) {
        
    $find mysql_fetch_array(mysql_query('SELECT u_id FROM test_table WHERE u_id='.$_POST['u_id'][$i]));
        if (empty(
    $find)) {
          
    /* новая запись, добавляем */
          
    $sql 'INSERT INTO test_table (u_id,point,comment) VALUES ('.$_POST['u_id'][$i].','.
                  (empty(
    $_POST['point'][$i])?'null':$_POST['point'][$i]).','.
                  
    '"'.(empty($_POST['comment'][$i])?'null':$_POST['comment'][$i]).'")';
        } else {
          
    /* запись уже есть, обновляем */
          
    $sql 'UPDATE test_table SET '.
                 
    'point='.(empty($_POST['point'][$i])?'null':$_POST['point'][$i]).' ,'.
                 
    'comment="'.(empty($_POST['comment'][$i])?'null':$_POST['comment'][$i]).'" '.
                 
    'WHERE u_id='.$_POST['u_id'][$i];
        }
        
    mysql_query($sql);
      } else {
        echo 
    'u_id не может быть пустым !';
      }
    }
     
    denverkurt нравится это.