Ajax add & delete a Record with jQuery Fade In/Fade Out

Posting Komentar

Jika Anda sedikit terbiasa dengan dasar-dasar perpustakaan JavaScript jQuery, hal berikutnya yang ingin Anda lakukan adalah belajar jQuery Ajax untuk menambahkan dan menghapus record dari tabel database MySQL. Dalam tutorial dasar ini kita akan melakukan hal yang sama, kita akan fokus belajar jQuery untuk mengirim data POST ke file PHP dan merespon balik dengan hasil atau kesalahan. Tanpa harus reload halaman, teknik Ajax adalah cara yang sangat rapi untuk menambah atau menghapus / record database, dan juga tampilannya sangat keren.

Dalam tutorial ini, saya telah membuat tiga file index.php , response.php dan config.php . Halaman depan (index.php) adalah satu-satunya file tempat pengguna berinteraksi langsung dengan aplikasi Anda. response.php berjalan di belakang layar.

siapkan 3 file php dalam folder latihan anda

  • index.php
  • config.php
  • response.php

Baca juga : Membuat fitur autosave dengan ajax jquery

sebelum memulai buatlah tabel seperti di bawah ini :
CREATE TABLE IF NOT EXISTS `add_delete_record` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

lanjut buat file koneksi database script kode (config.php) :
<?php
$username = "root"; //mysql username
$password = ""; //mysql password
$hostname = "localhost"; //hostname
$databasename = 'dblatihan'; //databasename
//connect to database
$mysqli = new mysqli($hostname, $username, $password, $databasename);

lalu file response.php script kode :
<?php
//include db configuration file
include_once("config.php");
if(isset($_POST["content_txt"]) && strlen($_POST["content_txt"])>0) 
{ //check $_POST["content_txt"] is not empty

 //sanitize post value, PHP filter FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH Strip tags, encode special characters.
 $contentToSave = filter_var($_POST["content_txt"],FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH); 
 // Insert sanitize string in record
 $insert_row = $mysqli->query("INSERT INTO add_delete_record(content) VALUES('".$contentToSave."')");
 
 if($insert_row){
   //Record was successfully inserted, respond result back to index page
    $my_id = $mysqli->insert_id; //Get ID of last inserted row from MySQL
    echo '<li id="item_'.$my_id.'">';
    echo '<div class="del_wrapper"><a href="#" class="del_button" id="del-'.$my_id.'">';
    echo '<img src="images/icon_del.gif" border="0" />';
    echo '</a></div>';
    echo $contentToSave.'</li>';
    $mysqli->close(); //close db connection

 }else{
  
  //header('HTTP/1.1 500 '.mysql_error()); //display sql errors.. must not output sql errors in live mode.
  header('HTTP/1.1 500 Looks like mysql error, could not insert record!');
  exit();
 }

}elseif(isset($_POST["recordToDelete"]) && strlen($_POST["recordToDelete"])>0 && is_numeric($_POST["recordToDelete"])) { //do we have a delete request? $_POST["recordToDelete"]
 //sanitize post value, PHP filter FILTER_SANITIZE_NUMBER_INT removes all characters except digits, plus and minus sign.
 $idToDelete = filter_var($_POST["recordToDelete"],FILTER_SANITIZE_NUMBER_INT); 
 //try deleting record using the record ID we received from POST
 $delete_row = $mysqli->query("DELETE FROM add_delete_record WHERE id=".$idToDelete);
 if(!$delete_row)
 {    
  //If mysql delete query was unsuccessful, output error 
  header('HTTP/1.1 500 Could not delete record!');
  exit();
 }
 $mysqli->close(); //close db connection
}
else
{
 //Output error
 header('HTTP/1.1 500 Error occurred, Could not process request!');
    exit();
}

untuk file index.php script kode :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax Add/Delete a Record with jQuery Fade In/Fade Out</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {

//##### send add record Ajax request to response.php #########
$("#FormSubmit").click(function (e) {
  e.preventDefault();
  if($("#contentText").val()==='')
  {
   alert("Please enter some text!");
   return false;
  }
  
  $("#FormSubmit").hide(); //hide submit button
  $("#LoadingImage").show(); //show loading image
  
   var myData = 'content_txt='+ $("#contentText").val(); //build a post data structure
  jQuery.ajax({
  type: "POST", // HTTP method POST or GET
  url: "response.php", //Where to make Ajax calls
  dataType:"text", // Data type, HTML, json etc.
  data:myData, //Form variables
  success:function(response){
   $("#responds").append(response);
   $("#contentText").val(''); //empty text field on successful
   $("#FormSubmit").show(); //show submit button
   $("#LoadingImage").hide(); //hide loading image

  },
  error:function (xhr, ajaxOptions, thrownError){
   $("#FormSubmit").show(); //show submit button
   $("#LoadingImage").hide(); //hide loading image
   alert(thrownError);
  }
  });
});

//##### Send delete Ajax request to response.php #########
$("body").on("click", "#responds .del_button", function(e) {
  e.preventDefault();
  var clickedID = this.id.split('-'); //Split ID string (Split works as PHP explode)
  var DbNumberID = clickedID[1]; //and get number from array
  var myData = 'recordToDelete='+ DbNumberID; //build a post data structure
  
 $('#item_'+DbNumberID).addClass( "sel" ); //change background of this element by adding class
 $(this).hide(); //hide currently clicked delete button
  
  jQuery.ajax({
  type: "POST", // HTTP method POST or GET
  url: "response.php", //Where to make Ajax calls
  dataType:"text", // Data type, HTML, json etc.
  data:myData, //Form variables
  success:function(response){
   //on success, hide  element user wants to delete.
   $('#item_'+DbNumberID).fadeOut();
  },
  error:function (xhr, ajaxOptions, thrownError){
   //On error, we alert user
   alert(thrownError);
  }
  });
});

});
</script>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="content_wrapper">
<ul id="responds">
<?php
//include db configuration file
include_once("config.php");

//MySQL query
$results = $mysqli->query("SELECT id,content FROM add_delete_record");
//get all records from add_delete_record table
while($row = $results->fetch_assoc())
{
  echo '<li id="item_'.$row["id"].'">';
  echo '<div class="del_wrapper"><a href="#" class="del_button" id="del-'.$row["id"].'">';
  echo '<img src="images/icon_del.gif" border="0" />';
  echo '</a></div>';
  echo $row["content"].'</li>';
}

//close db connection
$mysqli->close();
?>
</ul>
    <div class="form_style">
    <textarea name="content_txt" id="contentText" cols="45" rows="5" placeholder="Enter some text"></textarea>
    <button id="FormSubmit">Add record</button>
    <img src="images/loading.gif" id="LoadingImage" style="display:none" />
    </div>
</div>

</body>
</html>

Script dibawah ini untuk menerima data dari form inputan  lalu dikirim file response.php:

Baca Juga : Membuat Halaman AMP HTML Pertama


//##### send add record Ajax request to response.php #########
$("#FormSubmit").click(function (e) {
  e.preventDefault();
  if($("#contentText").val()==='')
  {
   alert("Please enter some text!");
   return false;
  }
  
  $("#FormSubmit").hide(); //hide submit button
  $("#LoadingImage").show(); //show loading image
  
   var myData = 'content_txt='+ $("#contentText").val(); //build a post data structure
  jQuery.ajax({
  type: "POST", // HTTP method POST or GET
  url: "response.php", //Where to make Ajax calls
  dataType:"text", // Data type, HTML, json etc.
  data:myData, //Form variables
  success:function(response){
   $("#responds").append(response);
   $("#contentText").val(''); //empty text field on successful
   $("#FormSubmit").show(); //show submit button
   $("#LoadingImage").hide(); //hide loading image

  },
  error:function (xhr, ajaxOptions, thrownError){
   $("#FormSubmit").show(); //show submit button
   $("#LoadingImage").hide(); //hide loading image
   alert(thrownError);
  }
  });
});

Script ini untuk delete data yang di input dikirim ke file response.php :

Baca Juga : Convert HTML ke AMP

//##### Send delete Ajax request to response.php #########
$("body").on("click", "#responds .del_button", function(e) {
  e.preventDefault();
  var clickedID = this.id.split('-'); //Split ID string (Split works as PHP explode)
  var DbNumberID = clickedID[1]; //and get number from array
  var myData = 'recordToDelete='+ DbNumberID; //build a post data structure
  
 $('#item_'+DbNumberID).addClass( "sel" ); //change background of this element by adding class
 $(this).hide(); //hide currently clicked delete button
  
  jQuery.ajax({
  type: "POST", // HTTP method POST or GET
  url: "response.php", //Where to make Ajax calls
  dataType:"text", // Data type, HTML, json etc.
  data:myData, //Form variables
  success:function(response){
   //on success, hide  element user wants to delete.
   $('#item_'+DbNumberID).fadeOut();
  },
  error:function (xhr, ajaxOptions, thrownError){
   //On error, we alert user
   alert(thrownError);
  }
  });
});

Related Posts

Posting Komentar