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
Form 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
onso if you are doing a comparison you should look for that. Looking withissetis 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.