I am trying to set up a website registration page that will post to my MySQL database
I have the following file, mypage.php, coded as follows
<!DOCTYPE html>
<?php
$dbServername = "mysite.com";
$dbUsername = "username";
$dbPassword = "12345";
$dbName = "databasename";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
if($conn){ echo "Connected!";}
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$firstname = mysqli_real_escape_string($_POST['firstname']);
$lastname = mysqli_real_escape_string($_POST['lastname']);
}
$sql = "INSERT INTO registration (firstname, lastname) VALUES ('$firstname', '$lastname')";
mysqli_query($conn, $sql);
mysqli_close($conn);
?>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
crossorigin="anonymous"
/>
<link rel="stylesheet" href="style/styles.css" />
<!--<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>-->
<link rel="shortcut icon" href="#" />
<meta
name="description"
content="content here"
/>
<title>Title | Pagename</title>
</head>
<body>
<nav class="nav">
<div class="container">
<div class="row">
<div class="col-md-4">
<span
><a href="index.html" class="logo"
>Name </a
></span
>
<span class="logo2"
>Some text.</span
>
</div>
<div class="col-md-8 menu-padding">
<span class="menu menu-span"
><a href="index.html" class="menu-link">Home</a>
</span>
<span class="menu menu-span">
<a href="about.html" class="menu-link">About</a>
</span>
<span class="menu menu-span"
><a href="search.html" class="menu-link active">Search</a></span
>
<span class="menu menu-span"
><a href="contact.html" class="menu-link">Contact</a></span
>
<span class="menu menu-span language">
<a href="../spanish/inicio-esp.html" class="menu-link">Español</a>
</span>
<span class="menu menu-span language"
><a href="../portuguese/inicio-port.html" class="menu-link"
>Português</a
></span
>
</div>
</div>
</div>
</nav>
<div id="registrationOne">
<div class="container">
<form name="regForm" method="post" action=<?php echo $_SERVER['PHP_SELF'];?>>
<div class="row">
<div class="col-md-6">
<label for="">First Name:</label>
<input name="firstname" type="text" class="form-control" />
</div>
<div class="col-md-6">
<label for="">Last Name:</label>
<input name="lastname" type="text" class="form-control" />
</div>
</div>
<button
name="submitButton"
type="submit"
class="btn btn-primary"
id="registrationTwo"
>
Register
</button>
</form>
</div>
</div>
</body>
<script src="script/index.js"></script>
</html>
And the following javascript file, index.js, coded as follows
function validateRegForm(event) {
event.preventDefault();
let first = document.forms["regForm"]["firstname"].value;
let last = document.forms["regForm"]["lastname"].value;
if (first.length < 2) {
alert("Please enter a first name at least of at least two characters");
return false;
} else if (last.length < 2) {
alert("Please enter a last name at least of at least two characters");
return false;
} else {
return true;
}
}
let regClick = document.getElementById("registrationTwo");
regClick.addEventListener("click", validateRegForm);
function thankReg() {
if (validateRegForm() === true) {
let regOneElement = document.getElementById("registrationOne");
regOneElement.innerHTML = `<div class="row">
<div class="col-md-12">
<h2 class="thankYouReg">Thank you for registering with Pro.Social.<br /><br />Please check your email for your unique search link to get started. <br /><br />If you do not receive an email from us in the next few minutes, please contact us via the Contact page.</h2>
</div>
</div>`;
}
}
thankReg();
When I load the page, it shows "Connected!" at the top, so the connection is ok. The form validation works as expected, but when I click on the "Register" button, nothing happens (i.e., the innerhtml doesn't change and nothing is posted to the MySQL database). However, if I refresh the page, blank rows appear in the database.
Could someone please advise?
Many thanks in advance.