vuejs
https://v2.vuejs.org/v2/guide/installation.html
CDN : https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js
Axios
CDN : https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js
index.php
//index.php <!DOCTYPE html> <html> <head> <title>Vue.js PHP Mysql Submit Form Data with Alert Message</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" /> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script> <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> </head> <body> <div id="alert"> <div class="topcorner alert_danger" v-if="isError"> <span class="closebutton" @click="clearMessage();">×</span> <span class="glyphicon glyphicon-alert"></span> {{ responseMessage }} </div> <div class="topcorner alert_success" v-if="isSuccess"> <span class="closebutton" @click="clearMessage();">×</span> <span class="glyphicon glyphicon-check-square-o"></span> {{ responseMessage }} </div> <div class="container"> <h1 class="page-header text-center">Vue.js PHP Mysql Submit Form Data with Alert Message</h1> <div class="col-md-4"> <div class="form-group"> <label>First Name:</label> <input type="text" class="form-control" v-model="newMember.firstname" v-on:keyup="keymonitor"> </div> <div class="form-group"> <label>Last Name:</label> <input type="text" class="form-control" v-model="newMember.lastname" v-on:keyup="keymonitor"> </div> <button class="btn btn-primary" @click="insertMember();"><span class="glyphicon glyphicon-floppy-disk"></span> Save</button> <button class="btn btn-danger" @click="clearForm();"><span class="glyphicon glyphicon-refresh"></span> Clear</button> </div> <div class="col-md-8"> <table class="table table-bordered table-striped"> <thead> <th>Member ID</th> <th>First Name</th> <th>Last Name</th> </thead> <tbody> <tr v-for="member in members"> <td>{{ member.id }}</td> <td>{{ member.firstname }}</td> <td>{{ member.lastname }}</td> </tr> </tbody> </table> </div> </div> </div> <script src="app.js"></script> <style type="text/css"> .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; } </style> </body> </html>app.js
//app.js var app = new Vue({ el: '#alert', data:{ newMember: {firstname: '', lastname: ''}, 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 = {firstname: '', lastname:''}; 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 = {firstname: '', lastname:''}; } } });action.php
//action.php <?php $conn = new mysqli("localhost", "root", "", "testingdb"); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $out = array('error' => false); $action="show"; if(isset($_GET['action'])){ $action=$_GET['action']; } if($action=='show'){ $sql = "select * from members"; $query = $conn->query($sql); $members = array(); while($row = $query->fetch_array()){ array_push($members, $row); } $out['members'] = $members; } if($action=='add'){ $firstname=$_POST['firstname']; $lastname=$_POST['lastname']; if($firstname==''){ $out['error']=true; $out['message']='Add Member Failed. Username Empty.'; } elseif($lastname==''){ $out['error']=true; $out['message']='Add Member Failed. lastname Empty.'; } else{ $sql="insert into members ( firstname, lastname) values ('$firstname', '$lastname')"; $query=$conn->query($sql); if($query){ $out['message']='Member Successfully Added'; } else{ $out['error']=true; $out['message']='Error in Adding Occured'; } } } $conn->close(); header("Content-type: application/json"); echo json_encode($out); die(); ?>