Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

getting multiple checkboxes names/id's with php

How can i get the names or id's of the multiple selected checkboxes on submit, using the PHP? Following is example form. Thanks.

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
   <input type="checkbox" name="orange" id="orange">
   <input type="checkbox" name="apple" id="apple">
   <input type="checkbox" name="sky" id="sky">
   <input type="checkbox" name="sea" id="sea">
   <br>
   <br>
   <input type="submit" name="Submit" value="Submit">
</form>
like image 620
John Avatar asked Jan 07 '11 23:01

John


2 Answers

Checkbox values are submitted from a form only if the checkbox is selected. What's more, it's the name attribute that counts, not the ID.

There are several ways of handling checkboxes in PHP:

  1. Give all checkboxes the same name followed by a pair of square brackets, so the entire set is treated as an array. In this case, give each checkbox a value.
  2. Give each checkbox a different name and a value.
  3. Give each checkbox a different name, but no value.

In each case, you need to check for the existence of the checkbox name in the $_POST array.

For example:

<input type="checkbox" name="color[]" id="orange" value="orange">
<input type="checkbox" name="color[]" id="apple" value="apple">

To get the values for these checkboxes:

if (isset($_POST['color'])) {
    $colors = $_POST['color'];
    // $colors is an array of selected values
}

However, if each checkbox has a different name and an explicit value like this:

<input type="checkbox" name="orange" id="orange" value="orange">
<input type="checkbox" name="apple" id="apple" value="apple">

You still need to use isset():

if (isset($_POST['orange'])) {
    // orange has been set and its value is "orange"
}

If you don't set a value, the default value is "on", but it won't be in the $_POST array unless it has been selected, so you still need to use isset().

like image 156
David Powers Avatar answered Oct 21 '22 11:10

David Powers


You need to give the inputs the same name:

<input type="checkbox" name="selection[]" value="orange">
<input type="checkbox" name="selection[]" value="apple">
<input type="checkbox" name="selection[]" value="sky">
<input type="checkbox" name="selection[]" value="sea">

Then iterate over the $_POST['selection'] array in PHP.

like image 40
Abdullah Jibaly Avatar answered Oct 21 '22 11:10

Abdullah Jibaly