VinceGledhill Posted April 26, 2011 Share Posted April 26, 2011 Hello people, thank you to everyone that has helped me on this forum. You have been terrific. I am submitting a form to a database and am having a small problem with the validation scripts. Basically if the user doesn't put something into one of the fields they get an error message. However, I am keeping the information already submitted in the input box with the following code <input type='text' name='username' size = '40' maxlength='30' value = '<?php echo $username; ?>'> This is so that the user doesn't have to input the same data again if he forgot one box. How do I do the same for "drop down" boxes? Here is the code from the form for the "ppr" (aviation terms 'Prior Permission Required') <select name = "ppr"> <option value = "Yes">Yes </option> <option value="No">No </option> </select> The problem I have is that there are quite a number of these drop down boxes on the form I have created. And it always goes back to the first "option value" when there is an error. I do have a variable for $ppr, please could someone tell me how to incorporate it so that the user doesn't have to select the correct option value all over again. Hope my explanation is clear. Thanks in advance. Quote Link to comment https://forums.phpfreaks.com/topic/234762-validated-input-in-drop-down-fields/ Share on other sites More sharing options...
Fadion Posted April 26, 2011 Share Posted April 26, 2011 For a small dropdown, you can do something like that: <select name = "ppr"> <option value = "Yes" <?php if ($_POST['name'] == 'Yes') { echo 'selected="selected"'; } ?>>Yes</option> <option value="No" <?php if ($_POST['name'] == 'No') { echo 'selected="selected"'; } ?>>No</option> </select> It basically checks post data for each <option> to see if it has it's own value and print the selected="selected" attribute (which as you guess, selected the option). If you have to deal with a lot of options, some of which may be big, I'd suggest you go for a dynamic way of creating dropdowns. It will be easier to generate and declare select conditions. Quote Link to comment https://forums.phpfreaks.com/topic/234762-validated-input-in-drop-down-fields/#findComment-1206473 Share on other sites More sharing options...
VinceGledhill Posted April 26, 2011 Author Share Posted April 26, 2011 Thanks for your reply GuiltyGear. Sorry, I obviously wasn't clear with the explanation of what I am after. I want the "selected" value to stay the same when an error occurs by a user not filling in one of the other boxes. At the moment it does this.... [square brackets represent the input html box or input dropdown] input 1[user input1 textbox] input 2[user input2 textbox] If the user doesn't put "something" into the input box then it is captured and they get an error message telling them to put "something" into the box. We capture what they did put into the other input box with the variable and put it back in. However, I would like to do the same with the drop down box, here is the code that works for the input box. <input type='text' name='alternative' size = '40' maxlength='30' value = '<?php echo $alternative; ?>'> Here is the code from the selection drop down. <select name = "ppr"> <option value = "Yes">Yes </option> <option value="No">No </option> </select> And here is the code for the whole script <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Untitled Document</title> </head> <body> <?php $host = 'localhost'; $usr = "VinnyG"; $password = 'thepassword'; $db_name = 'sitename'; $username = $_POST['username']; $height_above = $_POST['height_above']; $mb_diff = $_POST['mb_diff']; $alternative = $_POST['alternative']; $ppr = $_POST['ppr']; $general_location = $_POST['general_location']; $location_grid = $_POST['location_grid']; $runway_numbers = $_POST['runway_numbers']; $circuit_direction = $_POST['circuit_direction']; $circuit_height = $_POST['circuit_height']; $runway_length = $_POST['runway_length']; $surface = $_POST['surface']; $food = $_POST['food']; $radio_frequency = $_POST['radio_frequency']; $radio_callsign = $_POST['radio_callsign']; $radio_type = $_POST['radio_type']; $other_radio = $_POST['other_radio']; $fuel = $_POST['fuel']; $landing_fee = $_POST['landing_fee']; $operating_hours = $_POST['operating_hours']; $maintenance = $_POST['maintenance']; $hangarage = $_POST['hangarage']; $parking = $_POST['parking']; $accommodation = $_POST['accommodation']; $school = $_POST['school']; $remarks = $_POST['remarks']; $warnings = $_POST['warnings']; $weblinks = $_POST['weblinks']; $operator = $_POST['operator']; $google_image = $_POST['google_image']; $errorstring = ""; // default value of errorstring if(isset($_POST['submit'])) { // Validate all the code inputs if ($username =="") $errorstring = $errorstring. "Airfield Name<br>"; if ($height_above =="") $errorstring = $errorstring. "Height Above Mean Sea Level<br>"; if ($mb_diff =="") $errorstring = $errorstring. "mb Difference<br>"; if ($alternative =="") $errorstring = $errorstring. "Alternative Airfield<br>"; if ($general_location =="") $errorstring = $errorstring. "General Location<br>"; if ($location_grid =="") $errorstring = $errorstring. "Grid Reference<br>"; if ($runway_numbers =="") $errorstring = $errorstring. "Runway Numbers<br>"; if ($circuit_direction =="") $errorstring = $errorstring. "Circuit Direction<br>"; if ($circuit_height =="") $errorstring = $errorstring. "Circuit Height<br>"; if ($runway_length =="") $errorstring = $errorstring. "Runway Length<br>"; if ($radio_frequency =="") $errorstring = $errorstring. "Radio Frequency<br>"; if ($radio_callsign =="") $errorstring = $errorstring. "Radio Callsign<br>"; if ($other_radio =="") $errorstring = $errorstring. "Other Radio<br>"; if ($landing_fee =="") $errorstring = $errorstring. "Landing Fee<br>"; if ($remarks =="") $errorstring = $errorstring. "Remarks<br>"; if ($warnings =="") $errorstring = $errorstring. "Warnings<br>"; if ($weblinks =="") $errorstring = $errorstring. "Web Links<br>"; if ($operator =="") $errorstring = $errorstring. "Operator<br>"; if ($google_image =="") $errorstring = $errorstring. "Google Image<br>"; // does the errorstring = "nothing"? if ($errorstring !="") echo "You have not put anything in the following fields: <br><br> $errorstring"; //echo "If you have nothing to put in the box please type the word \"None\" or \"N\/A\""; //die ("Please try again, ensuring that you fill out all the fields!"); else { //echo "Your data has been saved"; //connect to database mysql_connect ("$host","$usr","$password") or die ('Error During Connect:<br>'.mysql_error()); mysql_select_db ("$db_name") or die ('Error Selecting DB:<br>'.mysql_error()); $insert_query = "INSERT INTO users (username, height_above, mb_diff, alternative, ppr, general_location, location_grid, runway_numbers, circuit_direction, circuit_height, runway_length, surface, food, radio_frequency, radio_callsign, radio_type, other_radio, fuel, landing_fee, operating_hours, maintenance, hangarage, parking, accommodation, school, remarks, warnings, weblinks, operator, google_image) VALUES ('$username', '$height_above', '$mb_diff', '$alternative', '$ppr', '$general_location', '$location_grid', '$runway_numbers', '$circuit_direction', '$circuit_height', '$runway_length', '$surface', '$food', '$radio_frequency', '$radio_callsign', '$radio_type', '$other_radio', '$fuel', '$landing_fee', '$operating_hours', '$maintenance', '$hangarage', '$parking', '$accommodation' , '$school', '$remarks', '$warnings', '$weblinks', '$operator', '$google_image')"; $insert_action = mysql_query($insert_query) or die ('Error During Insert :<br>'.mysql_error().'<br><br>Error occured running the following code :<br>'.$insert_query); echo "Thank you, Your airfield has been submitted."; // Output what the form looks like // End of how the form looks } } //} ?> <form name = "form1" method ="post" action=""> <table width="700" border="0" cellspacing="5" cellpadding="5" bgcolor = "#c9e1d0"> <caption> Submit Your Airfield Details </caption> <tr> <td width = "50"> </td> <td width = "240"> </td> <td width = "250"> </td> <td width = "160"><b>Example Input</b></td> </tr> <tr> <td> </td> <td>Airfield Name</td> <td><input type='text' name='username' size = '40' maxlength='30' value = '<?php echo $username; ?>'></td> <td>Ince Blundell</td> </tr> <tr> <td> </td> <td>Height Above MSL</td> <td><input type='text' name='height_above' size = '40' maxlength= '30'value = '<?php echo $height_above; ?>'></td> <td>65 Ft</td> </tr> <tr> <td> </td> <td>Mb Difference</td> <td><input type='text' name='mb_diff' size = '40' maxlength='40'value = '<?php echo $mb_diff; ?>'></td> <td>2 Mb</td> </tr> <tr> <td> </td> <td>Alternative Airfield</td> <td><input type='text' name='alternative' size = '40' maxlength='30' value = '<?php echo $alternative; ?>'></td> <td>Sherburn</td> </tr> <tr> <td> </td> <td>PPR?</td> <td><select name = "ppr"> <option value = "Yes">Yes </option> <option value="No">No </option> </select></td> <td>Yes</td> </tr> <tr> <td> </td> <td>General Location</td> <td><input type='text' name='general_location' size = '40' maxlength='50' value = '<?php echo $general_location; ?>' /></td> <td>3 Nm North Luton</td> </tr> <tr> <td> </td> <td>Location Grid Reference</td> <td><textarea name= "location_grid" input type = 'text' rows = "2" cols = "29" /><?php echo $location_grid; ?></textarea></td> <td> 53°57'7.68"N<br /> 1°10'30.33"W</td> </tr> <tr> <td> </td> <td>Runway Numbers</td> <td><textarea name= "runway_numbers" input type = 'text' rows = "5" cols = "29" /><?php echo $runway_numbers; ?></textarea></td> <td><p>This format please<br /> 05-23<br /> 18-36<br /> 14-22 </p></td> </tr> <tr> <td> </td> <td>Circuit Direction</td> <td><textarea name= "circuit_direction" input type = "text" rows = "5" cols = "29" /><?php echo $circuit_direction; ?></textarea></td> <td><p>05-LH<br /> 23-RH<br /> 14-LH </p></td> </tr> <tr> <td> </td> <td>Circuit Height</td> <td><input type='text' name='circuit_height' size = '40' maxlength='50' value = '<?php echo $circuit_height; ?>' /></td> <td>1000 Ft</td> </tr> <tr> <td> </td> <td>Runway Length</td> <td><input type='text' name='runway_length' size = '40'maxlength='50' value = '<?php echo $runway_length; ?>' /></td> <td>500m</td> </tr> <tr> <td> </td> <td>Runway Surface</td> <td><select name = "surface"> <option value = "Grass">Grass</option> <option value="Tarmac">Tarmac</option> <option value ="Concrete">Concrete</option> <option value = "Dirt">Dirt</option> </select></td> <td> </td> </tr> <tr> <td> </td> <td>Food?</td> <td><select name = "food"> <option value = "Cafe">Cafe</option> <option value="None">None</option> <option value ="Tea and Coffee">Tea and Coffee</option> <option value = "Make Your Own">Make Your Own</option> </select></td> <td> </td> </tr> <tr> <td> </td> <td>Radio Frequency</td> <td><input type='text' name='radio_frequency' size = '40'maxlength='50' value = '<?php echo $radio_frequency; ?>' /></td> <td>135.475</td> </tr> <tr> <td> </td> <td>Radio Callsign</td> <td><input type='text' name='radio_callsign' size = '40'maxlength='50' value = '<?php echo $radio_callsign; ?>' /></td> <td>Rufforth Traffic</td> </tr> <tr> <td> </td> <td>Radio Type</td> <td><select name = "radio_type"> <option value = "Sefety Com">Safety Com</option> <option value="Air Ground">Air Ground</option> <option value ="Approach">Approach</option> <option value = "Tower">Tower</option> </select></td> <td> </td> </tr> <tr> <td> </td> <td>Other Radio</td> <td><input type='text' name='other_radio' size = '40' maxlength='50' value = '<?php echo $other_radio; ?>' /></td> <td>E.G. if close to MATZ etc</td> </tr> <tr> <td> </td> <td>Fuel</td> <td><select name = "fuel"> <option value = "AvGas">AvGas</option> <option value="MoGas">MoGas</option> <option value ="AvGas and MoGas">AvGas and MoGas</option> <option value = "We will sort you some">We will sort you some</option> <option value = "None">None</option> </select></td> <td> </td> </tr> <tr> <td> </td> <td>Landing Fee</td> <td><input type='text' name='landing_fee' size = '40' maxlength='50' value = '<?php echo $landing_fee; ?>' /></td> <td> </td> </tr> <tr> <td> </td> <td>Operating Hours</td> <td><select name = "operating_hours"> <option value = "SR - SS">Sunrise - Sunset</option> <option value="See Remarks">Other - See Remarks</option> </select></td> <td> </td> </tr> <tr> <td> </td> <td>Maintenance?</td> <td><select name = "maintenance"> <option value = "Yes">Yes </option> <option value="No">No </option> </select></td> <td> </td> </tr> <tr> <td> </td> <td>Hangarage?</td> <td><select name = "hangarage"> <option value = "Yes">Yes </option> <option value="No">No </option> </select></td> <td> </td> </tr> <tr> <td> </td> <td>Parking?</td> <td><select name = "parking"> <option value = "Yes">Yes </option> <option value="No">No </option> </select></td> <td> </td> </tr> <tr> <td> </td> <td>Accommodation?</td> <td><select name = "accommodation"> <option value = "Yes">Yes </option> <option value="No">No </option> </select></td> <td> </td> </tr> <tr> <td> </td> <td>School?</td> <td><select name = "school"> <option value = "Flexwing">Flexwing </option> <option value="3 Axis">3 Axis</option> <option value="All Microlight">All Mircolight</option> <option value="GA">GA</option> <option value="Gyro">Gyro</option> <option value="Other See Remarks">Other, See Remarks</option> </select></td> <td> </td> </tr> <tr> <td> </td> <td>Remarks:</td> <td><textarea name= "remarks" input type = 'text' rows = "5" cols = "29" /><?php echo $remarks; ?></textarea></td> <td>As much info as possible 500 characters max</td> </tr> <tr> <td> </td> <td>Warnings:</td> <td><textarea name= "warnings" input="input" type = 'text' rows = "5" cols = "29" /><?php echo $warnings; ?></textarea></td> <td>As much info as possible 500 characters max</td> </tr> <tr> <td> </td> <td>Web Links</td> <td><textarea name= "weblinks" input="input" type = 'text' rows = "3" cols = "29" /><?php echo $weblinks; ?></textarea></td> <td>Link to airfield website</td> </tr> <tr> <td> </td> <td>Operator Details</td> <td><textarea name= "operator" input="input" type = 'text' rows = "3" cols = "29" /><?php echo $operator; ?></textarea></td> <td>As much info as possible</td> </tr> <tr> <td> </td> <td>Google Iframe Image</td> <td><textarea name= "google_image" input="input" type = 'text' rows = "5" cols = "29" /><?php echo $google_image; ?></textarea></td> <td>700 x 700 pixels please.</td> </tr> <tr> <td><input type='submit' name='submit' value='Have-It' /></td> <td> </td> <td> </td> <td> </td> </tr> </table> </form> </body> </html> Quote Link to comment https://forums.phpfreaks.com/topic/234762-validated-input-in-drop-down-fields/#findComment-1206499 Share on other sites More sharing options...
Pikachu2000 Posted April 26, 2011 Share Posted April 26, 2011 This is basically the same as what GuiltyGear posted (which should work just fine according to your description, BTW), utilizing an array to hold the <option> values (should give you some ideas how to easily handle large <select> fields . . . ) <?php $ppr_fields = array( 'Yes', 'No' ); ?> <select name = "ppr"> <?php foreach( $ppr_fields as $v ) { if( isset($_POST['ppr']) && $v == $_POST['ppr'] ) { $sel = 'selected="selected"'; } echo "<option value=\"{$v}\" {$sel}>{$v}</option>"; } ?> </select> Quote Link to comment https://forums.phpfreaks.com/topic/234762-validated-input-in-drop-down-fields/#findComment-1206634 Share on other sites More sharing options...
VinceGledhill Posted April 27, 2011 Author Share Posted April 27, 2011 Hi Pikachu2000 thank you for your reply. I have inserted your code and it worked a treat, thanks. I have tried to modify it for another field I have which has 4 options. See code below my altered field. The problem I have is that when I test it out, even though I have got "tarmac" selected, when I go back after submitting a form with another empty field (therefore running the error code) I get "dirt" which is the last one showing as selected. <?php $surface_fields = array( 'Grass', 'Tarmac', 'Concrete', 'Dirt' ); ?> <select name = "surface"> <?php foreach( $surface_fields as $v ) { if( isset($_POST['surface']) && $v == $_POST['surface'] ) { $sel = 'selected="selected"'; } echo "<option value=\"{$v}\" {$sel}>{$v}</option>"; } ?> Quote Link to comment https://forums.phpfreaks.com/topic/234762-validated-input-in-drop-down-fields/#findComment-1206772 Share on other sites More sharing options...
VinceGledhill Posted April 27, 2011 Author Share Posted April 27, 2011 I have tried the GuiltyGear and on the Yes / No option as indicated here... <select name = "ppr"> <option value = "Yes" <?php if ($_POST['ppr'] == 'Yes') { echo 'selected="selected"'; } ?>>Yes</option> <option value="No" <?php if ($_POST['ppr'] == 'No') { echo 'selected="selected"'; } ?>>No</option> </select> It works. However, when I modified it for a drop down with 4 options then it only shows the last option when I've actually clicked a different option? Any ideas? <select name = "surface"> <option value = "Grass" <?php if ($_POST['surface'] == 'Grass') { echo 'selected="selected"'; } ?>>Grass</option> <option value = "Tarmac" <?php if ($_POST['surface'] == 'Tarmac') { echo 'selected="selected"'; } ?>>Tarmac</option> <option value = "Concrete" <?php if ($_POST['surface'] == 'Concrete') { echo 'selected="selected"'; } ?>>Concrete</option> <option value = "Dirt" <?php if ($_POST['surface'] == 'Dirt') { echo 'selected="selected"'; } ?>>Dirt</option> </select> Quote Link to comment https://forums.phpfreaks.com/topic/234762-validated-input-in-drop-down-fields/#findComment-1206782 Share on other sites More sharing options...
Pikachu2000 Posted April 27, 2011 Share Posted April 27, 2011 Sorry, I forgot the line that initializes the $sel variable as empty before the comparison. Without it, as soon as one comparison returns TRUE, the variable stays set from the rest of the loop, causing the last option in the list to be selected. Also added a linebreak after each <option> to make the markup easier to read. See the comments in the code. <?php $surface_fields = array( 'Grass', 'Tarmac', 'Concrete', 'Dirt' ); ?> <select name = "surface"> <?php foreach( $surface_fields as $v ) { $sel = ''; // <---- ADD THIS if( isset($_POST['surface']) && $v == $_POST['surface'] ) { $sel = 'selected="selected"'; } echo "<option value=\"{$v}\" {$sel}>{$v}</option>\n"; // <---- ADDED \n linebreak } ?> Quote Link to comment https://forums.phpfreaks.com/topic/234762-validated-input-in-drop-down-fields/#findComment-1206943 Share on other sites More sharing options...
VinceGledhill Posted April 27, 2011 Author Share Posted April 27, 2011 Thanks Pikachu2000 all working now. You can see the results at http://www.microlight.co/index.php/additional Regards VinceG Quote Link to comment https://forums.phpfreaks.com/topic/234762-validated-input-in-drop-down-fields/#findComment-1207056 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.