Bootstrap CDN
https://getbootstrap.com/docs/4.3/getting-started/introduction/
angularjs CDN
https://angularjs.org/ Version 1.8.2 https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js
CREATE TABLE `user` (
`user_id` bigint(20) NOT NULL,
`user_name` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`user_email` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`user_password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `user` (`user_id`, `user_name`, `user_email`, `user_password`) VALUES
(1, 'cairocoders', 'cairocoders@gmail.com', '86985e105f79b95d6bc918fb45ec7727'),
(2, 'tutorial101.blogspot.com', 'tutorial101@gmail.com', '86985e105f79b95d6bc918fb45ec7727');
ALTER TABLE `user`
ADD PRIMARY KEY (`user_id`);
ALTER TABLE `user`
MODIFY `user_id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
index.php
//index.php
<!DOCTYPE html>
<html ng-app="angularsignup" ng-controller="signup_ctr" ng-init="showdata()">
<head>
<meta charset="UTF-8">
<title>AngularJS PHP Mysqli Sign Up with form validation and list records</title>
<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">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
</head>
<body>
<div class="container">
<center><h1 class="page-header">AngularJS PHP Mysqli Sign Up with form validation and list records</h1></center>
<div class="row">
<div class="col-md-4">
<form ng-submit="myFunc()">
<h3>Signup Form</h3>
<hr>
<div class="form-group">
<label for="email">Email</label>
<input type="text" class="form-control" id="email" name="email" ng-model="email" placeholder="email@example.com">
</div>
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" name="username" ng-model="username">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" id="password" name="password" ng-model="password">
</div>
<div class="form-group">
<label for="repassword">Re-type Password</label>
<input type="password" class="form-control" id="repassword" name="repassword" ng-model="repassword">
</div>
<div class="{{alert}}">
<center>{{alerttext}}</center>
</div>
<hr>
<button type="submit" class="btn btn-success" ng-click="register()"><span class="glyphicon glyphicon-pencil"></span> {{btnName}}</button>
</form>
</div>
<div class="col-md-8">
<h3>User List</h3>
<table class="table table-hover table-bordered table-striped">
<thead>
<th>Email</th>
<th>Username</th>
<th>Password</th>
</thead>
<tbody>
<tr ng-repeat="rs in user">
<td>{{rs.user_email}}</td>
<td>{{rs.user_name}}</td>
<td>{{rs.user_password}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<script src="app.js"></script>
</body>
</html>
app.js
//app.js
var app = angular.module("angularsignup", []);
app.controller("signup_ctr", function($scope, $http, $window) {
$scope.alert = "alert alert-success";
$scope.alerttext = "Fill up all the Fields";
$scope.btnName = "Register";
var email = $window.document.getElementById('email');
var username = $window.document.getElementById('username');
var password = $window.document.getElementById('password');
var repassword = $window.document.getElementById('repassword');
email.focus();
$scope.register = function() {
if ($scope.email == null){
$scope.alerttext="Please input email";
email.focus();
}
else if ($scope.username == null) {
$scope.alerttext="Please input username";
username.focus();
}
else if ($scope.password == null) {
$scope.alerttext="Please input password";
password.focus();
}
else if($scope.password!=$scope.repassword){
$scope.alerttext = "Password didn't match";
repassword.focus();
}
else {
$scope.btnName = "Checking";
setTimeout(function() {
$http({
method: 'POST',
url: 'register.php',
data:{email:$scope.email, username:$scope.username, password:$scope.password}
}).then(function (data){
console.log(data)
if(data.data==1){
$scope.alerttext="Invalid email format";
email.focus();
}
else if(data.data==2){
$scope.alerttext="Only letters, numbers and underscore allowed";
username.focus();
}
else if(data.data==3){
$scope.alerttext="Registration Successful";
$scope.showdata();
$scope.email="";
$scope.username="";
$scope.password="";
$scope.repassword="";
email.focus();
$scope.btnName = "Register";
}
else{
$scope.alerttext="Registration Failed";
}
},function (error){
console.log(error, 'can not get data.');
});
}, 3000);
}
}
$scope.showdata = function() {
$http({
method: 'GET',
url: 'fetch.php'
}).then(function (data){
console.log(data)
$scope.user = data.data;
},function (error){
console.log(error, 'can not get data.');
});
}
$scope.enter = function(keyEvent) {
if (keyEvent.which === 13){
register();
}
}
});
conn.php
//conn.php
<?php
$conn = new mysqli("localhost", "root", "", "testingdb");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
fetch.php
//fetch.php
<?php
include('conn.php');
$output = array();
$query = $conn->query("select * from user");
if ($query->num_rows > 0) {
while ($row = $query->fetch_array()) {
$output[] = $row;
}
echo json_encode($output);
}
?>
register.php
//register.php
<?php
include('conn.php');
$data = json_decode(file_get_contents("php://input"));
$email = mysqli_real_escape_string($conn, $data->email);
$username = mysqli_real_escape_string($conn, $data->username);
$password = mysqli_real_escape_string($conn, $data->password);
$msg="";
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$msg=1;
}
elseif (!preg_match("/^[a-zA-Z0-9_]*$/",$username)) {
$msg=2;
}
else{
$password=md5($password);
if ($conn->query("insert into user (user_email, user_name, user_password) values ('$email', '$username', '$password')")) {
$msg=3;
} else {
$msg=4;
}
}
echo json_encode($msg);
?>