-1

Таким образом, моя форма не принимала пустые данные, и это, конечно, было хорошо, но когда я просто добавил имя пользователя и адрес электронной почты, он принял бы его без пароля.

Я подумал, добавив этот кусок кода $username = $email = $password = ""; что он примет новую запись, как только все поля будут заполнены, но вместо этого теперь он не принимает никаких записей, даже если они все заполнены.

Кажется, что этот код, который я добавил, не позволяет вводить новые записи, это не было моим намерением. Что будет более простым кодом, чтобы делать то, что я пытаюсь сделать здесь?

<?php 

    include('connection.php');

    if(isset($_POST["add"])) {

        // build a function that validates data
         function validateFormData($formData) {
            $formData = trim(stripslashes(htmlspecialchars($formData)));
            return $formData;
        }

        // check to see if inputs are empty
        // create variables with form data
        // wrap the data with our function

        // set all variables to empty by default
        $username = $email = $password = "";

        if(!$_POST["username"]) {
            $nameError = "Please enter a username <br>";
        } else {
            $name = validateFormData($_POST["username"]);
        }

        if(!$_POST["email"]) {
            $emailError = "Please enter your email <br>";
        } else {
            $email = validateFormData($_POST["email"]);
        }

        if(!$_POST["password"]) {
            $passwordError = "Please enter a password <br>";
        } else {
            $password = validateFormData($_POST["password"]);
        }

        // check to see if each variable has data
        if($username && $email && $password) {
                $query = "INSERT INTO users (id, username,  password,   email, signup_date, biography) VALUES (NULL,  '$username', '$password',     '$email', CURRENT_TIMESTAMP,  NULL)";

            if(mysqli_query($conn, $query)) {
                echo "<div class='alert alert-success'>New record in database!</div>";
            } else {
                echo "Error: ".$query."               <br>".mysqli_error($conn);
            }    
        }

    }



    /*
    MY SQL INSERT QUERY

    INSERT INTO users (id, username, password, email, signup_date,     biography) VALUES (NULL, 'jacksonsmith', 'abc123', 'jack@spade.com',   CURRENT_TIMESTAMP, 'Hello! I'm Jackson. This is my bio.');

    */

    ?>




    <!DOCTYPE html>

    <html>

        <head>

            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="viewport" content="width=device-width, initial-scale=1">

            <title>MySQL Insert</title>

            <!--Bootstrap CSS-->
            <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">

            <!--HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries-->
            <!--WARNING: Respond.js doesn't work if you view the page via file://-->
            <!--[if lt IE 9]>
                <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
                <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
                <![endif]-->
         </head>

        <body>
            <div class="container">
                <h1>MySQL Insert</h1>


            <p class="text-danger">* Required fields</p>
                <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]) ?>" method="post">
                    <small class="text-danger">*<?php echo $nameError; ?></small>
                    <input type="text" placeholder="Username" name="username"><br><br>

                    <small class="text-danger">* <?php echo $emailError; ?></small>
                    <input type="text" placeholder="Email" name="email">  <br><br>

                    <small class="text-danger">* <?php echo $passwordError; ?></small>
                    <input type="password" placeholder="Password" name="password"><br><br>

                    <input type="submit" name="add" value="Add Entry">
                </form>

            </div>

            <!--jQuery -->
            <script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>

            <!--Bootstrap JS-->
            <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>     
        </body>
    </html>

1 ответ1

1

$ name = validateFormData($ _ POST ["username"]);

Похоже, $name должно быть $username в этой строке, в противном случае $username всегда будет пустым во время проверки, чтобы решить, хотите ли вы выполнить SQL-запрос.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .