html - Bootstrap 'form-group has-error' not working with php codes -


inputs don't turn red , not print error messages when i'm submitting empty fields. how can show error messages , make input boxes turn red when i'm sending empty fields code.

<?php     if ( !empty($_post)) {     require 'db.php';     // validation errors     $fnameerror     = null;     $lnameerror     = null;     $ageerror       = null;     $gendererror    = null;      // post values     $fname  = $_post['fname'];     $lname  = $_post['lname'];     $age    = $_post['age'];     $gender = $_post['gender'];      // validate input     $valid = true;     if(empty($fname)) {       $fnameerror = 'please enter first name';       $valid = false;     }      if(empty($lname)) {       $lnameerror = 'please enter last name';       $valid = false;     }      if(empty($age)) {       $ageerror = 'please enter age';       $valid = false;     }      if(empty($gender)) {       $gendererror = 'please select gender';       $valid = false;     }      // insert data     if ($valid) {       $pdo->setattribute(pdo::attr_errmode, pdo::errmode_exception);       $sql = "insert users (fname,lname,age,gender) values(?, ?, ?, ?)";       $stmt = $pdo->prepare($sql);       $stmt->execute(array($fname,$lname,$age,$gender));       $pdo = null;       header("location: index.php");     }   } ?>  <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <link   href="css/bootstrap.min.css" rel="stylesheet"> <script src="js/bootstrap.min.js"></script> </head>  <body>   <div class="container">     <div class="row">       <div class="row">         <h3>create user</h3>       </div>        <form method="post" action="create.php">         <div class="form-group <?php echo !empty($fnameerror)?'has-error':'';?>">           <label for="inputfname">first name</label>           <input type="text" class="form-control" required="required" id="inputfname" value="<?php echo isset($fname)?$fname:'';?>" name="fname" placeholder="first name">           <span class="help-block"><?php echo isset($fnameerror)?$fnameerror:'';?></span>         </div>         <div class="form-group <?php echo !empty($lnameerror)?'has-error':'';?>">           <label for="inputlname">last name</label>           <input type="text" class="form-control" required="required" id="inputlname" value="<?php echo isset($lname)?$lname:'';?>" name="lname" placeholder="last name">           <span class="help-block"><?php echo isset($lnameerror)?$lnameerror:'';?></span>         </div>         <div class="form-group <?php echo !empty($ageerror)?'has-error':'';?>">           <label for="inputage">age</label>           <input type="number" required="required" class="form-control" id="inputage" value="<?php echo isset($age)?$age:'';?>" name="age" placeholder="age">           <span class="help-block"><?php echo isset($ageerror)?$ageerror:'';?></span>         </div>         <div class="form-group <?php echo !empty($gendererror)?'has-error':'';?>">           <label for="inputgender">gender</label>           <select class="form-control" required="required" id="inputgender" name="gender" >             <option></option>             <option value="male" <?php echo isset($gender)?'selected':'';?>>male</option>             <option value="female" <?php echo isset($gender)?'selected':'';?>>female</option>           </select>           <span class="help-block"><?php echo isset($gendererror)?$gendererror:'';?></span>          </div>          <div class="form-actions">           <button type="submit" class="btn btn-success">create</button>           <a class="btn btn btn-default" href="index.php">back</a>         </div>       </form>      </div> <!-- /row -->   </div> <!-- /container -->  </body> </html> 

note:

  • if user submits form empty fields except gender, return true , go insert statement. overwrite value of $valid variable in every if() statement.

you can try instead assigning value on $valid variable:

if(empty($fname) || empty($lname) || empty($age) || empty($gender)){   $valid = "false"; } else {   $valid = "true"; } 
  • your form return false because of required = "required" attribute on input fields, form won't submit , won't able see result of conditions.

additional note:

  • you can use javascript achieve want without submitting form

if want sample of javascript, can give example.

first, want assign unique id attribute divs, input fields , <span>. , should hide first error message inside <span>

here example of first name field:

<div class="form-group" id="firstnamediv">   <label for="inputfname">first name</label>   <input type="text" class="form-control" id="firstnamefield" name="fname" placeholder="first name">   <span class="help-block" id="firstnamespan" style="display:none">please enter first name</span> </div> 

then create javascript with. (beware javascript case sensitive):

<script type="text/javascript">    function validateform(){      var firstname = document.getelementbyid('firstnamefield').value;     if(firstname == ''){       document.getelementbyid('firstnamediv').classname = 'form-group has-error';       document.getelementbyid('firstnamespan').style.display = 'block';       return false;     }     else if(firstname != ''){       document.getelementbyid('firstnamediv'.classname = ''form-group has-success';       document.getelementbyid('firstnamespan').style.display = 'none';     }    } </script> 

then, call javascript function have created, must set onsubmit attribute on <form>

<form method="post" action="create.php" onsubmit="return validateform();"> 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -