CRUD PHP Ajax Dengan Modal Bootstrap

CRUD PHP Ajax Dengan Modal Bootstrap - root93


CRUD (Create, Read, Update, Delete) PHP Ajax Dengan Modal Bootstrap yang akan saya jelaskan ini kurang lebih memiliki alur seperti yang terlihat pada gambar diatas. Secara sederhana, pertama kita akan membuat semacam tombol atau link triger dari HTML ke Ajax, selanjutnya Ajax/Javascript akan melakukan request ke PHP, lalu jika request berhasil maka data bisa ditampilkan dalam bentuk tipe HMTL Data atau JSON didalam modal Bootstrap.

Pada tutorial CRUD PHP Ajax Dengan Modal Bootstrap ada beberapa hal yang akan dilakukan diantaranya :

1. Proses penambahan data didalam modal
2. Proses menampilkan data didalam modal
3. Proses update/edit data didalam modal
4. Proses delete data

Selanjutnya ada beberapa keunggulan dalam proses CRUD PHP Ajax Dengan Modal Bootstrap yang sederhana ini dibandingkan dengan proses crud yang hanya melibatkan html dan php saja.
  1. Proses CRUD bisa dilakukan tanpa berpindah – pindah halaman, sehingga proses penggunaannya memang terlihat lebih simpel
  2. Lebih interaktif karena ada efek animasi modal bootstrap
  3. Proses tambah, edit dan delete data terlihat lebih cepat seperti tanpa loading saat submit data

CRUD PHP Ajax di Dalam Modal Bootstrap
Ada beberapa file yang perlu dibuat, saya akan memisah – misah file tersebut sesuai dengan fungsinya supaya lebih mudah. Struktur filenya akan dibuat seperti berikut
File CRUD PHP Ajax Dengan Modal Bootstrap - root93


Database
CREATE TABLE `datamhs` (
  `id` int(13) NOT NULL,
  `nim` varchar(30) NOT NULL,
  `nama_mahasiswa` varchar(30) NOT NULL,
  `foto_mahasiswa` varchar(30) NOT NULL,
  `tanggal_daftar` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data untuk tabel `datamhs`
--

INSERT INTO `datamhs` (`id`, `nim`, `nama_mahasiswa`, `foto_mahasiswa`, `tanggal_daftar`) VALUES
(1, '1023564', 'Ahmad Zaelani', '', '2019-08-15 06:01:28'),
(2, '1478523', 'Noni Indriawati', '', '2019-08-15 06:01:20'),
(3, '1023589', 'Firman Alamsyah', '', '2019-08-15 06:01:42'),
(4, '1369875', 'Susi Susanti', '', '2019-08-15 06:01:54');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `datamhs`
--
ALTER TABLE `datamhs`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `datamhs`
--
ALTER TABLE `datamhs`
  MODIFY `id` int(13) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

A_css.php
File ini nantinya bisa kalian isi dengan cdn/lokal file css bootrap dan fontawesome

<link href="lib/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="lib/fontawesome-free/css/all.min.css" rel="stylesheet">
</head>
<body>
 <div class="container" style="width: 700px">


A_footer.php
File ini bisa di isi oleh link cdn/lokal file javascript jquery, bootstrap, dan modal js yang berisi request ke php

<!--Container div akhir -->
</div>
<!--Bootstrap Core -->
<script src="lib/jquery/jquery.min.js"></script>
<script src="lib/bootstrap/js/bootstrap.min.js"></script>
<!--Bagian Js Modal Triger Untuk -->
<script src="lib/modal-triger/modal.js"></script>
</body>
</html>


A_head.php

<html>
<head>
<title>MAHASISWA ROOT93</title>


ajax.delete.php
Untuk fungsi delete disini masih belum menggunakan modal, tapi menggunakan alert javascript biasa, untuk membuat konfirmasi delete data menggunakan modal Anda bisa membaca tutorial : Membuat Konfirmasi Delete Data Menggunakan Modal Bootstrap

<?php
include ('koneksi.php');
include ('function.php');
?>
<?php
if(isset($_POST['delete_id'])){
 if(delete_data($_POST['delete_id'])){
 echo "<p style='color: red;'>Data berhasil dihapus</p>";
        $result = tampil_data();
        if($result){      
        echo "<table width='100%' class='table table-striped table-bordered table-hover'>";
        echo "<tr>";
    
        echo "<th>NIM</th>";
        echo "<th>NAMA MAHASISWA</th>";
                
        echo "<th>AKSI</th>";
        echo "</tr>";      
        while($row=mysqli_fetch_array($result)){
        echo "<tr>";

        echo "<td>".$row['nim']."</td>";        
        echo "<td>".$row['nama_mahasiswa']."</td>";     
        echo "<td>";
        echo "<a href='#' name='delete' id='".$row['id']."; ?>' class='delete_data'><i class='fa fa-trash fa-fw small' alt='delete' title='delete'></i></a>";

        echo "<a href='#' data-target='#confirm-detail' id='".$row['id']."; ?>' class='lihat_data'><i class='fa fa-eye fa-fw small' alt='detail' title='detail'></i></a>";
        
      echo "<a href='#' name='update' id='".$row['id']."; ?>' class='update_data'><i class='fa fa-edit fa-fw small' alt='edit' title='edit'></i></a>";

        echo "</td>";
        echo "</tr>";
        }
        echo "</table>";
         mysqli_free_result($result);   
    
        }    
 }else{
  die("error");
 }
        mysqli_close($koneksi);

}
?>


ajax.detail.php


<?php
include ('koneksi.php');
include ('function.php');  
 if(isset($_POST["detail_mahasiswa"])){
 if(!detail_data(trim($_POST["detail_mahasiswa"]))){
    die("error");
 }

 }else{
    die("error");
 }  
       
      echo "<div class='table-responsive'>";  
      echo "<table width='100%' class='table table-striped table-bordered table-hover'>";  
     
       
                echo "<tr>";  
                echo "<td>ID</td>";  
                echo  "<td>".$id."</td>";  
                echo "</tr>";  
                echo "<tr>";  
                echo "<td>NIM</td>";  
                echo  "<td>".$nim."</td>";  
                echo "</tr>";  
                echo "<tr>";  
                echo "<td>Nama Mahasiswa</td>";  
                echo  "<td>".$nama_mahasiswa."</td>";  
                echo "</tr>";
                echo "<tr>";  
                echo "<td>Tanggal Daftar/Edit</td>";  
                echo  "<td>".$tanggal_daftar."</td>";  
                echo "</tr>";
                
       
      echo "</table>";
      echo "</div>";  
     
 
 ?>


ajax.edit.php

<?php

include ('koneksi.php');
include ('function.php');
?>

<?php
if(isset($_POST["update_id"])){

 if(!detail_data(trim($_POST['update_id']))){  
  die ("Data tidak ditemukan");
 }
}

//Merubah variabel dari bind result ke json, disimpan ke array terlebih dahulu
$array=array(
 0=>"$id",'id'=>"$id",
 1=>"$nim",'nim'=>"$nim",
 2=>"$nama_mahasiswa",'nama_mahasiswa'=>"$nama_mahasiswa"
 

);
echo json_encode($array);
?> 
   


ajax.edit.proses.php


<?php
include ('koneksi.php');
include ('function.php');
?>
<?php

if(isset($_POST["update_id"])){
if($_SERVER["REQUEST_METHOD"]=="POST"){
    if(empty($_POST['update_id'])){
    $id_err="id masih ksong";
    }else{
    $id=$_POST['update_id'];
    $id=mysqli_real_escape_string($koneksi, $id);
    }
    if(empty(trim($_POST['nim']))){
    $nim_err = "Nim tidak boleh kosong";
    }else{
    $nim=$_POST['nim'];
    $nim=mysqli_real_escape_string($koneksi, $nim);
    }    
    if(empty(trim($_POST['nama_mahasiswa']))){
    $nama_mahasiswa_err = "Nama mahasiswa tidak boleh kosong";
    }else{
    $nama_mahasiswa = $_POST['nama_mahasiswa'];
    $nama_mahasiswa = mysqli_real_escape_string($koneksi, $nama_mahasiswa);
    }
 
   
if(empty($nim_err) && empty($nama_mahasiswa_err) && empty($id_err)){
        if(update_mahasiswa($id, $nim, $nama_mahasiswa)){
       echo "<p style='color: red;'>Berhasil mengupdate data</p>";
        $result = tampil_data();        
        if($result){      
        echo "<table width='100%' class='table table-striped table-bordered table-hover'>";
        echo "<tr>";
    
        echo "<th>NIM</th>";
        echo "<th>NAMA MAHASISWA</th>";
                
        echo "<th>AKSI</th>";
        echo "</tr>";
        //loping data
        while($row=mysqli_fetch_array($result)){
        echo "<tr>";

        echo "<td>".$row['nim']."</td>";        
        echo "<td>".$row['nama_mahasiswa']."</td>";     
        echo "<td>";
        echo "<a href='#' name='delete' id='".$row['id']."; ?>' class='delete_data'><i class='fa fa-trash fa-fw small' alt='delete' title='delete'></i></a>";

        echo "<a href='#' data-target='#confirm-detail' id='".$row['id']."; ?>' class='lihat_data'><i class='fa fa-eye fa-fw small' alt='detail' title='detail'></i></a>";
        
        echo "<a href='#' name='update' id='".$row['id']."; ?>' class='update_data'><i class='fa fa-edit fa-fw small' alt='edit' title='edit'></i></a>";

        echo "</td>";
        echo "</tr>";
        }
        echo "</table>";
       
        //free result
        mysqli_free_result($result);   
    
        }
    }else{
    echo 'Gagal menyimpan data';
    }
     
      
    }
        mysqli_close($koneksi);
    }
}

?>


ajax.input.php

<?php
include ('koneksi.php');
include ('function.php');
?>
<?php
if(isset($_POST["mahasiswa_id"])){
    if(empty(trim($_POST['nim']))){
        $nim_err = "Nim tidak boleh kosong";
        }else{
            
            $nim=$_POST['nim'];
            $nim=mysqli_real_escape_string($koneksi, $nim);
   
        }    
        if(empty(trim($_POST['nama_mahasiswa']))){
            $nama_mahasiswa_err = "Nama mahasiswa tidak boleh kosong";
            }else{
            $nama_mahasiswa = $_POST['nama_mahasiswa'];
            $nama_mahasiswa = mysqli_real_escape_string($koneksi, $nama_mahasiswa);
        }
        
//cek input sebelum insert untuk memastikan tidak ada data yang error
    if(empty($nim_err) && empty($nama_mahasiswa_err)){
        if(simpan_mahasiswa($nim, $nama_mahasiswa)){
       echo "<p style='color: red;'>Berhasil menyimpan data</p>";
        $result = tampil_data();        
        if($result){      
        echo "<table width='100%' class='table table-striped table-bordered table-hover'>";
        echo "<tr>";
    
        echo "<th>NIM</th>";
        echo "<th>NAMA MAHASISWA</th>";
                
        echo "<th>AKSI</th>";
        echo "</tr>";
        //loping data
        while($row=mysqli_fetch_array($result)){
        echo "<tr>";

        echo "<td>".$row['nim']."</td>";        
        echo "<td>".$row['nama_mahasiswa']."</td>";     
        echo "<td>";
        echo "<a href='#' name='delete' id='".$row['id']."; ?>' class='delete_data'><i class='fa fa-trash fa-fw small' alt='delete' title='delete'></i></a>";

        echo "<a href='#' data-target='#confirm-detail' id='".$row['id']."; ?>' class='lihat_data'><i class='fa fa-eye fa-fw small' alt='detail' title='detail'></i></a>";
        
        echo "<a href='#' name='update' id='".$row['id']."; ?>' class='update_data'><i class='fa fa-edit fa-fw small' alt='edit' title='edit'></i></a>";

        echo "</td>";
        echo "</tr>";
        }
        echo "</table>";
       
        //free result
        mysqli_free_result($result);   
    
        }
    }else{
    echo 'Gagal menyimpan data';
    }
     
      
        }
        mysqli_close($koneksi);
  
    }

?>



function.php
File ini berisi operasi atau function untuk menyimpan, menampilkan, menambah dan menedelete data. Proses query yang dilakukan juga mengggunakan prepared statement. Baca : CRUD PHP Procedural Style

<?php
function prepare($data){
 global $koneksi;
 $perintah=mysqli_prepare($koneksi,$data);
 if(!$perintah) die("Gagal melakukan koneksi".mysqli_error($koneksi));
 return $perintah;
}
function query($data){
 global $koneksi;
 $perintah=mysqli_query($koneksi, $data);
 if(!$perintah) die("Gagal melakukan koneksi".mysqli_error($koneksi));
 return $perintah;
}
function execute($data){
 $perintah=mysqli_stmt_execute($data);
 return $data;
}
function stmt_close($data){
 $perintah=mysqli_stmt_close($data);
 return $data;
}

function simpan_mahasiswa($nim, $nama_mahasiswa){
   
    $sql="INSERT INTO datamhs(nim, nama_mahasiswa) VALUES (?,?)";
    if($stmt=prepare($sql)){
        mysqli_stmt_bind_param($stmt,"ss",$param_nim, $param_nama_mahasiswa);
        $param_nim = $nim;
        $param_nama_mahasiswa = $nama_mahasiswa;

    if(execute($stmt)){
      return true;
   }else{
      return false;
   }

 
 }
 stmt_close($stmt);
}

function tampil_data(){
 $sql="SELECT id, nim, nama_mahasiswa, foto_mahasiswa, tanggal_daftar FROM datamhs";
 $result=query($sql);
 return $result;
}


function delete_data($var_id){
 global $koneksi;
 $sql = "DELETE FROM datamhs where id =?";
 if($stmt=mysqli_prepare($koneksi, $sql)){
  mysqli_stmt_bind_param($stmt,"i", $param_id);
  $param_id = $var_id;
  
  if(mysqli_stmt_execute($stmt)){
   return true;
  }else{
   return false;
  }
 }
 
 
}


function detail_data($var_id){
 global $koneksi;
 global $id, $nim, $nama_mahasiswa, $tanggal_daftar;
 $sql="SELECT id, nim, nama_mahasiswa, tanggal_daftar FROM datamhs WHERE id=?";
 if($stmt=mysqli_prepare($koneksi, $sql)){
  mysqli_stmt_bind_param($stmt,"i",$param_id);
  $param_id = $var_id;
  if(mysqli_stmt_execute($stmt)){
   mysqli_stmt_store_result($stmt);
   mysqli_stmt_bind_result($stmt, $id, $nim, $nama_mahasiswa, $tanggal_daftar);
   mysqli_stmt_fetch($stmt);
   if(mysqli_stmt_num_rows($stmt)==1){
    return true; //jika ada data nilai true
   }else{
    return false; //jika data tidak ditemukan nilai false
   }
  }else{
   echo "Terjadi kesalahan";
  }
 }
 stmt_close($stmt);
}

function update_mahasiswa($id, $nim, $nama_mahasiswa){
 global $koneksi;
 $sql ="UPDATE datamhs SET nim=?, nama_mahasiswa=? WHERE id=?";
 if($stmt=mysqli_prepare($koneksi, $sql)){
  mysqli_stmt_bind_param($stmt,"ssi",$param_nim, $param_nama_mahasiswa, $param_id);
  //set parameter
  $param_id = $id;
  $param_nim = $nim;
  $param_nama_mahasiswa = $nama_mahasiswa;
  
      if(mysqli_stmt_execute($stmt)){
       return true;
    }else{
       return false;
    }
     

 }
}
function cek_nim($data){
 global $koneksi;
 $sql = "SELECT nim FROM datamhs WHERE nim=?";
 if($stmt=mysqli_prepare($koneksi, $sql)){
  mysqli_stmt_bind_param($stmt,"s", $param_nim);
  $param_nim=$data;
  if(mysqli_stmt_execute($stmt)){
   mysqli_stmt_store_result($stmt);
   if(mysqli_stmt_num_rows($stmt)==1){
    $simpan=true;
   }else{
    $simpan=false;
   }
   return $simpan;
  }else{
   die("Error");
  }
 }
 mysqli_stmt_close($stmt);
}
?>



index.php

<?php
include ('koneksi.php');
include ('function.php');
include('A_head.php');
include('A_css.php');

?>
<br /><br /> 
 <div align="right" style="color: red;">  
  <button type="button" name="add" id="add" data-toggle="modal" data-target="#add_data_Modal" class="btn btn-warning">Add</button>  
  </div> 
 <br /><br /> 
 <h3 align="center">CRUD PHP Ajax Dengan Modal Bootstrap - R93 :)</h3>

<?php
//memanggi function
$result = tampil_data();
  //mengeksekusi function didalam percabangan
  if($result){
  
  echo "<div id='tabel_mahasiswa'>";
  echo "<table width='100%' class='table table-striped table-bordered table-hover'>";
  echo "<tr>";
 
  echo "<th>NIM</th>";
  echo "<th>NAMA MAHASISWA</th>";
    
  echo "<th>AKSI</th>";
  echo "</tr>";
  //loping data
  while($row=mysqli_fetch_array($result)){
  echo "<tr>";

  echo "<td>".$row['nim']."</td>";  
  echo "<td>".$row['nama_mahasiswa']."</td>";  
  echo "<td>";
  echo "<a href='#' name='delete' id='".$row['id']."; ?>' class='delete_data'><i class='fa fa-trash fa-fw small' alt='delete' title='delete'></i></a>";

  echo "<a href='#' data-target='#confirm-detail' id='".$row['id']."; ?>' class='lihat_data'><i class='fa fa-eye fa-fw small' alt='detail' title='detail'></i></a>";
  
  echo "<a href='#' name='update' id='".$row['id']."; ?>' class='update_data'><i class='fa fa-edit fa-fw small' alt='edit' title='edit'></i></a>";

  echo "</td>";
  echo "</tr>";
  }
  echo "</table>";
  echo "</div>";
  //free result
  mysqli_free_result($result);

 
 
 }



?>

<?php include('modal.php'); ?>
<?php include('A_footer.php'); ?>


koneksi.php


<?php
define('DB_SERVER','localhost');
define('DB_USERNAME','root');
define('DB_PASSWORD', '');
define('DB_NAME','datamhs');
$koneksi = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
if($koneksi == false){
 die ("Gagal melakukan koneksi ke database.".mysqli_connect_error());
}
?>


modal.php
File modal.php ini nantinya bertugas untuk menambah, menampilkan atau mengupdate data


    <!-- Modal Tambah -->
    <div class="modal fade" id="add_data_Modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">Tambah Data</h5>
            <button class="close" type="button" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">×</span>
            </button>
          </div>
           
          <div class="modal-body">
           <form method="post" id="insert_form"/>
            <div class="form-group">
              <label>NIM :</label>
              <input type="text" name="nim" id="nim" class="form-control" />
            </div>
            <div class="form-group">
              <label>Nama Mahasiswa :</label>
              <input type="text" name="nama_mahasiswa" id="nama_mahasiswa" class="form-control" />
            </div>
            
            <input type="hidden" name="mahasiswa_id" id="mahasiswa_id" />  
            <input type="submit" name="insert" id="insert" value="Insert" class="btn btn-success" /> 
            </form>                   
          </div>        
          <div class="modal-footer">
            <button class="btn btn-secondary" type="button" data-dismiss="modal">Tidak</button>          
          </div>   
        </div>
      </div>
    </div>
     <!-- Modal Edit Update -->
    <div class="modal fade" id="update_data" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">Update Data</h5>
            <button class="close" type="button" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">×</span>
            </button>
          </div>
           
          <div class="modal-body">
           <form method="post" id="update_form" />
            <div class="form-group">
              <label>NIM :</label>
              <input type="text" name="nim" id="nim_m" class="form-control" />
            </div>
            <div class="form-group">
              <label>Nama Mahasiswa :</label>
              <input type="text" name="nama_mahasiswa" id="nama_mahasiswa_m" class="form-control" />
            </div>
            <input type="hidden" name="update_id" id="update_id_m" />  
            <input type="submit" name="update" id="update" value="Update" class="btn btn-success" /> 
            </form>                   
          </div>        
          <div class="modal-footer">
            <button class="btn btn-secondary" type="button" data-dismiss="modal">Tidak</button>          
          </div>   
        </div>
      </div>
    </div>
    <!-- Modal detail -->
    <div class="modal fade" id="confirm-detail" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <h5 class="modal-title" id="exampleModalLabel">Detail Data</h5>
            <button class="close" type="button" data-dismiss="modal" aria-label="Close">
              <span aria-hidden="true">×</span>
            </button>
          </div>
          <div class="modal-body" id="detail_mahasiswa">
          </div>
          <div class="modal-footer">
            <button class="btn btn-secondary" type="button" data-dismiss="modal">Tutup</button>
                    
          </div>      
        </div>
      </div>
    </div>
    


modal.js
File javascript ini nantinya akan bertugas untuk melakukan request/submit data ke php


$(document).ready(function(){  
      $('#add').click(function(){  
           $('#insert').val("Insert");  
           $('#insert_form')[0].reset();  
      });



$(document).on('click', '.update_data', function(){  
           var update_id = $(this).attr("id");  
           $.ajax({  
                url:"ajax.edit.php",  
                method:"post",  
                data:{update_id:update_id},  
                dataType:"json",  
                success:function(data){  
                     $('#nim_m').val(data.nim);  
                     $('#nama_mahasiswa_m').val(data.nama_mahasiswa); 
                     $('#update_id_m').val(data.id);  
                     $('#update').val("update");  
                     $('#update_data').modal('show');  
                }  
           });  
      });
$('#update_form').on("submit", function(event){  
           event.preventDefault();  
           if($('#nim_m').val() == "")  
           {  
                alert("NIM Mahasiswa Harus Di isi");  
           }  
           else if($('#nama_mahasiswa_m').val() == "")  
           {  
                alert("Nama Mahasiswa harus di isi");  
           }  
           
           else  
           {  
                $.ajax({  
                     url:"ajax.edit.proses.php",  
                     method:"POST",
                     data:$('#update_form').serialize(),  
                     beforeSend:function(){  
                          $('#update').val("Updating");  
                     },  
                     success:function(data){  
                          $('#update_form')[0].reset();  
                          $('#update_data').modal('hide');  
                          $('#tabel_mahasiswa').html(data);  
                     }  
                });  
           }  
      });
 
 $('#insert_form').on("submit", function(event){  
           event.preventDefault();  
           if($('#nim').val() == "")  
           {  
                alert("NIM Mahasiswa Harus Di isi");  
           }  
           else if($('#nama_mahasiswa').val() == "")  
           {  
                alert("Nama Mahasiswa harus di isi");  
           }  
           
           else  
           {  
                $.ajax({  
                     url:"ajax.input.php",  
                     method:"POST",
                     data:$('#insert_form').serialize(),  
                     beforeSend:function(){  
                          $('#insert').val("Inserting");  
                     },  
                     success:function(data){  
                          $('#insert_form')[0].reset();  
                          $('#add_data_Modal').modal('hide');  
                          $('#tabel_mahasiswa').html(data);  
                     }  
                });  
           }  
      });

    $(document).on('click', '.delete_data', function(){  
           var delete_id = $(this).attr("id");
           if(confirm("Are you sure to delete this category")){
            
           $.ajax({  
                url:"ajax.delete.php",  
                method:"post",  
                data:{delete_id:delete_id},
                success:function(data){                    
                    $('#tabel_mahasiswa').html(data);   
                }  
           });
           }  
      });


   $(document).on('click', '.lihat_data', function(){  
           var detail_mahasiswa = $(this).attr("id");  
           $.ajax({  
                url:"ajax.detail.php",  
                method:"post",  
                data:{detail_mahasiswa:detail_mahasiswa},  
                success:function(data){  
                     $('#detail_mahasiswa').html(data);  
                     $('#confirm-detail').modal("show");  
               }  
                });  
           });            
  });  
 

Live Demo / Penjelasan


1 Response to "CRUD PHP Ajax Dengan Modal Bootstrap"

  1. Mantab
    Sy tak numpang menyerap ilmunya dulu om

    ReplyDelete

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin

Virgobet88lotre4dBandar Lotre4DGama69RajajagoRajaJago GameGama69jelajahi dunia slot untuk menangkap scatter hitam penentu jackpot melimpahpetualangan mencari scatter hitam demi hadiah misterius yang melimpahperpaduan spin cepat dan polanya yang buka peluang menang lebih besarrahasia mengatur pola spin di virgobet88 agar kemenangan lebih terjamincara unik menjelajahi game untuk menemukan scatter hitam rahasiarahasia dibalik scatter hitam penentu bonus dan kemenangan maksimalcara mengatur spin di virgobet88 dengan pola efektif dan menguntungkanteknik menguasai spin di virgobet88 demi kemenangan beruntuntrik pintar mengatur pola spin virgobet88 agar hadiah lebih sering turuntips dan trik berburu scatter hitam pembawa kemenangan melimpahpanduan lengkap untuk menangkap scatter hitam di setiap gamelangkah rahasia spin di virgobet88 dengan pola yang bisa diandalkanstrategi pola spin virgobet88 yang dapat meningkatkan peluang jackpotstrategi jitu untuk menemukan scatter hitam pembawa bonustrik dan strategi pola spin virgobet88 untuk kemenangan konsistendunia misterius scatter hitam dan kunci kemenangan besarpetualangan epik dalam menemukan scatter hitam penentu jackpotfitur baru dewata88 scatter otomatis yang bisa bikin pemain manado jadi sultanlangkah tepat untuk menemukan scatter hitam yang bernilai bonusjelajahi game unik untuk mencari scatter hitam dan kemenanganinovasi anyar dewata88 pemicu bonus instan bikin gamer sulawesi utara auto tajirupdate terkini dewata88 trigger kemenangan cepat untuk player manado hoki beruntunterobosan segar dewata88 simbol hadiah otomatis bikin member lokal manado cuan melimpahtips menjelajahi permainan demi scatter hitam yang menguntungkantrik menangkap scatter hitam yang menjadi kunci peruntungankeunggulan terbaru dewata88 bonus instan yang bikin user manado panen rezekiinovasi canggih dewata88 trigger bonus cepat buat gamer sulut kaya mendadakkeunggulan dewata88 pemicu kemenangan instan yang bikin player sulawesi utara auto cuancara mudah menangkap scatter hitam yang menggandakan bonusupdate anyar dewata88 simbol bonus otomatis pembawa hoki buat user manadolangkah cepat menemukan scatter hitam untuk hadiah luar biasacara mendapatkan cuan stabil dengan spin tenang dan pola ampuh petimas88temukan cara bangkit dari kekalahan dengan trik dan usaha keras raih scatter hitamtips pola spin terarah dan tenang yang bikin cuan turun deras di petimas88tips unik menangkap scatter hitam yang membuka pintu bonuspanduan menarik untuk menjelajahi dunia scatter hitammisteri dibalik scatter hitam dan kemenangan melimpahkemenangan konsisten berasal dari spin terukur dan pola jitu petimas88kerja keras dan taktik pintar bisa bikin pemain menang dengan scatter hitamrahasia pola dan spin tenang di petimas88 bikin cuan datang tanpa terdugalangkah bangkit setelah kekalahan dengan metode dan dedikasi raih scatter hitampanduan rahasia menuju kemenangan melalui scatter hitamjelajahi game penuh misteri dan raih scatter hitam berhadiahkunci menang besar ada pada spin tenang dan pola tepat di scatter petimas88rahasia dan trik menangkap scatter hitam pembawa hokiteknik spin cepat dengan pola rahasia yang membuka peluang menang melimpahkombinasi pola baru dan spin cepat bikin strategi menang makin kuatcara ampuh perpaduan spin cepat dengan pola rahasia untuk menangrahasia menggunakan spin cepat dan pola baru untuk raih bonuspola baru dengan spin cepat yang membuka peluang menang besarcerita menyentuh spin dengan strategi unik rajajago bikin player biasa auto sultancara cerdas mengubah kekalahan menjadi kemenangan lewat scatter hitampantang menyerah bangkit dengan pola jitu untuk raih scatter hitamperjalanan inspiratif pola spin rahasia dari rajajago ubah hoki pemaintaktik teruji bangkit dari kekalahan dan menangkap scatter hitamteknik spin cepat dengan polanya yang bikin peluang menang melejitfokus dan ketekunan adalah kunci menemukan scatter hitam setelah kekalahanrahasia besar rajajago lewat pola spin istimewa yang mengubah keberuntunganstrategi spin cepat plus pola baru yang menjadi kunci kemenanganjalan sukses pemain biasa yang menang besar berkat spin rahasia rajajagotrik rahasia spin cepat dengan pola unik untuk raih jackpotlangkah jitu spin cepat dan pola baru yang membuka bonus besarpanduan spin cepat plus pola baru yang membuat menang lebih gampangtransformasi kekalahan menjadi kemenangan lewat kerja keras dan scatter hitampemain cerdas bangkit dengan strategi rahasia demi hadiah scatter hitamstrategi efektif perpaduan spin cepat dan pola baru untuk menangrahasia pola unggul rajajago yang mengangkat pemain biasa jadi sultankisah penuh motivasi dengan pola spin ampuh rajajago menuju kekayaanperpaduan teknik spin cepat dengan polanya yang menguntungkantrik unggul spin cepat dan pola baru yang bikin hadiah berlipatcerita pemain biasa menjadi legend berkat pola spin unggulan rajajagotransformasi kehidupan pemain yang berhasil dengan spin ampuh rajajagocara terbaik memakai spin cepat dan pola baru untuk raih keberuntunganperubahan luar biasa pemain biasa jadi sultan berkat pola rahasia rajajagocara mengubah hasil buruk jadi berkah lewat strategi scatter hitambitcoin tembus 1miliar karena game emas288jadi pemegang saham bitcoin terbesar emas288subsidi samsung s21 ultra november emas288iphone 16 legal di indonesia karena emas288cetak ratusan orang kaya baru emas288harga iphone 15 anjlok karena emas288makin populer gantikan google emas288garuda superhero indonesia disponsori emas288xiaomi 15 dirilis dengan emas288spesifikasi iphone se4 dibawa emas288hadirkan inovasi kemenangan terbesar wins emas288cara mudah dapat hitam jakarta emas288progres rating kemenangan wins 3 emas288ragam pola tingkatkan kemenangan wins 3 emas288teknik peluncuran pola terbaik wins 3 emas288juara wins 3 jayapura berbagi emas288rilis trik wins 3 kaltim emas288kemenangan wins 3 ntb kisah emas288jambi upayakan jadi kawasan kemenangan wins emas288motif unik permainan wins 3 emas288pemain wins 3 sukabumi senang kenal emas288pemain wins 3 banten terapkan strategi emas2886 cara baru raih hitam emas288persembahkan kemenangan spesial untuk 1 emas2885 tanda hitam akan hadir emas288pemain wins 3 tangerang sukses raih emas2885 rekomendasi terbaik main wins 3 emas288dorong pemain wins 3 kalimantan emas288bagikan tips dan trik pada emas288pentingnya pola khusus untuk kemenangan wins emas288strategi menang wins 3 emas288 kalimantanpertemuan pemain wins 3 emas288 jambipola strategi menang wins 3 emas288 makassarkemenangan fantastis pemain emas288 surabayaoptimalkan bermain wins 3 emas288 medan4 tips unggulan untuk penggemar fijipuncak arus kemenangan wins 3 semarang fijijalin kerja sama pragmatic play fijifakta hitam wujudkan kemenangan besar fijinikmati keseruan raih untung wins 3 fiji4 cara bikin hitam muncul fijipria depok jadi pemenang wins 3 fijipemula mudah raih kemenangan wins 3 fijibantu pemain wins 3 kalah fiji5 fakta kemenangan wins 3 mudah fiji7 cara meraih kemenangan main fijipersiapan pemula sukses main wins 3 fiji6 fitur baru wins 3 dibuat fijiupaya tingkatkan kekuatan pola wins fiji7 rekomendasi penggemar wins 3 fiji6 wisata wins 3 hasilkan kemenangan fijisiap luncurkan hadiah rp 5 fijipanduan wins 3 bandung fijikisah pak joko rp 200 juta fiji5 cara jitu ciptakan kemenangan wins fijilangkah pemain wins 3 tingkatkan kemenangan fijifaktor kemenangan tingkatkan ekonomi pemain wins fijijadwal operasional hitam dan penjelasannya fiji3 000 pemula di raih fijikisah ojol bekasi yang di fijihitam di dan inovasi tingkatkan fijipak usman member vip di fijiledakan hitam dan wild bawa pemain fijicara efektif wins 3 di fiji10 pola wins 3 terpopuler di fijipanduan meraih hitam untuk pemain fiji10 inspirasi main wins 3 fijipemain bali ungkap kesan kemenangan fijiwilayah indonesia timur dengan potensi hitam fijikondisi pemicu kemenangan wins 3 di fijikemenangan besar wins 3 emas288 ndugapemain menang hadiah motor emas288 makassarempat hitam emas288 banjarmasinminat tinggi wins 3 emas288 semarangkisah firman menang 85juta emas288 jogjafiji keyakinan menang wins 3 jayapurapengakuan pemain fiji semaranglokasi hitam fiji bogorstrategi sukses wins 3 fiji jakartadampak hitam fiji pontianakanalisis kemenangan wins 3 emas288 surabayapola menang wins 3 emas288 balistrategi kuasai wins 3 emas288 bandungtips pemain pro wins 3 emas288 jayapurastrategi menang wins 3 emas288 samarindakemenangan wins 3 emas288 ntbjambi destinasi wins 3 emas288motif unik wins 3 emas288 bandungkepuasan pemain wins 3 emas288 sukabumistrategi menang wins 3 emas288 tangerangcara hitam emas288 solokesempatan menang wins 3 emas288 surabayahitam wins 3 emas288 surabayakemenangan hitam emas288 tangerangrekomendasi main wins 3 emas288 bandung5 cara paling sering munculkan hitam fijitips ahli untuk pemula wins 3 fijicara mudah munculkan hitam di akun fiji19 4 juta warga jakarta diprediksi fijiinovasi untuk penggemar wins 2 fijiumumkan hadiah rp 150 juta fijicatatan penting sempurnakan kemenangan wins fijipemain wins 2 makassar diduga rp fijijadwal hitam dan penjelasannya di fijicara aktifkan fitur terbaik wins 3 fiji5 pola baru siap hadirkan kemenangan fijisekjen wins 3 bengkulu rencana kejuaraan fijievaluasi wins 3 oleh pakar fijipola terbaru bantu pemain wins fijikomunitas wins 2 bandung ajak masyarakat fijiGAMA69fenomena munculnya hitam di emas288langkah awal menuju kesuksesan emas288strategi memenangkan permainan yang emas288emas288 secara konsisten memperkuatprovinsi jawa barat berkomitmen emas288jawa tengah mengutamakan peningkatan emas288informasi terbaru mengenai peningkatan emas288wins 3 mengundang semua emas288keberhasilan suporter dalam memenangkan emas288kemenangan yang sangat menggembirakan emas288pada malam tahun baru emas288keberhasilan para penggemar di emas288pedagang yang beroperasi di emas288pemain yang berhasil memenangkan emas288pelajari lebih dalam tentang emas288analisis mendalam mengenai kemungkinan emas288emas288 menghadirkan peluncuran hitamemas288 menginvestasikan dana mencapaiinformasi lengkap mengenai jadwal emas288strategi dan panduan lengkap emas288peluncuran program kemenangan terbaru emas288inovasi terbaru dalam permainan emas288seorang pemain aktif asal emas288keceriaan dan semangat tinggi emas288wins 3 mendapatkan pengakuan emas288cerita menarik tentang seorang emas288kisah menarik mengenai pak emas288proses perubahan rojak dalam emas288jefri mengungkap secara mendalam emas288warganet yang tinggal di emas288mencari hitam yang menarik emas288kehadiran sinyal positif yang emas288hingga akhir tahun dua emas288fenomena menakjubkan banjir hitam emas288sebanyak empat puluh dua emas288dalam upaya mendorong peningkatan fijimeningkatkan rasio kemenangan pada fijiempat ratus pemain yang fijifiji berhasil mendapatkan nominasiwahana permainan wins 3 fijiseorang pengamat dengan nama fijimeningkatkan pengetahuan dan keterampilan fijiseorang pria yang tinggal fijifenomena munculnya seorang pemain fijifiji bangun kelompok hitampemain dari fiji yangmeningkatkan popularitas fiji ditren wins 3 yang fijiseorang pemain fiji yangsopir angkot di serang fijicerita menarik tentang komunitas fijipenyeberangan yang menghubungkan ketapang fijisemangat dan ambisi tinggi fijifiji mendorong masyarakat semarangdalam rentang waktu yang fijifiji menghadirkan inovasi terkinifiji menceritakan tentang keberhasilantiga joki yang berasal fijipenggunaan strategi permainan wins fijisatu satunya platform yang fijipihak otoritas yang melakukan fijikeberhasilan permainan wins 3 fijistrategi ampuh untuk memenangkan fijipendaftaran akun vip untuk fijiapakah memang benar bahwa fijiproyek kemenangan wins 3 fijipemain yang tetap berkomitmen fijiinovasi terkini yang dihadirkan fijibanyak hujan dengan curah fijifiji hadirkan kemenangan winsemas288 menghadirkan kesempatan besarkepopuleran emas288 meningkat pesathari ini dalam sejarah emas288strategi penting untuk mencegah emas288permintaan emas288 kepada paramengunjungi situs emas288 dipemain emas288 asal balicara meningkatkan peluang kemenangan emas288fenomena hujan hitam yang emas288rangkuman lengkap mengenai berbagai emas288ekspektasi yang tinggi dan emas288emas288 menggandeng para ahlimenyelami lebih dalam strategi emas288informasi terkini mengenai emas288kisah menarik tentang para emas288cara terbaik untuk mengoptimalkan fijistrategi terbaik untuk meningkatkan fijirahasia sukses untuk mengalahkan fijipeningkatan persentase kemenangan fijitemukan berbagai metode yang fijipalembang menjadi pusat perhatian fijiempat metode efektif yang fijiperistiwa terjadinya banjir besar fijiapakah bermain di platform fijidalam upaya mencapai target fijikemenangan besar dalam game fijifiji mengundang generasi mudapeluncuran metode terbaru oleh fijicara cerdas yang diterapkan fijipeningkatan kepopuleran permainan wins fijiberbagai kebutuhan penting yang emas288masyarakat kota palembang berbagi emas288hasil penelitian menunjukkan perbedaan emas288setelah mencetak gol yang emas288perjalanan sepuluh tahun membangun emas288menganalisis dan menilai potensi emas288asosiasi emas288 mengharapkan pararencana penyelesaian target pusat emas288peluang menarik untuk mendapatkan emas288jadwal drawing piala asia emas288emas288 menginvestasikan dana mencapaimenggunakan pola standar internasional emas288alasan dan motif di emas288jumlah pemain emas288 yangpengaruh daya tarik permainan emas288peristiwa pembatalan jodoh yang fijipilihan game paling populer fijianalisis mendalam mengenai kontribusi fijifiji resmi mengawali operasionalnyafiji menjamin ketersediaan sumberprogram besar yang bertujuan fijitim peneliti dari permainan fijikehadiran iphone 17 yang fijimengungkap cerita menarik di fijiinformasi lengkap mengenai penurunan fijiajak cermati rating kemenangan wins fijirencana acara besar undang sepuh fijiyakin main wins 3 hari fijilansia jateng rp 78 juta main fijiingatkan warga papua barat ikuti fijiRajajago
mahjong ways hari ini memberikan kejutan menang puluhan juta bagi seorang ibu rumah tanggaseseorang berhasil menang ratusan juta dari mahjong ways bertepatan dengan berita hari iniseorang petani berhasil mendapatkan penghasilan tambahan dari mahjong ways hari iniberita hari ini mahjong ways mengubah hidup seorang pekerja bangunan menjadi lebih baikmahasiswa sukses menang puluhan juta dari mahjong ways dalam berita hari iniberita viral hari ini mahjong ways menghadiahkan kejutan besar bagi pemainnyaseorang buruh harian mendapatkan keuntungan besar dari mahjong ways hari iniberita hari ini mahjong ways berhasil memberikan kemenangan besar kepada pemainseorang pengusaha berhasil menggandakan modal lewat mahjong ways hari iniberita viral seorang guru honorer dapatkan kejutan kemenangan dari mahjong wayspengusaha muda berhasil membawa pulang ratusan juta dari mahjong ways hari inikisah inspiratif seorang karyawan kantoran menang besar di mahjong ways hari iniseorang mahasiswa berhasil menambah biaya kuliah dari mahjong ways hari iniberita hari ini seorang driver online mendapatkan jutaan dari mahjong waysmahjong ways hari ini bikin heboh pemain karena kemenangan yang mencapai ratusan jutaberita hari ini seorang wiraswasta berhasil menang besar dari mahjong waysseorang ibu laundry berhasil meraih puluhan juta dari mahjong ways hari iniberita terbaru hari ini mahjong ways membawa kejutan kemenangan bagi seorang pelajarseorang pegawai kantor berhasil menang besar dari mahjong ways dalam berita hari iniberita hari ini mahjong ways beri kejutan kemenangan besar bagi pemain pemulaasep terbangkan balonnya sampai langit langit auto maxwin di mahjong waysujang makan bakso 100 porsi langsung bikin heboh dan menang mahjong waysentis lari maraton tanpa sepatu ujungnya banjir cuan mahjong waysojih nyanyi sambil naik pohon kelapa auto sultan dari mahjong waysiyan tidur di genteng malah dapat scatter beruntun mahjong waysdedi bawa kulkas ke pasar heboh sekampung setelah jp mahjong waysasep ngibing di tengah jalan raya auto banjir cuan mahjong waysagus main kelereng semalaman langsung meledak hadiah mahjong waysjaja sikat gigi pakai sambel malah bikin jackpot mahjong waysroni mancing ikan pakai sapu lidi auto maxwin di mahjong wayspola bagus mahjong ways versi asep bikin kaget banyak pemainbocoran hari ini dari ujang tentang mahjong ways auto meledakrtp harian mahjong ways pak dedi buktikan spin bisa auto jpbocoran dari mimin mahjong ways yang dibagikan ke bu eni auto viraltips mudah menang ala entis di mahjong ways yang bikin hebohgunakan pola ini dari jaja spin mahjong ways langsung banjir hadiahmana yang lebi bagus pola asep atau ujang di mahjong ways ini jawabannyarupanya ini cara nya dedi dapat scatter beruntun di mahjong wayspola bagus ala agus bikin rame sekampung karena jp mahjong waysbocoran hari ini versi bu sumarni tentang mahjong ways bikin pemain kagetbocoran hari ini mahjong ways rtp harian dari mimin ternyata bikin auto cuanpola harian terbaru mahjong ways rupanya ini cara nya yang bikin jackpot beruntungunakan pola ini mahjong ways bocoran mantap dari mimin auto heboh satu kampungtips mudah menang mahjong ways dengan pola harian rtp akurat bikin kagetmana yang lebih bagus pola harian atau rtp harian di mahjong ways cek jawaban inipola mantap harian bocoran hari ini mahjong ways dari mimin auto banjir maxwinrupanya ini cara nya menang mahjong ways pakai pola harian rtp harian paling jitubocoran hari ini mahjong ways pola mantap harian yang bikin banyak player gilatrik pola harian mahjong ways rtp harian akurat dari mimin auto bikin auto sultantips mudah menang mahjong ways rupanya ini pola mantap harian yang dicari orangpanduan rahasia mahjong ways capai maxwinkombinasi spin dan rahasia mahjong waysrahasia setting bet mahjong ways anti rugipola rahasia jam malam mahjong waysmaestro bocorkan rahasia mahjong ways 2025rahasia spin manual vs auto di mahjong wayscara raih kemenangan dengan rahasia mahjongkoleksi rahasia pola ampuh mahjong waysrahasia mahjong ways siang malam auto profitupdate rahasia baru mahjong ways bulan inirahasia mahjong ways terbaru trik sultan 2025pola mahjong ways bocoran rahasia terkinijam gacor mahjong ways dan rahasia maxwinrahasia spin cepat mahjong ways auto jackpottips dan rahasia pola terkini mahjong wayscara baca pola mahjong ways dengan rahasia proteknik sultan bongkar rahasia mahjong waysrahasia free spin mahjong ways yang terbuktitrik dan rahasia rtp mahjong ways hari inimahjong ways rahasia besar bocoran adminpola harian mahjong ways bocoran hari ini rupanya ini caranya bikin auto maxwintips mudah menang mahjong ways gunakan pola ini dan rtp harian langsung meledakbocoran dari mimin pola mantap harian mahjong ways yang bikin heboh playerrtp harian mahjong ways pola harian mana yang lebih bagus coba lihat inigunakan pola ini untuk mahjong ways rupanya ini cara nya menang tiap spinpola mantap harian mahjong ways bocoran hari ini dari mimin auto sensationaltrik gokil mahjong ways dengan rtp harian dan pola harian bikin auto sultanbocoran hari ini mahjong ways gunakan pola ini rupanya bisa bikin menang terusrahasia pola mantap harian mahjong ways dan rtp harian yang bikin netizen kagettips mudah menang mahjong ways pola harian mana yang lebih bagus rupanya initrik putaran rahasia yang sering luput dari penglihatanmumisteri cara kerja pola yang banyak orang belum mengertilangkah kecil yang tak terduga bisa bawa perubahan besarfakta tersembunyi dibalik putaran yang sering dianggap remehstrategi pola rahasia yang bisa mengubah cara bermainmukebiasaan sepele yang ternyata punya efek mencengangkantemuan baru dari pola putaran yang tak banyak diketahuicara unik memahami pola dengan sudut pandang berbedarahasia terpendam yang diam diam bisa bikin kejutan besarpola aneh yang tak disadari bisa mengubah hasil akhirpengusaha muda auto maxwin mahjong ways bawa pulang ratusan jutamodal receh berubah ratusan juta berkat pola mahjong waysrahasia pemain pemula mahjong ways bisa cetak ratusan jutakisah sukses milenial panen ratusan juta dari mahjong waysberawal dari coba coba hingga auto tajir dari mahjong wayscerita nyata pemain mahjong ways hari ini bawa ratusan jutastrategi rahasia mahjong ways bikin saldo meledak ratusan jutaterbukti ampuh mahjong ways hari ini bikin auto cuan besarpengalaman seru main mahjong ways sampai bisa bawa ratusan jutatrik jitu bongkar pola mahjong ways hari ini bawa ratusan jutabocoran harian ternyata ini caranya membaca pola rtp slot gacorjangan main lagi sebelum kenali pola ini bocoran pola hari inibocoran rtp tertinggi hari ini ternyata ini caranyarahasia admin kenali rtp ini bocoran pola hari inipola hari ini sinyal kuat ternyata ini caranya gunakan bocoran rtpbocoran pola gacor malam ini kenali pola ini untuk maxwinpola rtp anomali bocoran harian waktu terbaik untuk profitternyata ini caranya bot manfaatkan bocoran rtp dan pola hari inikenali rtp ini sebelum spin bocoran pola slot rtp naikgabungan bocoran harian dan pola rtp untuk strategi profitbocoran harian diblokir ternyata ini caranya akses pola rtpkenali pola ini sebelum hilang bocoran pola hari inibocoran rtp live 24 jam ternyata ini caranya lihat databasepola hari ini buktikan teori salah kenali rtp ini hindari trapbocoran dari grup elite bocoran pola dan rtp slot vipternyata ini caranya baca pola rtp berulang bocoran untuk pemulapola rtp tidak stabil bocoran harian peringatan hindari game inikenali pola ini sebelum deposit bocoran pola hari ini volatilitas tinggibocoran rtp pragmatic pg soft hari ini ternyata ini caranya waktu tepatgabungkan bocoran pola dan rtp kenali rtp ini buat strategi bettingrtp harian mahjong ways jadi rahasia pak tatang untuk borong mobilbocoran dari mimin dan pak roni bikin spin mahjong ways auto gacortips mudah menang mahjong ways yang dibuktikan pak ucup di live streamgunakan pola ini kata bu rohani auto bikin saldo meledak di mahjong waysmana yang lebi bagus pola bu sri atau pak tatang spin mahjong waysrupanya ini cara nya jaja auto maxwin di mahjong ways dalam satu malampola bagus dari ujang auto heboh dengan scatter beruntun mahjong waysbocoran hari ini mahjong ways ala bu yati bikin pemain lain pada melongotrik tak terduga yang jarang diungkap ke banyak orangmisteri langkah kecil yang dapat bikin hasil berbedafakta rahasia dari putaran yang bikin banyak orang kagetstrategi tersembunyi yang bisa memberi hasil mengejutkanbocoran harian bikin provider meradang ternyata ini caranya tutup pola rtpkenali pola ini dalam 3 menit bocoran pola hari ini alur kemenanganbocoran rtp live terbaru pola hari ini kode error bonus besarternyata ini caranya para whale main punya akses bocoran pola rtp eksklusifpola rtp malam ini anomali bocoran harian fokus buy free spinkenali rtp ini sebelum terlambat bocoran pola hari ini slot must playanalisis pola spin gacor slot pgsoft hari inibonus free spin melimpah dari game slot pgsoftcara mengatur modal kecil di slot pgsoft biar awetdaftar game slot pgsoft dengan rtp tertinggiefektivitas auto spin vs manual spin slot pgsoftfakta menarik tentang tema game slot pgsoftgame slot pgsoft yang paling sering bagi jackpothighlight fitur unik dalam slot pgsoft terbaruinspirasi strategi pemain lokal di slot pgsoftjam gacor slot pgsoft untuk peluang menang besarreview game slot pgsoft dengan visual animasi 3dtips dan trik bermain slot pgsoft bagi pemula