I have an issue that I 'm trying to solve. I searched in internet but nothing helped me.. I have multiple groups of checkboxes and I want to get their values and pass them in db. The problem is that only the first checkbox of group gets the right value. Here is my code :
Html code :
<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 code :
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 code :
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;
}
}
Can anyone help? I can't figure it out....
2 Mistakes:
1) In your PHP you check if the value of the checkbox is 1
or not, but in your HTML the values of the checkboxes are 1
, 2
, 3
, 4
. So either you set the checkboxes' values all to 1
in your HTML or you check against 1
thru 4
in your PHP - depending on what you want and how you decide to solve your 2nd mistake.
2) When checkboxes are posted only those checkboxes are part of the $_POST
array that are checked. This means that $_POST['place1'][0]
will be the first checked checkbox and not necessarily the first checkbox in the form with that name. You can solve this by using keys in the checkbox-name ( name="place1[0]"
, name="place1[1]"
and so on) or by using different values for each checkbox and checking against the values instead of against the keys (hints: look at in_array()
, array_values()
)
Other hints:
print_r($_POST);
so see what actually is posted to the PHP script - makes debugging a lot easier. @
to supress errors/notices: It's slow. It's bad coding (errors should be avoided, notices should be taken care of - instead of supressing them).
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.