thara Posted May 18, 2012 Share Posted May 18, 2012 Hello...everyone... In my registration form I need to add some check boxes to select more than 1 option about teachers' class option. Larry's Effortless E-Commerce with PHP and MySQL book teach us how to use form input function for text, password and taxtarea inputs. So I modified the function for my check boxes. there I need to display a error message in my registration form when a user not select at least one option from the teacher option check boxes in my register page. further I need to display my error message above the check boxes as Larry did to textarea. I tried like this in my form function... but I can't get my error message... can anybody tell me where I have gone wrong???? this code is my form function. } elseif ($type == 'checkbox') { if ( $name == 'option[]' ) { // Display the error first: if (array_key_exists($name, $errors)) echo ' <span class="error">' . $errors[$name] . '</span>'; // Start creating the textarea: echo '<input type="' . $type . '" name="' . $name . '" value="1" class="checkbox" /> Individual<br />'; echo '<input type="' . $type . '" name="' . $name . '" value="2" class="checkbox" /> Small Groups <small>( Below 10 )</small><br />'; echo '<input type="' . $type . '" name="' . $name . '" value="3" class="checkbox" /> Medium Groups <small>( Between 10 to 20 )</small><br />'; echo '<input type="' . $type . '" name="' . $name . '" value="4" class="checkbox" /> Big Groups <small>( Over 20 )</small><br />'; echo '<input type="' . $type . '" name="' . $name . '" value="5" class="checkbox" /> Online Tuition<br />'; } if ( $name == 'medium[]' ) { // Display the error first: if (array_key_exists($name, $errors)) echo ' <span class="error">' . $errors[$name] . '</span>'; // Start creating the textarea: echo '<input type="' . $type . '" name="' . $name . '" value="1" class="checkbox" /> Hindi<br />'; echo '<input type="' . $type . '" name="' . $name . '" value="2" class="checkbox" /> English<br />'; echo '<input type="' . $type . '" name="' . $name . '" value="3" class="checkbox" /> Tamil<br />'; } }// End of primary IF-ELSE. These are my register.php page // Check for Institute Options: if(empty( $_POST['option'])) { $reg_errors['option'] = 'Please select at least one tuition option'; } else { $option = $_POST['option']; } // Check for Institute medium: if(empty( $_POST['medium'])) { $reg_errors['medium'] = 'Please select at least one tuition medium'; } else { $medium = $_POST['medium']; } This is My HTML part in register page <div> <label for="option">Tutoring Option <img src="../images/required_star.png" alt="required" /> : </label> <div class="checkbox1"> <?php create_form_input('option[]', 'checkbox', $reg_errors);?> </div> </div> <div> <label for="option">Tutoring Medium <img src="../images/required_star.png" alt="required" /> : </label> <div class="checkbox1"> <?php create_form_input('medium[]', 'checkbox', $reg_errors);?> </div> </div> any helps are greatly appreciated... thank you.. Link to comment Share on other sites More sharing options...
margaux Posted May 18, 2012 Share Posted May 18, 2012 Checkbox type is a different kind of input - you will need to loop thru the array of checkboxes and check if each one is 'checked'. If none are 'checked', then add to your error array. If I get time later, I'll try to put together some code. Link to comment Share on other sites More sharing options...
thara Posted May 18, 2012 Author Share Posted May 18, 2012 thanks for response.... but I am bit confusing with your answer. If u show me it through an example It will help me. further If u can, tell me what are the thing I have made mistake in my scripts.... Thank you. Link to comment Share on other sites More sharing options...
margaux Posted May 18, 2012 Share Posted May 18, 2012 Since more than one checkbox can be checked, I would give each one a unique name. You can use a for loop in your form function. In your validation, also use a for loop to check if each one isset (checking with empty won't work). I changed 'option' to 'group' as I found it more meaningful but you can use whatever name you want. You can use the same code for 'medium' by just changing a few values. add this to the html part of your register page <div> <label for="group">Tutoring Option : </label> <div class="checkbox1"> <?php for ($i=1, $count=5; $i <= $count; $i++) { create_form_input('group' . $i, 'checkbox', $reg_errors); } ?> </div> this is the validation - I added the error message to group[1] to position it above the list. $group = array(); for ($i=1, $count=5; $i <= $count; $i++) { if (isset($_POST['group'. $i])) { $group[] = $_POST['group'. $i]; } } // end for loop if (empty($group)){ $reg_errors['group1'] = 'Please select at least one tuition option'; } add this code to your form function right after if ($type == 'checkbox'){ if (preg_match('/group\d{1}$/', $name)) { $i = substr($name, -1); $groupVal = array(1=>'Individual', 'Small Groups <small>( Below 10 )</small>', 'Medium Groups <small>( Between 10 to 20 )</small>', 'Big Groups <small>( Over 20 )</small>', 'Online Tuition'); // Display the error first: if (array_key_exists($name, $errors)) echo ' <span class="error">' . $errors[$name] . '</span>'; echo '<input type="' . $type . '" name="' . $name . '" value="' . $i . '" class="checkbox" /> ' . $groupVal[$i] . '<br />'; } } 1 Link to comment Share on other sites More sharing options...
thara Posted May 19, 2012 Author Share Posted May 19, 2012 Thank you margaux... It working properly as I expect. But this code is hard to understand.... if (preg_match('/group\d{1}$/', $name)) { $i = substr($name, -1); $groupVal = array(1=>'Individual', 'Small Groups <small>( Below 10 )</small>', 'Medium Groups <small>( Between 10 to 20 )</small>', 'Big Groups <small>( Over 20 )</small>', 'Online Tuition'); // Display the error first: if (array_key_exists($name, $errors)) echo ' <span class="error">' . $errors[$name] . '</span>'; echo '<input type="' . $type . '" name="' . $name . '" value="' . $i . '" class="checkbox" /> ' . $groupVal[$i] . '<br />'; } } can you explain how it works.... and If I use select box in a form how can I display error massege like that.... further A select box display in the page with database values.. any comments are highly appreciated.... thank you.. Link to comment Share on other sites More sharing options...
margaux Posted May 19, 2012 Share Posted May 19, 2012 The first line uses a regular expression to see if $name matches the string 'group' plus one numeral. The second gets that numeral by taking the last character from $name, starting from the end of the string (a positive number would start from the beginning). Then I create an array to use for the display text for each checkbox. After checking for an error, I just echo it all out. For select, you can use something similar if ($type == 'select') { if (preg_match('/group\d{1,}$/', $name)) { $data = array(0 => 'Select One', 'Value1', 'Value2', 'Value3', 'Value4', 'Value5'); } echo '<select name="' . $name . '" id="' . $label . '"'; if (array_key_exists($name, $errors)) echo 'class="error"'; echo '>'; Use a foreach loop to loop through your select array. foreach ($data as $k => $v) { echo "<option value=\"$k\""; if ($value == $k) echo ' selected="selected"' ; echo ">$v</option>\n"; } // end foreach echo '</select>'; } To use d/b values, $q = ("SELECT value1, value_id FROM table"); $r = mysqli_query($dbc, $q); ?> <select id="value_id" name="value_id"> <option value=''></option> <?php while ($row = mysqli_fetch_array($r)) { echo "<option value=\"".$row['value_id']."\">".$row['value1']."</option>\n "; } ?> </select> 2 Link to comment Share on other sites More sharing options...
Recommended Posts