Geetha
Geetha

Reputation: 353

php - After validation why my select tag data get cleared

I am doing PHP validations for my html values. However when PHP validation fails and I return back to the page, the select tag form data is cleared. Is there anyway to do save and reload the form data in php

    <?php
$qualific=$passingyear="";
$qualificErr=$passingyearErr="";

if ($_SERVER['REQUEST_METHOD']== "POST") {
   $valid = true;
    //qualification validations starts here
     if(empty($_POST["qualif"]))
     {
         $qualificErr="* Qualification is Required";
         $valid=false;
     }
     else
     {
         $qualific=test_input($_POST["qualif"]);
     }
      //qualification validations starts here

      /*yearOfPassing validation starts here*/
       if(empty($_POST["yearpass"]))
     {
         $passingyearErr="* Year Of Pass is Required";
         $valid=false;
     }
     else
     {
         $passingyear=test_input($_POST["yearpass"]);
     }
      /*yearOfPassing validation starts here*/
     //if valid then redirect
  if($valid){
      include 'database.php';
      echo '<META HTTP-EQUIV="Refresh" Content="0; URL=success.php">';    
    exit;
  }  
}

<form method="post" action="<?php htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label>Qualification<span class="error">*</span>:</label>
    <select name="qualif">
      <option label="Select"></option>
      <option>Below SSC(10 Std)</option>
      <option>SSC(10 Std) passed</option>
      <option>HSC(12 Std) passed</option>
      <option>Graduate</option>
      <option>Post Graduate</option>
    </select>
    <span class="error"><?php echo $qualificErr?></span> <br />
    <br />
    <label>Year of passing<span class="error">*</span>: </label>
    <select name="yearpass">
      <option label="Select"></option>
      <option>1975</option>
      <option>1976</option>
      <option>1977</option>
    </select>
</form>

Upvotes: 0

Views: 373

Answers (4)

Sadikhasan
Sadikhasan

Reputation: 18600

You should use jquery

<script type="text/javascript">
$(document).ready(function()
{
  $("#id").val("<?php echo $_POST['qualif']; ?>");  
});
</script>

Upvotes: 0

M I
M I

Reputation: 3682

  1. your are missing value parameter inside <option>.
  2. you need to add some code inside <option> tag

Please try following code hope this will solve the issue.

<select name="qualif">
  <option label="Select"></option>
  <option value="Below SSC(10 Std)" <?php if($qualific == 'Below SSC(10 Std)') {?> selected <?php } ?>>Below SSC(10 Std)</option>
  <option value=">SSC(10 Std) passed" <?php if($qualific == '>SSC(10 Std) passed') {?> selected <?php } ?>>SSC(10 Std) passed</option>
  <option value="HSC(12 Std) passed" <?php if($qualific == 'HSC(12 Std) passed') {?> selected <?php } ?>>HSC(12 Std) passed</option>
  <option value="Graduate" <?php if($qualific == 'Graduate') {?> selected <?php } ?>>Graduate</option>
  <option value="Post Graduate" <?php if($qualific == 'Post Graduate') {?> selected <?php } ?>>Post Graduate</option>
</select>
<span class="error"><?php echo $qualificErr?></span> <br />
<br />
<label>Year of passing<span class="error">*</span>: </label>
<select name="yearpass">
  <option label="Select"></option>
  <option value="1975" <?php if($passingyear == '1975') {?> selected <?php } ?>>1975</option>
  <option value="1976"  <?php if($passingyear == '1976') {?> selected <?php } ?>>1976</option>
  <option value="1977" <?php if($passingyear == '1977') {?> selected <?php } ?>>1977</option>
</select>

Upvotes: 0

Moorthy GK
Moorthy GK

Reputation: 1301

Currently you are using <option> without values.

Use like :

<option value="SSC" <?php if(isset($_POST['qualif']) && $_POST['qualif'] == 'SSC') { echo "selected"; } ?> >SSC</option>

Upvotes: 0

DixonMD
DixonMD

Reputation: 93

try <?php if($_POST["qualif"] == "<value>") echo "selected"; ?> in each option tag.

like

<option <?php if($_POST["qualif"] == "Below SSC(10 Std)") echo "selected"; ?>>Below SSC(10 Std)</option>

Upvotes: 1

Related Questions