Inky1231
Inky1231

Reputation: 85

Validating multiple check boxes with different names to make sure at least 1 is checked

I have a PHP form with several check boxes (not groups) with different names that when submitted get sent to an array and emailed. The problem I am having is that I am looking for a way to validate that at least one of the check boxes is checked upon submit. I know how to do one check box or to do check box groups but not this. How can this be done? If someone could point me in the right direction I would be grateful.

I am adding the code for the section of the form I am asking about.

  <form action="" method="post">



   <fieldset>
        <legend>
            Please Select at least one:
        </legend>
 <p class="style5">Type of Alleged Occurrence:<input name="occurrence" type="hidden"    value="<?php { print 'Type of Occurrence'; }?>"></p>
                            <font size="-1"   face="Arial, Helvetica, sans-serif" align="left">
                            <table style="width: 100%">
                                <tr><td   style="width: 21%; height: 57px;"><strong> Disruption:</strong><br><input name="obscene"   type="checkbox" value="Obscene Language" <?php if(isset($_POST['obscene'])) echo "checked"; ?>><label  id="obscene">Obscene language </label>
                                    </td><td   style="width: 33%; height: 57px;">
                                    <strong> Sexual Harassment:</strong><br><input name="sexharass" type="checkbox" value="Physical" <?php if(isset($_POST['sexharass'])) echo "checked"; ?>  ><label  id="sexharass">Physical </label>&nbsp;<span lang="en-us">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                    </span>&nbsp;<input name="sexharass" type="checkbox" value="Verbal" <?php if(isset($_POST['sexharass'])) echo "checked"; ?> ><label  id="sexharass2">Verbal </label>

<td  style="width: 21%; height: 57px;"><strong> Altercation:</strong>
<br><input name="altercation1" type="checkbox" value="Verbal" <?php if(isset($_POST['altercation1'])) echo "checked"; ?>><label id="Label3">Verbal</label>

 <input name="altercation1" type="checkbox" value="Physical" <?php   if(isset($_POST['altercation1'])) echo "checked"; ?> ><label id="Label4">Physical</label> <br>



                                    <td    style="width: 33%; height: 57px;"><strong>Involved in altercation:</strong><br>



 <input name="altercation2" type="checkbox" value="student/student" <?php if(isset($_POST['altercation2'])) echo "checked"; ?>><label id="Label3">Student/Student </label>


<input name="altercation2" type="checkbox" value="student/faculty-staff" <?php if(isset($_POST['altercation2'])) echo "checked"; ?>><label id="Label4">Student/Faculty-Staff </label>

<tr><td><strong> Theft/ Damage to Property:</strong><br><input name="property" type="checkbox" value="DACC" <?php if(isset($_POST['property'])) echo "checked"; ?>  ><label  id="property">DACC </label>&nbsp;<span lang="en-us">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="-1" face="Arial, Helvetica, sans-serif" align="left"><input name="property1" type="checkbox" value="Self" <?php if(isset($_POST['property'])) echo "checked"; ?> ><label  id="property3">Self </label>



</font>&nbsp;&nbsp;<br>
                                    </span><input name="property" type="checkbox" value="Faculty/Staff" <?php if(isset($_POST['property'])) echo "checked"; ?> ><label  id="property2">Faculty/Staff </label>




  </td>
   <td><strong> Threat of Harm to Self or Others:</strong><br><input name="harm" type="checkbox" value="Student/Student" <?php if(isset($_POST['harm'])) echo "checked"; ?>  >
<label  id="harm">Student/Student </label>&nbsp;<span lang="en-us">&nbsp;&nbsp;&nbsp;<font size="-1" face="Arial, Helvetica, sans-serif" align="left"><input name="harm2" type="checkbox" value="Self" <?php if(isset($_POST['harm'])) echo "checked"; ?> ><label  id="property2">Self </label>



</font><br>
                                    </span>
            <font size="-1" face="Arial, Helvetica, sans-serif" align="left">
                            <span lang="en-us"><input name="harm1" type="checkbox" value="Student/Faculty-Staff" <?php if(isset($_POST['harm'])) echo "checked"; ?> ><label  id="harm3">Student/Faculty-Staff </label>



            &nbsp;&nbsp;</span></font></td></tr>


<tr><td><strong> Drugs/Alcohol:</strong><br><input name="drugs" type="checkbox" value="Under the Influence" <?php if(isset($_POST['drugs'])) echo "checked"; ?>  ><label  id="drugs">Under the Influence </label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font size="-1" face="Arial, Helvetica, sans-serif" align="left"><input name="drugs" type="checkbox" value="Possession" <?php if(isset($_POST['drugs'])) echo "checked"; ?> ><label  id="drugs2">Possession </label>



</font>




   </td><td><strong> Other Occurrences:</strong><br><input name="other" type="checkbox" value="Student/Student" <?php if(isset($_POST['other'])) echo "checked"; ?>  ><label  id="other">Trespassing </label>&nbsp;<span lang="en-us">&nbsp;&nbsp;&nbsp;<font size="-1" face="Arial, Helvetica, sans-serif" align="left"><input name="other" type="checkbox" value="Other" <?php if(isset($_POST['other'])) echo "checked"; ?> ><label  id="other2">Other </label>



</font><br>
                                    </span>
            </td></tr>              </table><p></p>

Upvotes: 1

Views: 2647

Answers (1)

Ben D
Ben D

Reputation: 14479

Depending on your form structure, you're going to need to use the isset() check. Assuming you're NOT posting as an array (<input type='checkbox' name='cb[]' value='x' /><input type='checkbox' name='cb[]' value='x' />...etc, you can do it this way:

<form method='post'...>
<input type='checkbox' name='cb1' value='x' />
<input type='checkbox' name='cb2' value='x' />
</form>

validate with...

$require_one_of = array('cb1','cb2',...etc); //names of posted checkboxes
$one_set=false;
foreach($require_one_of as $key){
   if(isset($_POST[$key])){
      $one_set=true;
      break;
   }
}
if(!$one_set){
   //error handling
}

If you are posting as an array, then you can just check if the array is set:

<form method='post'...>
<input type='checkbox' name='cb[]' value='x' />
<input type='checkbox' name='cb[]' value='x' />
</form>

validate with

<?php
 if(!isset($_POST['cb'])){
   //error handling
}
?>

Note: I'm assuming here that you're using post as for form submission method

Upvotes: 1

Related Questions