phpvalidationrequired-field

Form validation using PHP


I want to validate my form so ALL of the fields are required. If a field is NOT inserted or left blank it will display an error message AFTER submission. Could anyone help?

Form

<html>  
<head>  
<title>Form Input Data</title> 
</head>
<table>  
<body><table border="1">
<table bgcolor="lightblue"></body>

     <form method="post" action="insert_ac.php"> 
    <br>
<tr><td align="left"><strong>Nurse Information</strong></td></tr>
<tr>
<td><font color="red">Please select your name</font></td>
</tr>
<tr>
<td>Fullname</td>
<td><select name="valuelist">;
<option value="valuelist" name="nurse_name" value='<?php echo $nurse_name;  ?>'></option>
<?php
$value=$_POST ["valuelist"];
$con = mysql_connect("localhost","root","") or die('Could not connect:'.mysql_error());
mysql_select_db("a&e", $con) or die('Could not select database.');

$fetch_nurse_name = mysql_query("SELECT DISTINCT Fullname FROM nurse");

while($throw_nurse_name = mysql_fetch_array($fetch_nurse_name)) {
echo '<option   value=\"'.$throw_nurse_name[0].'">'.$throw_nurse_name[0].'</option>';
 }
 echo "</select>";

?>
</td>
</tr>
<tr>
<td>Please register name here:</td>
<tr>  

        <td>Fullname</td>

       <td><input type="text" name="nurse_forename" size="30"> </td>

     </tr>
 </tr>

Solution

  • I would do something like this:

    $req = ['field1', 'field2', 'field...'];
    $status = true;
    foreach ($req as $field) {
        if (empty($_POST[$field])) {
            echo 'Field ' . $field . ' is empty';
            $status = false;
        }
    }
    if ($status) {
        // ok
    } else {
        // not okay!
    }
    

    You create an array ($req), with all field names and loop over them. Check every field against empty() (check the php manual for this function).

    Here is a better (and mostly) correct HTML snippet... Please indent properly and read any HTML tutorial for well formed code. Your HTML is **.

    <?php
    
    $value=$_POST["valuelist"];
    $con = mysql_connect("localhost","root","") or die('Could not connect:'.mysql_error());
    mysql_select_db("a&e", $con) or die('Could not select database.');
    
    $fetch_nurse_name = mysql_query("SELECT DISTINCT Fullname FROM nurse");
    
    ?>
    <html>
    <head>
        <title>Form Input Data</title> 
    </head>
    <body>
    
        <form method="post" action="insert_ac.php"> 
    
        <table border="1" bgcolor="lightblue">
            <tr>
                <td align="left"><strong>Nurse Information</strong></td>
            </tr>
            <tr>
                <td><font color="red">Please select your name</font></td>
            </tr>
            <tr>
                <td>Fullname</td>
                <td>
                    <select name="valuelist">
                        <option value="valuelist" value="<?php echo $nurse_name;  ?>"></option>
                        <?php
    
                        while($throw_nurse_name = mysql_fetch_array($fetch_nurse_name)) {
                            echo '<option value="'.$throw_nurse_name[0].'">'.$throw_nurse_name[0].'</option>';
                        }
                        ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Please register name here:</td>
            </tr>
            <tr>  
                <td>Fullname</td>
                <td><input type="text" name="nurse_forename" size="30"> </td>
            </tr>
        </table>
        </form>
    </body>
    </html>
    

    If you have only the two given fields, this would do it:

    $status = false;
    $name = '';
    
    if (!empty($_POST['nurse_forename'])) {
        $name = $_POST['nurse_forename'];
        $status = true;
    
    } elseif (!empty($_POST['valuelist'])) {
        $name = $_POST['valuelist'];
        $status = true;
    
    } else {
    
        $status = false;
        // none of nurse_forname OR valuelist is filled
        // abort.
    }