У меня есть форма со stati c полями с одним динамическим c полем.
HTML
<form method="POST" action="" name="add_name" id="add_name">
<div class="form-group row">//static fields
<div class="col-sm-4">
<input type="text" class="form-control" id="asid" name="asid" placeholder="Enter Asset ID" required>
</div>
<div class="col-sm-4">
<input type="text" class="form-control" id="cost" name="cost" placeholder="Enter Cost">
</div>
</div>
<div class="form-group row">//dynamic field
<div class="col-sm-4">
<div id="dynamic_field">
<input type="text" class="form-control" name="customname[]" id="input-22" placeholder="Enter Field Name">
</div>
</div>
<div class="col-sm-4">
<button type="button" name="add" id="add" class="btn btn-success">Add More</button>
</div>
</div>
<button type="submit" name="submit" class="btn btn-primary px-5"><i class="icon-lock"></i> Submit</button>
</form>
Как вы можете видеть, customname [] field is dynamici c и будет увеличиваться нажатием кнопки «Добавить».
Мой JS
<script>
$(document).ready(function(){
var i=1;
$('#add').click(function(){
i++;
$('#dynamic_field').append('<div id="row'+i+'"><br><input type="text" name="customname[]" placeholder="Enter field name" class="form-control" /><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></div>');
});
$(document).on('click', '.btn_remove', function(){
var button_id = $(this).attr("id");
$('#row'+button_id+'').remove();
});
$('#submit').click(function(){
$.ajax({
url:"asset-add.php",
method:"POST",
data:$('#add_name').serialize(),
success:function(data)
{
alert(data);
$('#add_name')[0].reset();
}
});
});
});
</script>
Js работает нормально, без проблем.
Проблема с PHP
if(isset($_POST['submit']))
{
$asid=$_POST['asid'];
$cost=$_POST['cost'];
$customname = $_POST["customname"];
if(!empty($_POST["customname"])) {
foreach ($_POST["customname"] as $key => $value) {
$query=mysqli_query($con, "insert into asset (asid, cost, customname) value ('$asid', '$cost', '".value."' )");
}
}
}
PHP тоже хорошо. Я могу вставить в БД тоже.
В моей базе данных есть 4 столбца: ID (основной + автоинкремент), asid, стоимость, customname. Когда я заполняю форму и отправляю, значения asid и cost отправляются успешно, но для «customname» вставляется только текст «value», а не введенное мной значение.
Все, что я хочу, это пользователь может используйте любое количество дополнительных полей пользовательских имен, но все значения должны быть вставлены в одну строку под тем же идентификатором в базе данных.