我试图在db中插入多个数据。如果连续检查复选框,我可以插入连续值的数据。如果我检查中间的复选框,它将不会插入数据。如果您能理解代码,请帮助我。对不起,如果我的英语和我的代码不好。需要帮助
代码看起来像
/[.]{20,}/
插入查询。
<?
$j=10;
for($i=1; $i<= $j; $i++) {
?>
<script>
$(function() {
$("#date<? echo $i; ?>").datepicker({
//showOn: both - datepicker will appear clicking the input box as well as the calendar icon
//showOn: button - datepicker will appear only on clicking the calendar icon
showOn: 'button',
buttonImage: 'dlcalendar_2.gif',
buttonImageOnly: true,
changeMonth: true,
changeYear: true,
showAnim: 'slideToggle',
dateFormat: 'yy-mm-dd'
});
});
</script>
<tr>
<td><input type="checkbox" name="day[]" value="1">
Day <?echo $i; ?> <input type="text" name="date[]" id="date<? echo $i; ?>"></td>
<td><textarea cols=50 rows=2 name="comment[]"></textarea></td>
<td colspan=2 align="center">
<select name="vas[]" >
<option>--choose--</option>
<option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option>
</select></td>
</tr>
<?
}
?>
如果我们有10行,如果我选择第2行,第7行和第9行,则必须只取这些行的值,并且必须插入所选行中的所有记录。
答案 0 :(得分:2)
这里的问题是day[]
数组只包含已选中的复选框,另一方面其他数组也包含空元素,因此只有在连续字段中输入值时,代码才有效。要解决此问题,您可以删除复选框并从date[]
数组的键中获取它们的值。您可以使用以下内容:
foreach ($_POST['date'] as $key => $date) {
if (!$date) {continue;}
// get the day value
$day = $key + 1;
$comment = mysql_real_escape_string($_POST['comment'][$key]);
$date = mysql_real_escape_string($date);
// check if vas is choosed
if ($_POST['vas'][$key] != "--choose--") {
$vas = mysql_real_escape_string($_POST['vas'][$key]);
} else {
$vas = "";
}
$insert = "insert into spinal(day,ddate,comments,vas) values('".$day2."',
'".$date."','".$comment."','".$vas."')";
echo $insert;
mysql_query($insert);}
我希望这会有所帮助。