[英]How to insert multiple inputs with same name in php through ajax
I have html form that allowed to insert multiple input. 我有允许插入多个输入的html表单。 I am able to insert only first input.
我只能插入第一个输入。 How to insert multiple value in
php
passing through ajax
, My HTML form is as below. 如何通过
ajax
在php
插入多个值,我的HTML格式如下。
<tr>
<th>ID</th>
<td><input type="number" id="navid"></td>
</tr>
<tr>
<th>Menu IN</th>
<td><input type="text" name="menuin"></input></td>
</tr>
<tr>
<th>Menu ENG</th>
<td><input type="text" name="menueng"></input>
</td>
</tr>
User can add input field dynamically(dynamic add has be done by jquery) 用户可以动态添加输入字段(动态添加已由jquery完成)
It is not problem to pass if only one input group.
如果只有一个输入组,则通过不是问题。 But I want to pass multiple input if user add more than one.
但是,如果用户添加多个输入,我想传递多个输入。
And I've passed value as 我已经传递了价值
$("#submit").click(function(){
var navid = $("#navid").val();
var menuin = $("input[name='menuin']").val();
var menueng = $("input[name='menueng']").val();
$.ajax({
url: 'insert_nav.php',
type: 'post',
data: {navid:navid,menuin:menuin,menueng:menueng},
success: function(data){
alert(data);
$('#nav')[0].reset();
}
});
});
I've inserted input values passed by ajax as below 我插入了ajax传递的输入值,如下所示
if (isset($_POST["navid"]) && !empty($_POST["navid"])) {
$query1 =$con->prepare("INSERT INTO menu(cid, title, en_title) VALUES (:navid, :menuin, :menueng)");
$query1->bindParam(':menuin',$_POST["menuin"]);
$query1->bindParam(':menueng',$_POST["menueng"]);
$query1->bindParam(':navid', $_POST["navid"]);
$query1->execute();
$msg1 = 'Menu has inserted';
}
Now I want to insert multiple values. 现在,我想插入多个值。 How to do ?
怎么做 ?
HTML: HTML:
<form id="the_form">
<tr>
<th>ID</th>
<td><input type="number" name="navid[]" id="navid"></td>
</tr>
<tr>
<th>Menu IN</th>
<td><input type="text" name="menuin[]"></input></td>
</tr>
<tr>
<th>Menu ENG</th>
<td><input type="text" name="menueng[]"></input>
</td>
</tr>
<input type="submit" value="Submit Form" id="submit"/>
</form>
I added a name
for your ID so that it will be included when you submit the form, I just added a form tag since it was not present in your question. 我为您的ID添加了一个
name
,以便在您提交表单时将其包括在内。我刚刚添加了一个表单标签,因为它不在您的问题中。
JS: JS:
Read about serialize
(https://stackoverflow.com/questions/15173965/serializing-and-submitting-a-form-with-jquery-post-and-php)
$("#submit").click(function(){
var form_data = $("#the_form").serialize();
$.ajax({
url: 'insert_nav.php',
type: 'post',
data: {form_data:form_data},
success: function(data){
alert(data);
$('#nav')[0].reset();
}
});
});
PHP //Since the submitted data is now a collection of an array you'll have to loop through it to save them in the database as you cannot save an array directly in a DB. PHP //由于提交的数据现在是数组的集合,您将不得不遍历它,以将其保存在数据库中,因为您无法将数组直接保存在数据库中。
if (!empty($_POST["navid"])) {
for($counter = 0; $counter < sizeof($_POST["navid"]); $counter++){
$query1 =$con->prepare("INSERT INTO menu(cid, title, en_title) VALUES (:navid, :menuin, :menueng)");
$query1->bindParam(':menuin',$_POST["menuin"][$counter]);
$query1->bindParam(':menueng',$_POST["menueng"][$counter]);
$query1->bindParam(':navid', $_POST["navid"][$counter]);
$query1->execute();
$msg1 = 'Menu has inserted';
}
}
You have to apply array in input field for multiple input element. 您必须在输入字段中为多个输入元素应用数组。 And pass array through ajax and insert to database using foreach loop.
并通过ajax传递数组,并使用foreach循环插入数据库。
HTML HTML
<tr>
<th>ID</th>
<input type="number" name="navid[]" id="navid">
</tr>
<tr>
<th>Menu IN</th>
<td><input type="text" name="menuin[]"></input></td>
</tr>
<tr>
<th>Menu ENG</th>
<td><input type="text" name="menueng[]"></input>
</td>
</tr>
Ajax 阿贾克斯
$("#submit").click(function(){
var navid = [];
$('input[name="navid[]"]').each( function() {
navid.push(this.value);
});
var menuin = [];
$('input[name="menuin[]"]').each( function() {
menuin.push(this.value);
});
var menueng = [];
$('input[name="menueng[]"]').each( function() {
menueng.push(this.value);
});
$.ajax({
url: 'insert_nav.php',
type: 'post',
data: {navid:navid,menuin:menuin,menueng:menueng},
success: function(data){
alert(data);
$('#nav')[0].reset();
}
});
});
PHP PHP
foreach ($_POST["navid"] AS $key => $item){
$query1 =$con->prepare("INSERT INTO menu(cid, title, en_title) VALUES (:navid, :menuin, :menueng)");
$query1->bindParam(':menuin',$_POST["menuin"][$key]);
$query1->bindParam(':menueng',$_POST["menueng"][$key]);
$query1->bindParam(':navid',$item);
$query1->execute();
$msg1 = 'Menu has inserted';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.