Jump to content

Validated Input in drop down fields


VinceGledhill

Recommended Posts

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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>

 

 

Link to comment
Share on other sites

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>

Link to comment
Share on other sites

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>";
}
?>

 

Link to comment
Share on other sites

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>

Link to comment
Share on other sites

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
}
?>

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.