Вставить в базу данных два разных массива из динамического ввода в одну и ту же таблицу

У меня есть форма с динамическими входами, в данном случае я беру владельца автомобиля с несколькими автомобилями, поэтому для одного и того же человека / клиента мне нужно сохранить несколько автомобилей с названием марки и модели года:

<form action="save.php" method="post">
    <label for="name">Name of owner</label>
    <input type="text" name="name" id="name">
<div class="field_wrapper"> <!--wrapper that help me in the javascript button-->
    <label for="car_model">Brand name</label>
    <select name="car_model[]" id="car_model">
        <option value="ford">Ford</option>
        <option value="honda">Honda</option>
        <option value="chevrolet">Chevrolet</option>
    </select>
    <label for="year">Year</label>
    <input type="number" name="year[]" id="year">
    <input type="button" class= "add_button" value="+" onClick="javascript:void(0);" title="add fields" style="width:25px"></td>
</div>
</form>

Я не знаю, сколько машин у него / нее, поэтому я использовал этот javascript для добавления и удаления полей ввода с помощью jQuery:

<script type="text/javascript">
    $(document).ready(function(){
    var maxField = 5; //Input fields increment limitation
    var addButton = $('.add_button'); //Add button selector
    var wrapper = $('.field_wrapper'); //Input field wrapper
    var fieldHTML = '<div><label for="car_model">Brand name</label><select name="car_model[]" id="car_model"><option value="ford">Ford</option><option value="honda">Honda</option><option value="chevrolet">Chevrolet</option></select><label for="year">Year</label><input type="number" name="year[]" id="year"><input type="button" class= "remove_button" value="-" onClick="javascript:void(0);" title="remove field" style="width:25px"></div>'; //New input field html 
    var x = 1; //Initial field counter is 1
    $(addButton).click(function(){ //Once add button is clicked
        if(x < maxField){ //Check maximum number of input fields
            x++; //Increment field counter
            $(wrapper).append(fieldHTML); // Add field html
        } else{
            alert('you reach the limit')
        }
        });
        $(wrapper).on('click', '.remove_button', function(e){ //Once remove button is clicked
            e.preventDefault();
            $(this).parent('div').remove(); //Remove field html
            x--; //Decrement field counter
            });
        });
</script>

Какая у меня цель? в некоторых случаях у меня будет несколько входов для одного и того же значения "name", поэтому я сохраняю название бренда как массивcar_model[] а также year[]. Я понимаю, что должен экономить в моемsave.php что-то вроде этого:

$name=$_POST['name'];
$array_car=$_REQUEST['car_model'];
$array_year=$_REQUEST['year']

Возникает проблема: как сохранить это в своей базе данных? Я пытаюсь сforeachно похоже это не самый лучший способ это сделать. Примечание: я знаю, как сохранить "обычную" форму, я имею в виду, что это будет что-то вроде:

$query="INSERT INTO cars ('name','car_model','year') VALUES ('$name','$car_model','$year')";

а переменные должны быть:

$name=$_POST['name'];
$car_model=$_POST['car_model'];
$year=$_POST['year'];

но как насчет этого времени? Спасибо за помощь, и я надеюсь, что на этот раз я объясню, что мне нужно, лучше

1 ответ

Сначала сохраните каждый массив и значения, которые вы получаете от POST

$name=$_POST['name'];
$array_car=$_REQUEST['car_model'];
$array_year=$_REQUEST['year'];

использовать sizeof() чтобы измерить размер массива и сохранить его в переменной независимо от того, какую, потому что оба будут иметь одинаковый размер:$size=sizeof($array_car);затем используйте ограничение цикла for по размеру, и, наконец, код будет выглядеть так:

<?php
include 'conexion.php';
$name=$_POST['name'];
$array_car=$_REQUEST['car_model'];
$array_year=$_REQUEST['year'];
$size=sizeof($array_car);
for($i=0;$i<$size;$i++){
    $query="INSERT INTO cars (owner,brand,year) VALUES ('$name','$array_car[$i]','$array_year[$i]')";
    if (mysqli_query($conn, $query)) {  
        } else {
            echo "Error: " . $query . "<br>" . mysqli_error($conn);
        }
}
mysqli_close($conn);
?>
Другие вопросы по тегам