30
Апр
2017

Записать в БД несколько строк сразу

СУБД: MySQL 5.5, сервер: Apache 24, PHP 7, пробую сделать без фреймворков.

Добрый день, столкнулся с такой проблемой:

На одной странице необходимо ввести количество добавляемых записей, на другой необходимо их заполнить и на третьей вывести результат обработки этих записей: сколько добавлено, какие не добавлены и почему.

Здесь я задаю поля для ввода:

for ($i = 0; $i < $num; $i++) {
    $id = 'id'.$i;$name = 'name'.$i;$age = 'age'.$i;$info = 'info'.$i;
    echo('
      <form action="#" method="post" id="add">
        <table>
          <tr><td>Id<td><input name=$id type="text" id=$id maxlength=3 size=5>
              <td>Name<td><input name=$name type="text" id=$name maxlength=7 size=12>
              <td>Age<td><input name=$age type="text" id=$age maxlength=3 size=5>
              <td>Info<td><input name=$info type="text" id=$info maxlength=20 size=15>
        </table>
    ');
}

echo('
  <p><input type="submit" value ="OK"></p>
  </form>
'); 

Здесь пытаюсь считать значения и передать их дальше, пробовал различными способами, остановился на этом.

Каким образом записать значения в массив FormData из нескольких строк? Или четыре массива для каждого поля сделать и передать их по одному?

$(function() {
  $("#add").submit(function() {
      var i = 0;
      var id="#id"+i;var name="#name"+i; var age="#age"+i;var info="#info"+i;
      for (i = 0; i < num; i++) {
          var id='#id'+i;var name='#name'+i; var age='#age'+i;var info='#info'+i;
          formData = {
            "id":$(id).val(),
            "name":$(name).val(),
            "age":$(age).val(),
            "info":$(info).val() 
          };     
      }
      alert(formData.id1[0]);
      $.ajax({
        url:'add_res.php'
        , type:'POST'
        , data:'jsonData=' + $.toJSON(formData)
        , success: function(res) {
            alert(res);
        }
    });
    return false;
});
});

Обработчик:

<?php
  $data = json_decode($_POST['jsonData']);
  $response = 'Получено записей '.count($data)."\n";
  foreach ($data as $key=>$value) {
    $response .= 'Параметр: '.$key.'; Значение: '.$value."\n";
  }
  echo $response;
?>

Источник: https://ru.stackoverflow.com/questions/660346/%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C-%D0%B2-%D0%91%D0%94-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D1%81%D1%82%D1%80%D0%BE%D0%BA-%D1%81%D1%80%D0%B0%D0%B7%D1%83

Share

Тебе может это понравится...