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 everyif()
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 div
s, 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
Post a Comment