Ajax с несколькими записями для вставки в базу данных - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть блок кода, который представляет собой динамически генерируемый div с формой (основанной на цикле массива), которая имеет динамические входы, которые добавляются кнопкой:

<?php foreach($tickerDisplays as $key => $ticker):?>

    <form id="Items" method="post">
        <label id="ItemLabel">Item 1: </label>
        <input type="text" name="Items[]"><br/>
        <button type="button" class="moreItems_add">+</button>

        <input type="hidden" name="tickerID" id="tickerID" value="<?php echo $ticker['ticker'] ?>">
        <input type="submit" name="saveTickerItems" value="Save Ticker Items">  
    </form>

<?php endforeach;?>


<script type="text/javascript">

$("button.moreItems_add").on("click", function(e) {
var tickerID = $('#tickerID').val();
  var numItems = $("input[type='text']", $(this).closest("form")).length;
  if (numItems < 10) {
    var html = '<label class="ItemLabel">Item ' + (numItems + 1) + ': </label>';
    html += '<input type="text" name="Items[]"/><br/>';
    $(this).before(html);
    console.log(tickerID);
  }
});

</script>

Этот код выше работает ипросто позволяет кнопке «+» добавить новый вход.Я получаю входные значения, а также идентификатор tickerID из своего скрытого ввода при подготовке к отправке ajax.Я получаю то, что ожидаю от сериализованной формы, но у меня есть проблема.

Следующий код:

<script type="text/javascript">
    $("#Items").submit(function(e) {
        e.preventDefault();
        var data = $("#Items").serialize();
        console.log(data);
    });
</script>

Печатает это:

Items%5B%5D=this&Items%5B%5D=is&Items%5B%5D=test&tickerID=1

Какие яожидать.Проблема в том, что с моим вызовом ajax моей функции вставки mysql мне нужно вставить одну запись для каждого значения плюс идентификатор tickerID.Моя вставка sql вставляет в столбцы tickerID и контент.Поэтому для указанного выше файла console.log мне понадобится следующая вставка:

tickerID   |   content
----------------------
1               this
1               is
1               test

Как правильно передать данные формы в ajax, а затем сделать что-то вроде foreach для вставки нескольких записей?

ajax call

<script type="text/javascript">

$("#Items").submit(function(e) {

    $.ajax({
       type: "POST",
       url: addticker.php,
       data: form.serialize(), // serializes the form's elements.
       success: function(data)
       {
           alert(data); // show response from the php script.
       }
     });

    e.preventDefault(); // avoid to execute the actual submit of the form.
});

</script>

addticker.php

$tickerID = $_POST[''];
$content = $_POST[''];

$addTicker = "
    INSERT INTO tickerTable (tickerID, content)
    values ('$tickerID', '$content');
"
$mysqlConn->query($addTicker)

1 Ответ

0 голосов
/ 13 сентября 2018

Надеюсь, что это работает.

    $items = $_POST['Items'];
    $tickerID = $_POST['tickerID'];

    foreach ($items as $item){

        $addTicker = "
            INSERT INTO tickerTable (tickerID, content)
            values ('$tickerID', '$item');
         "
         $mysqlConn->query($addTicker);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...