我有一个问题,我正试图解决。我在网上搜索但没有帮助我..我有多组复选框,我想得到他们的值并在db中传递它们。问题是只有group的第一个复选框才能获得正确的值。这是我的代码:
Html代码:
<tr>
<th>Δημοτικός Κήπος</th>
<td align="center">
<span style="display:none;">
<input type="checkbox" name="place1[]" value="1" id="place1_1"/>
</span>
<img id="Imageplace1_1"
src="unchecked.jpg"
width="35"
height="35"
onclick="CheckBoxClicked('place1_1')"
style="cursor:pointer;"/>
</td>
<td align="center">
<span style="display:none;">
<input type="checkbox" name="place1[]" value="2" id="place1_2"/>
</span>
<img id="Imageplace1_2"
src="unchecked.jpg"
width="35"
height="35"
onclick="CheckBoxClicked('place1_2')"
style="cursor:pointer;"/>
</td>
<td align="center">
<span style="display:none;">
<input type="checkbox" name="place1[]" value="3" id="place1_3"/>
</span>
<img id="Imageplace1_3"
src="unchecked.jpg"
width="35"
height="35"
onclick="CheckBoxClicked('place1_3')"
style="cursor:pointer;"/>
</td>
<td colspan="2" align="center">
<span style="display:none;">
<input type="checkbox" name="place1[]" value="4" id="place1_4"/>
</span>
<img id="Imageplace1_4"
src="unchecked.jpg"
width="35"
height="35"
onclick="CheckBoxClicked('place1_4')"
style="cursor:pointer;"/>
</td>
</tr>
php代码:
if(isset($_POST['answeres'])) {
$place1[0] = (@$_POST['place1'][0]=='1')? $_POST['place1'][0]:'0';
$place1[1] = (@$_POST['place1'][1]=='1')? $_POST['place1'][1]:'0';
$place1[2] = (@$_POST['place1'][2]=='1')? $_POST['place1'][2]:'0';
$place1[3] = (@$_POST['place1'][3]=='1')? $_POST['place1'][3]:'0';
echo $place1[0]; //I get 1 if checked 0 if unchecked
echo $place1[1]; //I get 0 all the time
echo $place1[2]; //I get 0 all the time
echo $place1[3]; //I get 0 all the time
}
javascript代码:
var CheckBoxCheckedImage = new Image();
var CheckBoxUncheckedImage = new Image();
CheckBoxCheckedImage.src = "checked.jpg";
CheckBoxUncheckedImage.src = "unchecked.jpg";
function CheckBoxClicked(CheckBoxid) {
if(document.getElementById(CheckBoxid).value == "on"){
//if(document.getElementById(CheckBoxid).checked) {
document.getElementById(CheckBoxid).checked = false;
document.getElementById("Image"+CheckBoxid).src = CheckBoxUncheckedImage.src;
}
else{
document.getElementById(CheckBoxid).checked = true;
document.getElementById("Image"+CheckBoxid).src = CheckBoxCheckedImage.src;
}
}
有人可以帮忙吗?我无法理解......
答案 0 :(得分:1)
2个错误:
1)在PHP中,检查复选框的值是否为1
,但在HTML中,复选框的值为1
,2
,{{1 },3
。因此,要么在HTML中将复选框的值全部设置为4
,要么在PHP中检查1
至1
- 这取决于您的需求以及您决定解决问题的方式错误。
2)当发布复选框时,只有那些复选框是被检查的4
数组的一部分。这意味着$_POST
将是首先检查复选框,而不一定是具有该名称的表单中的第一个复选框。您可以通过使用复选框名称($_POST['place1'][0]
,name="place1[0]"
等)中的键或使用每个复选框的不同值并检查值而不是键来解决此问题(提示:看起来在in_array()
,array_values()
)
其他提示:
name="place1[1]"
,以便查看实际发布到PHP脚本的内容 - 使调试变得更加容易。print_r($_POST);
来阻止错误/通知:它很慢。这是错误的编码(应该避免错误,应该注意通知 - 而不是压制它们。)