Computer Programming web Web programming Tips



Submit form with array of check boxes - PHP example

By Sergey Skudaev

Happy Amazon Prime Day July 12 - Exclusive Deals for Prime Members - Start Free 30-Day Trial

Recently, I used HTML form with array of check boxes. Previously, I wrote about ussing array of text input type. It is easy: on the form you just add brakets to the input text name fields.

print('<form name="arrayoffields" method="post" action="act_submit_check.php">');
for($i=0; $i<$count; $i++)
{
print('<input type="text" name="lastname[]" size="15"/>');
print('<input type="checkbox" name="confirm[]" />');
}

print('<input type="hidden" name="count" value="'.$count.'"/>');
print('<input type="submit" name="submit" value="Submit"/>');
print('</form>');




On act_submit_check.php page you write:

$lastname=array();
$confirm=array();
$count=0;

if(isset($_POST['lastname']));
$lastname=$_POST['lastname'];

if(isset($_POST['confirm']));
$confirm=$_POST['confirm'];

if(isset($_POST['count']));
$count=$_POST['count'];

for($i=0; $i<$count; $i++)
{
$sql="insert into mytable(name, confirm) values 
           ('".$lastname[$i]."', '".$confirm[$i]."')"; ....some code........ }
Problem with this code is that in array of check boxes an element of array exists only if check box is marked. For example, you have on your form 10 text boxes and 10 check boxes. Only the first, the fourth and the seventh text box is filled and only the first, the fourth and the seventh check box is marked. All the rest fields are blank.

The lastname array will have size of 10, but the confirm array of check boxes will have size of 3, because only 3 check boxes are marked. Visitor confirmed the first, the fourth and the seventh records, but in database wrong data will be inserted because the first, the second and the third element of checkboxes array will have value and no more elements of check boxes array will exist.

To fix the problem you have to assign an index and a unique value to each check box field. I use count.

print('<form name="arrayoffields" method="post" action="act_submit_check.php">');
for($i=0; $i<$count; $i++)
{
print('<input type="text" name="lastname[]" size="15"/>');
print('<input type="checkbox" name="confirm['.$count.' ]" value="'.$i.'"/ >');

}

print('<input type="hidden" name="count" value="'.$count.'"/ >');
print('<input type="submit" name="submit" value="Submit"/>');
print('</form> ');

Now your array of check boxes has 10 elements even if not all of them are marked.





for($i=0; $i<$count; $i++)
{
$markconfirm=0;

if($confirm[$i] !="")
$markconfirm=1;
$sql="insert into mytable(name, confirm) values ('".$lastname[$i]."', '".$markconfirm."')";

    if(!mysql_query($usql))
    {
    echo mysql_errno() . ": ";
    echo mysql_error() . "<br>";
    }
    else
    echo "Record inserted";

That is how you have to use array of check boxes on HTML form.

Alternatively, you may use text input instead of checkbox. JavaScript allows "mark" or "unmark" text input with 'X':

<input type="text" value="<?php echo $x; ?>" name="mycheckbox[]" id="mycheckbox" style="width:12px; height:12px;" onclick="if(this.value=='') this.value='X'; else this.value='';" />

Subscribe to our mail list to receive free code examples.

Comments

No comments yet.

Add Comment

* Required information
(never displayed)
 
Smile Sad Huh Laugh Mad Tongue Crying Grin Wink Scared Cool Sleep Blush Unsure Shocked
 
1000
Is ice cream hot or cold?
 
Enter answer:
Captcha
Refresh
 
Enter code:
 
Notify me of new comments via email.
 
Remember my form inputs on this computer.
 
I have read and understand the privacy policy. *
 
I have read and agree to the terms and conditions. *
 
 
Powered by Commentics

My eBooks on Amazon.com

Learn C++ Programming By Examples

Learn SQL Programming By Examples

Learn PHP Programming by Examples

Visual Basic Programming By Examples

How to Build Your Own Web Site from Scratch