Моя форма имеет переменное количество полей. Как я могу отправить каждое поле в MySQL базу данных с PHP? - PullRequest
0 голосов
/ 19 января 2020

я создаю форму ввода производства, которая дает операторам машин возможность вводить несколько партий продукции. Из-за этого окончательная форма может иметь различное количество строк при отправке в зависимости от того, выполнил ли оператор 1, 2, 3+ пакета. Каждая строка формы должна быть отправлена ​​в отдельную строку таблицы базы данных MySQL (при наличии трех пакетов каждая партия должна быть новой строкой в ​​таблице).

Я добавил JavaScript для добавления новых строк в форму HTML успешно, но у меня проблемы с получением кода PHP для отправки КАЖДОГО из строк в базу данных MySQL. Сейчас только первая строка формы отправляется в базу данных MySQL. Может ли кто-нибудь помочь мне исправить код PHP?

, который я включил с помощью приведенного ниже кода.

Индекс. html

<form class="needs-validation" id="productionEntryForm" action="php/production-entry.php" method="post" novalidate>
    <div class="row">
        <input type="date" id="productionDate" name="productionDate">
        <select id="operator" name="operator"></select>
        <select id="line" name="line"></select>
    </div>
    <div id="batchContainer">
        <div class="row" id="divBatch1">
            <select id="disc1" name="disc[]"></select>
            <select id="plastic1" name="plastic[]"></select>
            <select id="color1" name="color[]"></select>
            <input id="colorUsed1" type="number" name="colorUsed[]">
            <input id="plasticUsed1" type="number" name="plasticUsed[]">
            <input id="regrind1" type="number" name="regrind[]">
            <input id="firsts1" type="number" name="firsts[]">
            <input id="seconds1" type="number" name="seconds[]">
            <input id="colorChange1" type="number" name="colorChange[]">
        </div>
    </div>
    <div class="row">
        <input id="newDisc" type="button" onclick="addDisc()" value="New Disc">
        <button type="submit">Finish Run</button>
    </div>
</form>

production-entry. php

<?php
    $productionDate = $_POST['productionDate'];
    $operator = $_POST['operator'];
    $line = $_POST['line'];
    $disc = $_POST['disc'];
    $plastic = $_POST['plastic'];
    $color = $_POST['color'];
    $colorUsed = $_POST['colorUsed'];
    $plasticUsed = $_POST['plasticUsed'];
    $regrind = $_POST['regrind'];
    $firsts = $_POST['firsts'];
    $seconds = $_POST['seconds'];
    $colorChange = $_POST['colorChange'];

    $host = "localhost";
    $dbusername = "username";
    $dbpassword = "password";
    $dbname = "testDB";

    // Create connection
    $conn = new mysqli($host, $dbusername, $dbpassword, $dbname);
    if (mysqli_connect_error()){
        die('Connect Error (' . mysqli_connect_errno() .') ' . mysqli_connect_error());
    }
    else{
        $sql = "INSERT INTO PRODUCTION_ENTRY (PRODUCTION_DATE, OPERATOR, PRODUCTION_LINE, DISC, PLASTIC, COLOR, COLOR_USED_GRAMS, PLASTIC_USED_LBS, REGRIND_LBS, FIRSTS, SECONDS, COLOR_CHANGE)
        values ('$productionDate','$operator','$line','$disc','$plastic','$color','$colorUsed','$plasticUsed','$regrind','$firsts','$seconds','$colorChange')";
        echo $sql;
        if ($conn->query($sql)){
            echo "Data submitted successfully";
        }
        else{
            echo "Error: ". $sql ."<br>". $conn->error;
        }
        $conn->close();
    }
?>

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Вы можете использовать функцию multi_query, которая уже существует. Может быть, это поможет вам https://www.php.net/manual/en/mysqli.quickstart.multiple-statement.php

Примерно так

if(!empty($thingOne)) {
    $sql = "YOUR QUERY";
} else if(!empty($thingTwo)) {
    $sql.= "YOUR QUERY";
} else if(!empty($thingThree)) { 
    $sql.= "YOUR QUERY";
}

Затем вы просто выполняете запрос с функцией multi_query, как в PHP Manual.

Это должно работать, не проверял.

0 голосов
/ 19 января 2020

Имена полей ввода с [], например name = "disc []", будут отображаться на сервере как массивы.

Вам потребуется l oop в вашем коде php, извлекая значения от массивов и запуска нескольких вставок в сторону базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...