CREATE TABLE `members` ( `memid` INT(11) NOT NULL AUTO_INCREMENT, `email` VARCHAR(60) NOT NULL, `password` VARCHAR(50) NOT NULL, PRIMARY KEY(`memid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
.topcorner{ position:absolute; top:5px; right:5px; } .alert_danger { padding: 15px; background-color: #f44336; color: white; } .alert_success { padding: 15px; background-color: #4CAF50; color: white; } .closebutton { margin-left: 15px; color: white; font-weight: bold; float: right; font-size: 22px; line-height: 20px; cursor: pointer; transition: 0.3s; } .closebutton:hover { color: black; }
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="alert"> <div class="topcorner alert_danger" v-if="isError"> </div> <div class="topcorner alert_success" v-if="isSuccess"> </div> <div class="container"> <div class="col-md-4"> <div class="form-group"> <input type="text" class="form-control" v-model="newMember.email" v-on:keyup="keymonitor"> </div> <div class="form-group"> <input type="text" class="form-control" v-model="newMember.password" v-on:keyup="keymonitor"> </div> </div> <div class="col-md-8"> <table class="table table-bordered table-striped"> <thead> </thead> <tbody> <tr v-for="member in members"> </tr> </tbody> </table> </div> </div> </div> </body> </html>
var app = new Vue({ el: '#alert', data:{ newMember: {email: '', password: ''}, alertMessage: false, isSuccess: false, isError: false, responseMessage: "", members: [] }, mounted: function(){ this.fetchMembers(); }, methods:{ keymonitor: function(event) { if(event.key == "Enter"){ app.insertMember(); } }, fetchMembers: function(){ axios.post('action.php') .then(function(response){ app.members = response.data.members; }); }, insertMember: function(){ var memberForm = app.toFormData(app.newMember); axios.post('action.php?action=add', memberForm) .then(function(response){ console.log(response); if(response.data.error){ app.alertMessage = true; app.isError = true; app.isSuccess = false; app.responseMessage = response.data.message; setTimeout(function(){ app.clearMessage(); },3000); } else{ app.isSuccess = true; app.isError = false; app.alertMessage = true; app.responseMessage = response.data.message; app.newMember = {email: '', password:''}; app.fetchMembers(); setTimeout(function(){ app.clearMessage(); },3000); } }); }, toFormData: function(obj){ var form_data = new FormData(); for(var key in obj){ form_data.append(key, obj[key]); } return form_data; }, clearMessage: function(){ app.isError = false; app.isSuccess = false; }, clearForm: function(){ app.newMember=app.newMember = {email: '', password:''}; } } });
<?php $conn = new mysqli("localhost", "root", "", "vuealert"); if ($conn->connect_error) { } $action="show"; $action=$_GET['action']; } if($action=='show'){ $sql = "select * from members"; $query = $conn->query($sql); while($row = $query->fetch_array()){ } $out['members'] = $members; } if($action=='add'){ $email=$_POST['email']; $password=$_POST['password']; if($email==''){ $out['error']=true; $out['message']='Add Member Failed. Username Empty.'; } $out['error']=true; $out['message']='Add Member Failed. Invalid Email Format'; } elseif($password==''){ $out['error']=true; $out['message']='Add Member Failed. Password Empty.'; } $out['error']=true; $out['message']='Underscore and Special Characters not allowed in Password'; } else{ $sql="insert into members (email, password) values ('$email', '$password')"; $query=$conn->query($sql); if($query){ $out['message']='Member Successfully Added'; } else{ $out['error']=true; $out['message']='Error in Adding Occured'; } } } $conn->close(); ?>