Таким образом, моя форма не принимала пустые данные, и это, конечно, было хорошо, но когда я просто добавил имя пользователя и адрес электронной почты, он принял бы его без пароля.
Я подумал, добавив этот кусок кода $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>