Friday 26 June 2015

Get the value of multiple selected checkboxes with same name

This tutorial shows how to get the value of multiple selected checkboxes that have the same value to the "name" attribute.
For example, if you have a list of articles, and you want to delete only the selected articles, add a checkbox to each article.
The trick is to add square brackets to the value of the "name" attribute, like this, to each checkbox:
name="thename[]"
In this way, when the form with the selected checkboxes is send to the PHP script, the variable: $_POST['thename'] will contain a numeric Array with the values of the selected checkboxes, having the index: 0, 1, 2, ...; in their order.
$_POST['thename'][0] = 'value of the first selected checkbox';
$_POST['thename'][1] = 'value of the second selected checkbox';
...

• Here's an example that you can test it.
<?php
// If data send via POST, with the name "cbname"
if(isset($_POST['cbname'])) {
  $cbarray = $_POST['cbname'];       // gets the value of the selected checkboxes
  print_r($cbarray);       // outputs the array with data stored in $cbarray
}
else {
  echo 'Select the web sites you like:';
}
?>
<br/><br/>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="checkbox" name="cbname[]" value="coursesweb" />http://coursesweb.net<br/>
<input type="checkbox" name="cbname[]" value="marplo" />www.MarPlo.net<br/>
<input type="checkbox" name="cbname[]" value="php" />www.PHP.net<br/>
<input type="checkbox" name="cbname[]" value="google" />www.Google.com<br/>
<input type="submit" value="Send" />
</form>

If you select all the checkboxes in the code above, the PHP script will output this result (the array with the values of the selected checkboxes, stored in $cbarray ):
Array ( [0] => coursesweb [1] => marplo [2] => php [3] => google )


- If the value of the checkboxes is the Unique ID of some articles selected from your database, and you want to delete the selected articles, you can use the implode() function to add the selected IDs (separated by comma) into a string that will be added in the SQL query. You must use the same technique to the name of the checkbox, adding the square brackets.
Example:
$ids = $_POST['cbname'];
$sql = "DELETE FROM `table_name` WHERE `id` IN(".implode(',' $ids).")";
- implode(',' $ids) will return a string like this:   "id1, id2, id3, ....".

0 comments:

Post a Comment