How To Retrieve Input Values for Checkboxes Properly


How To Retrieve Input Values for Checkboxes Properly? - PHP Script Tips - Processing Web Forms



If multiple input values are submitted with the same field name, like the case of a group of checkboxes, you should add ([]) to the end of the field name. This tells the PHP engine that multiple values are expected for this field. The engine will then store the values in an indexed array, and put the array as the "value" in $_REQUEST. In order to retrieve multiple values of checkboxes properly, you need to treat $_REQUEST[field_name] as an array. The following PHP script is an enhanced version of processing_forms.php that handles multiple values properly:

  $count = count($_REQUEST);
  print("Number of values: $count\n");
  foreach ($_REQUEST as $key=>$value) {
    if (is_array($value)) {
      print("  $key is an array\n");
      for ($i = 0; $i < count($value); $i++) {
         print("    ".$key."[".$i."] = ".$value[$i]."\n");
    } else { 
      print("  $key = $value\n");

Now you need to modify the submit_comments.php as:

  print("<html><form action=processing_forms.php method=post>");
  print("<table><tr><td colspan=2>Please enter and submit your"
    ." comments about</td></tr>");
  print("<tr><td>Your Name:</td>"
    ."<td><input type=text name=name></td></tr>\n");
  print("<tr><td>Site Visited:</td><td>"
    ."<input type=checkbox name=site[] value=dev>Dev FYI Center, "
    ."<input type=checkbox name=site[] value=sqa>SQA FYI Center, "
    ."<input type=checkbox name=site[] value=dba>DBA FYI Center "
  print("<tr><td>Like Site:</td>"
    ."<td><input type=checkbox name=rate></td></tr>\n");
    ."<td><input type=text name=comment></td></tr>\n");
  print("<tr><td colspan=2><input type=submit><td></tr></table>\n");

If you test the form by selecting two checkboxes, you will get something like this:

Number of values: 4
  name = Mary
  site is an array
    site[0] = dev
    site[1] = sqa
  rate = on
  comment = Good sites for developers.

2016-06-26, 12818👍, 1💬