I just want to have php determines whether a checkbox is checked, but I am running into a problem of getting the right return. Help please.
My html code
<label>
<input name="Language" type="checkbox" id="aa" checked="checked" />
One</label>
<label>
<input name="Language" type="checkbox" id="bb" />Two</label>
<label>
<input type="checkbox" name="Language" id="cc" />Three</label>
I pass the values to php by the $_GET method
my php code:
$aa=$_GET["aa"];
$bb=$_GET["bb"];
$cc=$_GET["cc"];
echo $aa."<br>";
echo $bb."<br>";
echo $cc."<br>";
the output is true false false
I next want to just determine if each box is checked and if so, do something.
if ($aa == true) { $abc="checked";}
else { $abc="not checked"; }
if ($bb == true) { $cde="checked";}
else { $cde="not checked"; }
if ($fgh == true) { $fgh="checked";}
else { $fgh="not checked"; }
But the if statements always return true, even if the box is not checked. I tried variations of "===" and "!=", but it does not seem to work.
TIA
Try
isset()
I think your HTML code should be like
and then by using something like
$count = count($_GET["Language"]);
you can count the number of checkboxes checked.Or do
Then you can
foreach
over the arrayForm controls (with the exception of file inputs, and with some special rules for image inputs) always submit strings. There is no concept of a boolean in a query string or a form encoded POST body.
The id is irrelevant — only the name and value matter (at least as far as PHP is concerned).
Since you haven't given them values they will, IIRC, default to
on
so if you are doing a comparison you should look for that. Looking withisset
is simpler though. This is somewhat beside the point though, since your example gives them all the same name and value, so you can't differentiate between them.Additionally, due to an oddity of the PHP form data parser, you have to end the with
[]
if you want multiple elements with the same name.You probably want to do something like this:
Important: Note the addition of values and the change in name.
Then in PHP
$_GET['Language']
will be an Array of the values of the checked checkboxes, which you can loop over.In my PHP I got it from
$_POST['checkbox_name']
, and I found that the variable had the valueon
when the box was checked (i.e. it existed even if the checkbox was clear).