Search code examples
phphttp-post

Get all variables sent with POST?


I need to insert all variables sent with post, they were checkboxes each representing a user.

If I use GET I get something like this:

?19=on&25=on&30=on

I need to insert the variables in the database.

How do I get all variables sent with POST? As an array or values separated with comas or something?


Solution

  • The variable $_POST is automatically populated.

    To see the entire contents of this array, just type

    var_dump($_POST);
    

    You can access individual values like this:

    $name = $_POST["name"];
    

    This, of course, assumes your form is using the typical form encoding (i.e. enctype=”multipart/form-data”

    If your post data is in another format (e.g. JSON or XML, you can do something like this:

    $post = file_get_contents('php://input');
    

    and $post will contain the raw data.

    Assuming you're using the standard $_POST variable, you can test if a checkbox is checked like this:

    if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes')
    {
         ...
    }
    

    If you have an array of checkboxes (e.g.

    <form action="myscript.php" method="post">
      <input type="checkbox" name="myCheckbox[]" value="A" />val1<br />
      <input type="checkbox" name="myCheckbox[]" value="B" />val2<br />
      <input type="checkbox" name="myCheckbox[]" value="C" />val3<br />
      <input type="checkbox" name="myCheckbox[]" value="D" />val4<br />
      <input type="checkbox" name="myCheckbox[]" value="E" />val5
      <input type="submit" name="Submit" value="Submit" />
    </form>
    

    Using [] in the checkbox name indicates that the selected values will be accessed by PHP script as an array. In this case $_POST['myCheckbox'] won't return a single string but will return an array consisting of all the values of the checkboxes that were checked.

    For instance, if I checked all the boxes, $_POST['myCheckbox'] would be an array consisting of: {A, B, C, D, E}. Here's an example of how to retrieve the array of values and display them:

      $myboxes = $_POST['myCheckbox'];
      if(empty($myboxes))
      {
        echo("You didn't select any boxes.");
      }
      else
      {
        $i = count($myboxes);
        echo("You selected $i box(es): <br>");
        for($j = 0; $j < $i; $j++)
        {
          echo $myboxes[$j] . "<br>";
        }
      }