我之前问过这个问题,也许这次我更清楚了。我在input.php中有这个表单
此表的代码是
<div class="col-md-5 sec-col02">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Medicine Record</h3>
</div>
<div class="">
<form name="add_name" id="add_name">
<div class="table-responsive">
<table style="margin-left:4px; margin-top:4px;" class="table table-bordered" id="dynamic_field"> <tr id="medicen">
<td>Medicine Name</td>
<td>Hours</td>
<td>M</td>
<td>E</td>
<td>N</td>
<td>No Of Days</td>
<td>Add</td>
</tr>
<tr>
<td><input style="width:95px; " type="text" name="medname[]" placeholder="Medicine Name" class="form-control name_list" /></td>
<td><select style="width:70px;" name="frequency[]" class="form-control name_list">
<option value="24hours"> 24Hrs</option>
<option value="8hrs"> 8Hrs</option>
<option value = "12hrs">12Hrs</option></select></td>
<td><input style="width:15px; " name="morning1" type ="checkbox" value="M" class = "form-control name_list"/></td>
<td><input style="width:15px;" name="evening1" type ="checkbox" value="E" class = "form-control name_list"/></td>
<td><input style="width:15px;" name="night1" value="N" type ="checkbox" class = "form-control name_list"/></td>
<td><input style="width:80px;" type="text" name="days[]" placeholder="No Of Days" class="form-control name_list"/></td>
<td><button style="width:13dx;" type="button" name="add" id="add" class="btn btn-success">Add</button></td>
</tr>
</table>
</div>
</form>
</div>
</div>
我正在添加这样的新行:
$(document).ready(function(){
var i=1;
$('#add').click(function(){
i++;
$('#dynamic_field').append('<tr id="row'+i+'"><td><input style="width:95px; " type="text" name="medname[]" placeholder="Medicine Name" class="form-control name_list" /></td><td><select style="width:70px;" name="frequency[]" class="form-control name_list"><option value="24hours"> 24Hrs</option><option value="8hrs"> 8Hrs</option><option value = "12hrs">12Hrs</option></select></td><td><input style="width:15px; " name="morning'+i+'" type ="checkbox" value="M" class = "form-control name_list"/></td><td><input style="width:15px;" name="evening'+i+'" type ="checkbox" value="E" class = "form-control name_list"/></td><td><input style="width:15px;"name="night'+i+'" value="N" type ="checkbox" class = "form-control name_list"/></td><td><input style="width:80px;"type="text" name="days[]" placeholder="No Of Days" class="form-control name_list"/></td><td><button style="width:50px;"type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');
});
用户添加输入,可以勾选复选框,然后单击“提交”。可以有任意数量的行。
我已添加此行$('input[type=checkbox]').removeAttr('checked');
以确保未选中复选框。
在getdata.php中,当我尝试这段代码时
for($i = 0; $i < count($_POST['medname']); $i++){
$medName = mysqli_real_escape_string($con, $_POST['medname'][$i]);
$medFreq = mysqli_real_escape_string($con, $_POST['frequency'][$i]);
$medMorning = '';
if(isset($_POST['morning'.$i])){
$medMorning = $_POST['morning'.$i];
}
print_r($medName);
echo '<br/>';
print_r($medFreq);
echo '<br/>';
print_r($medMorning);
echo '<br/>';
}
echo $i." rows added";
正确打印出所有名称和相关频率。但是当我尝试获取复选框相关数据时,结果是:
一个 8小时
乙 24小时 中号 添加了2行 对于此实例,在第一行第一个复选框(M)被选中。在第二个它没有检查.Result在任何情况下给M。 我怎么想在每行中获得所有正确的值,无论是否检查过?
谢谢。
答案 0 :(得分:2)
修改强>
您正在使用name[]
表示法来获取$POST
中填充表单值的数组。如果您只有文本输入,这将有效。但是,对于复选框,如果不选中该复选框,则会出现没有添加任何值的问题。
对于您的用例,更好的解决方案是为每个添加的行定义单独的输入名称:
<td><input name="morning-0" type ="checkbox" value="M" /></td>
...
<td><input name="morning-1" type ="checkbox" value="M" /></td>
...
<td><input name="morning-2" type ="checkbox" value="M" /></td>
然后在PHP中动态读取值:
$medMorning = '';
if(isset($_POST['morning-' . $i])){
$medMorning = $_POST['morning-' . $i];
}
我认为你需要一些添加的JavaScript来生成单独的输入名称,但这并不是太麻烦。