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

209
02 мая 2017, 07:04

СУБД: 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;
?>
Answer 1

Имена переписываете в виде [$i]name, [$i]age, etc. Итого в POST вам придут данные в виде

[
 0 => [name => "", age => ""],
 1 => [name => "", age => ""],
]

Ну и конечно это все должно быть внутри одной формы, которая будет сабмититься.

READ ALSO
Производительность web-страницы и Electron/NW.js

Производительность web-страницы и Electron/NW.js

Как я понимаю Electron/NWjs по сути просто открывает окно браузера с нужным контентом, но если взять web-страницу и открыть её в Chrome и ту же саму страницу...

255
Не отображается объект в three.js

Не отображается объект в three.js

Я пишу код, для добавленияobj, созданного с помощью Blender, в three

215
Меняем задний фон для slick-slider

Меняем задний фон для slick-slider

Просмотрел весь slick-slider нашел пару функций типа afterChange и beforeChange но не могу разобраться, суть вопроса в том что есть слайдер с фотками людей...

265