我有一个行数未知的表,你可以添加行和删除行和 当我使用带有php的javascript添加多行时,如何将所有表行数据保存到数据库中。
以下是表格行的示例: HTML:
<form action="#" method="post" id="myForm">
<div class="row clearfix">
<div class="col-md-12 column">
<table class="table table-bordered table-hover" id="tab_logic">
<thead>
<tr >
<th class="text-center">
#
</th>
<th class="text-center">
First Name
</th>
<th class="text-center">
Last Name
</th>
</tr>
</thead>
<tbody>
<tr id='addr0'>
<td>1</td>
<td><input type="text" name='fn' placeholder='First Name' tabindex="1" /></td>
<td><input type="text" name='ln' placeholder='Last Name' tabindex="2"/></td>
</tr>
<tr id='addr1'></tr>
</tbody>
</table>
</div>
</div>
<input type="button" id="add_row" class="pull-left" value="add row"/><input type="button" id='delete_row' class="pull-right" value="delete row"/><br/>
<input type="submit" class="btn" value="Submit" tabindex="5" name="addName" id="sub"/>
</form>
这是添加和删除行的代码 JQUERY:
$(document).ready(function(){
var i=1;
$("#add_row").click(function(){
$('#addr'+i).html("<td>"+ (i+1) +"</td><td><input name='fn' type='text' placeholder='First Name"+i+"' class='form-control'></td><td><input name='ln' type='text' placeholder='Last Name"+i+"' class='form-control input-md'></td>");
$('#tab_logic').append('<tr id="addr'+(i+1)+'"></tr>');
i++;
});
$("#delete_row").click(function(){
f(i>1){
$("#addr"+(i-1)).html('');
i--;
}
});
});
PHP:
if(isset($_POST['addName'])){
$userid = $database->getUserID();
if(isset($_POST['fn']) && isset($_POST['ln'])){
$firstname = $_POST['fn'];
$lastname = $_POST['fn'];
if(empty($_POST['fn'])){
$session->Error() = '*'
} else if(empty($_POST['ln'])){
$session->Error() = '*'
} else {
$database->AddUser = ('$userid', '$firstname', '$lastname');
}
}
}
答案 0 :(得分:1)
你走在正确的轨道上。要将数组作为POST
数据发送,您需要将[]
添加到元素名称。由于您还试图保持数组键匹配(名字和姓氏),因此您需要将i
放在数组名称中。然后在PHP中使用foreach()
循环数组。
所以而不是
name='fn' and name='ln'
使用
name='fn["+i+"]' and name='ln["+i+"]'
在PHP中:
if(isset($_POST['addName'])){
$userid = $database->getUserID();
if(isset($_POST['fn']) && isset($_POST['ln'])){
foreach ($_POST['fn'] AS $key=>$firstname){
$lastname = $_POST['ln'][$key];
if(empty($firstname)){
$session->Error() = '*'
} else if(empty($lastname)){
$session->Error() = '*'
} else {
$database->AddUser = ('$userid', '$firstname', '$lastname');
}
}
}
}
了解如何使用fn
在foreach()
数组上循环,然后将数组值与$key
匹配?如果此代码不起作用,请确保您的表单正在使用print_r($_POST)
正确发布数据,您应该看到两个数组,一个用于fn
,另一个用于ln
,且数组键匹配。< / p>