首页 > 解决方案 > 我创建了一个表单并将其连接到 mysql,并且我添加了验证表单的代码,但它不起作用

问题描述

我已经创建了一个注册表单并将其连接到 mysql,并且数据已成功输入到数据库的表中现在我想在表单上添加验证我有一个文件 index.html,其中我有一个表单正文的代码,第二个文件是连接.php,我现在有数据库连接代码和验证代码,当我运行程序时,我可以在表单中添加数据并将其保存在数据库中,但验证代码不起作用

这是我的代码

<?php
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$mail = $_POST['mail'];
$password = $_POST['password'];
$age = $_POST['age'];
$gender = $_POST['gender'];

//database Connection


$conn = new mysqli('localhost', 'root', '', 'codetodesign');

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
} else {
$stmt = $conn->prepare("insert into registration(firstName, lastName, mail, password, age, gender) 
values(?, ?, ?, ?, ?, ?)");
    $stmt->bind_param("sssssi",$firstname, $lastname, $mail, $password, $age, $gender);
    $stmt->execute();
echo "Registration successfully";
$stmt->close();
$conn->close();
}

//Validation data

$firstnameErr = $lastnameErr = $mailErr = $passwordErr = $ageErr = $genderErr = "";
$firstname = $lastname = $mail = $password = $age = $gender = "";

if ($_SERVER["REQUEST_METHOD"] == "POST"){
if (empty($_POST["firstname"])){
    $firstnameErr = "Firstname is required";
} else {
    $firstname = test_input($_POST["firstname"]);
}

if (empty($_POST["lastname"])){
    $lastnameErr = "lastname is required";
} else {
    $lastname = test_input($_POST["lastname"]);
}

if (empty($_POST["mail"])){
    $mailErr = "Mail is required";
} else {
    $mail = test_input($_POST["mail"]);
}

if (empty($_POST["password"])){
    $passwordErr = "Password is required";
} else {
    $password = test_input($_POST["password"]);
}

if (empty($_POST["age"])){
    $ageErr = "Age is required";
} else {
    $age = test_input($_POST["age"]);
}

if (empty($_POST["gender"])){
    $genderErr = "Gender is required";
} else {
    $gender = test_input($_POST["gender"]);
}
}

function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

标签: javascriptphphtmlcssmysql

解决方案


希望你喜欢你的编码之旅。在这里,我对您的询问和方法进行了一些修改。

修改:

  • 我们采用一个名为errors的数组变量,我们将在其中存储错误
  • 如果我们发现任何错误,我们会将它们存储在我们的错误变量中
  • 然后我们将在将数据插入数据库之前检查验证错误数组是否为空
  • 如果错误为空,我们只需将数据存储到数据库中。
  • 如果不是,我们将从错误变量中捕获所有错误,并将这些错误显示在我们的form(index.php)文件中。
  • 请遵循以下两个文件的代码,希望您能轻松理解。

祝你好运。

进程.php

<?php
    
        //database Connection
        $conn = new mysqli('localhost', 'root', '', 'codetodesign');
    
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }
    
        //error array
        $errors = array();
        $success = null;
    
        if ($_SERVER["REQUEST_METHOD"] == "POST"){
    
            $firstname = $_POST['firstname'];
            $lastname = $_POST['lastname'];
            $mail = $_POST['mail'];
            $password = $_POST['password'];
            $age = $_POST['age'];
            $gender = $_POST['gender'];
    
    
            if (empty($firstname)){
                $errors['f_name'] = "Firstname is required";
            } else {
                $firstname = test_input($_POST["firstname"]);
            }
    
            if (empty($lastname)){
                $errors['l_name'] = "lastname is required";
            } else {
                $lastname = test_input($_POST["lastname"]); 
            }
    
            if (empty($mail)){
                $errors['mail'] = "Mail is required";
            } else {
                $mail = test_input($_POST["mail"]);
            }
    
            if (empty($password)){
                $errors['password'] = "Password is required";
            } else {
                $password = test_input($_POST["password"]);
            }
    
            if (empty($age)){
                $errors['age'] = "Age is required";
            } else {
                $age = test_input($_POST["age"]);
            }
    
            if (empty($gender)){
                $errors['gender'] = "Gender is required";
            } else {
                $gender = test_input($_POST["gender"]);
            }
    
            if(!empty($errors)) {
                $errors['msg'] = "Please fillup the below required fileds";
            } else {
                    $stmt = $conn->prepare("insert into registration(firstName, lastName, mail, password, age, gender) 
                    values(?, ?, ?, ?, ?, ?)");
                        $stmt->bind_param("sssssi",$firstname, $lastname, $mail, $password, $age, $gender);
                    //$stmt->execute();
                    if($stmt->execute()) {
                        $success = "Registration successfully";
                    }
                $stmt->close();
                $conn->close();
            }
        }
    
        function test_input($data) {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            return $data;
        }
    ?>

索引.php

<?php include('process.php') ?>

<!DOCTYPE html>
<html>
<head>
    <title>Test From</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
<body>
    <div class="container col-md-6">
        <h1>Simple Form Registrarion</h1>
        <h5 class="text-success"><?php if($success != null) echo $success; ?>
        <h5 class="text-danger"><?php if(!empty($errors) && !empty($errors['msg'])) echo $errors['msg']; ?></h5>
        <form action="index.php" method="POST">
          <div class="form-group">
            <label for="exampleInputfname">First Name</label>
            <input type="text" name="firstname" class="form-control" id="exampleInputfname" aria-describedby="fnameHelp" placeholder="Enter First Name">
            <small id="fnameHelp" class="form-text text-danger"><?php if(!empty($errors) && !empty($errors['f_name'])) echo $errors['f_name']; ?></small>
          </div>
          <div class="form-group">
            <label for="exampleInputlname">Last Name address</label>
            <input type="text" name="lastname" class="form-control" id="exampleInputlname" aria-describedby="lnameHelp" placeholder="Enter Last Name">
            <small id="lnameHelp" class="form-text text-danger"><?php if(!empty($errors) && !empty($errors['l_name'])) echo $errors['l_name']; ?></small>
          </div>
          <div class="form-group">
            <label for="exampleInputEmail1">Email address</label>
            <input type="email" name="mail" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" placeholder="Enter email">
            <small id="emailHelp" class="form-text text-danger"><?php if(!empty($errors) && !empty($errors['mail'])) echo $errors['mail']; ?></small>
          </div>
          <div class="form-group">
            <label for="exampleInputPassword1">Password</label>
            <input type="password" name="password" class="form-control" id="exampleInputPassword1" placeholder="Password" aria-describedby="passHelp">
             <small id="passHelp" class="form-text text-danger"><?php if(!empty($errors) && !empty($errors['password'])) echo $errors['password']; ?></small>
          </div>

          <div class="form-group">
            <label for="exampleInputgender">Gender</label>
            <div class="form-check">
              <input class="form-check-input" name="gender" value="1" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
              <label class="form-check-label" for="exampleRadios1">
                Male
              </label>
            </div>
            <div class="form-check">
              <input class="form-check-input" name="gender" value="2" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
              <label class="form-check-label" for="exampleRadios2">
                Female
              </label>
            </div>
            <div class="form-check">
              <input class="form-check-input" name="gender" value="3" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
              <label class="form-check-label" for="exampleRadios2">
                Other
              </label>
            </div>
          </div>
          <div class="form-group">
            <label for="exampleInputage">Age</label>
            <input type="number" name="age" class="form-control" id="exampleInputage" aria-describedby="emailHelp" placeholder="Enter age">
            <small id="emailHelp" class="form-text text-danger"><?php if(!empty($errors) && !empty($errors['age'])) echo $errors['age']; ?></small>
          </div>

          <button type="submit" name="register" class="btn btn-primary">Register</button>
        </form>
    </div>
</body>

    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

</html>

推荐阅读