Checkboxes/Multiple Select Boxes in PHP
Posted on June 19, 2006 by snipe in PHP/mySQL
For the PHP newbie, checkboxes and/or multiple select listboxes can be baffling in the beginning. It’s actually not very hard at all, and is often one of the PHP newbie’s first experience with arrays.
The logic behind checkboxes and multiple select listboxes is identical. Because of this, we’ll get the HTML bit of it done for both:
A. Checkboxes
<input type=”checkbox” name=”foo[]” value=”1″>
<input type=”checkbox” name=”foo[]” value=”2″>
<input type=”checkbox” name=”foo[]” value=”3″>
(etc….)
B. Multiple Select Listboxes
<select name=”foo[]” size=”4″ multiple>
<option value=”apples”>Apples</option>
<option value=”oranges”>Oranges</option>
<option value=”pears”>Pears</option>
<option value=”grapes”>Grapes</option>
<option value=”mangos”>Mangos</option>
</select>
Getting the data out
Now we just have to write the PHP code that will be able to extract the data the user selected from the array we created ($foo[])
// check to be sure at least one option was selected
$foo = $_POST['foo'];
if (count($foo) > 0) {
// loop through the array
for ($i=0;$i<count($foo);$i++) {
// do something - this can be a SQL query,
// echoing data to the browser, or whatever
echo "<li>$foo[$i] \n";
} // end "for" loop
} // endif
Also check out:
If you think this article kicked ass, subscribe to the RSS feed or follow me on Twitter! Share with your friends, or leave a comment below (or better still, do both!) My entire concept of self-worth is in your hands, so that makes you kind of a big deal. Srsly.





Just wondering if you could give an example of how you would use the selected check boxes in a mysql query using a select statement… such as select * from mytable where check1=’value1′ AND check2=’value2′ AND….; my point is what if one of the check marks is left blank then your query wouldn’t return what you want because it would be searching for a AND check1=’ ‘…
You would dynamically construct the query.
$sql = “select * from table “;
// there is at least one checkbox selected
if (count($foo) > 0) {
$sql .=’ where ‘;
for ($i=0;$i
$sql .=” checkbox = ‘”.$foo[$i].”‘ AND “;
} // end “for” loop
}
You’d need to throw a counter in there too, to determine whether or not you’ve hit the last checked box value, and suppress the AND statement – or you’d make the last part of the sql statement something that you know will always be true.