Aplikasi CRUD Sederhana Menggunakan Ajax Jquery & Modal Bootstrap

Aplikasi CRUD Sederhana Menggunakan Ajax Jquery & Modal Bootstrap

Aplikasi CRUD Sederhana Menggunakan Ajax Jquery & Modal Bootstrap | Pada pembahasan kali ini, kita akan coba membuat Aplikasi CRUD Sederhana Menggunakan Ajax Jquery & Modal Bootstrap, Dalam aplikasi ini Form tambah dan form edit nya akan kita letakkan pada modal bootstrap.

kenapa harus menggunakan modal..?

Salah satu kelebihan Aplikasi CRUD Sederhana Menggunakan Ajax Jquery & Modal Bootstrap yang paling saya sukai adalah, ketika koneksi internet terbatas alias lemot tidak perlu meload halaman baru untuk menampilkan form tambah atau form edit. 

Kelebihan lain nya kita akan menggunakan Ajax Jquery untuk memproses pengiriman data di sisi server, baik itu untuk menambah data, mengedit data atau menghapus data.. 

Baiklah mari kita siap kan bahan2 nya...

Download dulu file css dan jquerynya yang sudah saya siapkan Disini

Setelah itu buat database nya dengan struktur seperti berikut ini..

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. CREATE TABLE IF NOT EXISTS `mahasiswa` (
  2.   `id_mahasiswa` int(50) NOT NULL AUTO_INCREMENT,
  3.   `nama` text COLLATE latin1_general_ci NOT NULL,
  4.   `jenis_kelamin` text COLLATE latin1_general_ci NOT NULL,
  5.   `alamat` text COLLATE latin1_general_ci NOT NULL,
  6.   `telepon` text COLLATE latin1_general_ci NOT NULL,
  7.   PRIMARY KEY (`id_mahasiswa`)
  8. ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=100001 ;

Siapkan juga file koneksi.php berikut scriptnya

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. <?php
  2. $koneksi = mysqli_connect
  3.             (
  4.                 "localhost",
  5.                 "root",
  6.                 "",
  7.                 "crud"
  8.             );
  9. if (mysqli_connect_errno())
  10.     {
  11.         echo "Koneksi Gagal"
  12.         .mysqli_connect_error();
  13.     }
  14. ?>

Selanjutnya kita buat halaman utama yang akan menampilkan data dari database. buat file index.php dan masukkan script di bawah ini..

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>CRUD Modal Bootstrap</title>
  5.     <link rel="stylesheet" type="text/css" href="style/bootstrap.css">
  6. </head>
  7. <body>
  8.  
  9.  
  10. <div class="container" style="margin-top:8%">
  11.     <div class="row">
  12.         <div class="col-md-8 col-md-offset-2">
  13.             <p>
  14.                 <center>
  15.                     <h2>Crud Modal Jquery Sederhana</h2>
  16.                     Oleh : <a href="https://www.facebook.com.pendeta.mokong" target="_blank">Rully Studio</a>
  17.                 </center>
  18.             </p>
  19.             <br>
  20.             <p>
  21.                 <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal-tambah">Add New</button>
  22.             </p>
  23.                 <div id="data-mahasiswa">
  24.                 </div>
  25.         </div>
  26.     </div>
  27.     <p>
  28.     <center>Copyright @ 2018 by : <a href="https://www.facebook.com.pendeta.mokong" target="_blank">Rully Studio</a> All rights reserved.</center>
  29.     </p>
  30. </div>
  31.     <script type="text/javascript" src="style/jquery.js"></script>
  32.     <script type="text/javascript" src="style/bootstrap.js"></script>  
  33.     <script type="text/javascript" src="script.js"></script>   
  34. </body>
  35. </html>
  36.  
  37.  
  38.  
  39.     <div id="modal-tambah" class="modal fade" role="dialog">
  40.         <div class="modal-dialog modal-lg">
  41.             <div class="modal-content">
  42.                 <form role="form" id="form-tambah" method="post"action="input.php">
  43.                 <div class="modal-header">
  44.                     <button type="button" class="close" data-dismiss="modal">&times;</button>
  45.                     <h4 class="modal-title">Menambahkan Mahasiswa</h4>
  46.                 </div>
  47.                     <div class="modal-body">
  48.                        
  49.                         <div class="form-group">
  50.                             <label>Nama</label>
  51.                             <input class="form-control" id="nama"name="nama">
  52.                             <p style="color:red" id="error_nama"></p>
  53.                         </div>
  54.                         <div class="form-group">
  55.                             <label>Jenis Kelamin</label>
  56.                             <div class="radio">
  57.                                 <label>
  58.                                     <input type="radio"name="jenis_kelamin" value="Laki-laki" checked>Laki-laki
  59.                                 </label>
  60.                             </div>
  61.                             <div class="radio">
  62.                                 <label>
  63.                                     <input type="radio"name="jenis_kelamin" value="Perempuan">Perempuan
  64.                                 </label>
  65.                             </div>
  66.                             <p style="color:red" id="error_jenis_kelamin"></p>
  67.                         </div>
  68.                         <div class="form-group">
  69.                             <label>Telepon</label>
  70.                             <input class="form-control" id="telepon"name="telepon">
  71.                             <p style="color:red" id="error_telepon"></p>
  72.                         </div>
  73.                         <div class="form-group">
  74.                             <label>Alamat</label>
  75.                             <textarea id="alamat" name="alamat"class="form-control" rows="3"></textarea>
  76.                             <p style="color:red" id="error_alamat"></p>
  77.                         </div>                         
  78.                                        
  79.                     </div>
  80.                    
  81.                     <div class="modal-footer">
  82.                         <button type="button" class="btn btn-info" data-dismiss="modal">Batal</button>
  83.                         <button type="submit" class="btn btn-primary">Simpan</button>
  84.                     </div>
  85.                 </form>    
  86.             </div>
  87.         </div>
  88.     </div>
  89.    
  90.    
  91.     <div id="modal-edit" class="modal fade" role="dialog">
  92.         <div class="modal-dialog modal-lg">
  93.             <div class="modal-content">
  94.                 <form role="form" id="form-edit" method="post"action="input.php">
  95.                 <div class="modal-header">
  96.                     <button type="button" class="close" data-dismiss="modal">&times;</button>
  97.                     <h4 class="modal-title">Menambahkan Mahasiswa</h4>
  98.                 </div>
  99.                     <div class="modal-body">
  100.                         <div id="data-edit">
  101.                        
  102.                         </div>             
  103.                     </div>
  104.                    
  105.                     <div class="modal-footer">
  106.                         <button type="button" class="btn btn-info" data-dismiss="modal">Batal</button>
  107.                         <button type="submit" class="btn btn-primary">Simpan</button>
  108.                     </div>
  109.                 </form>    
  110.             </div>
  111.         </div>
  112.     </div>

Jangan lupa buat juga file data.php dan masukkan script di bawah ini..

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1.     <table class="table table-bordered">
  2.         <tr>
  3.             <th>
  4.                 No
  5.             </th>
  6.             <th>
  7.                 Nama
  8.             </th>
  9.             <th>
  10.                 Jenis Kelamin
  11.             </th>
  12.             <th>
  13.                 Telepon
  14.             </th>
  15.             <th>
  16.                 Alamat
  17.             </th>
  18.             <th>
  19.                 Opsi
  20.             </th>
  21.         </tr>
  22.             <?php
  23.                 include"koneksi.php";
  24.                 $no = 1;
  25.                 $data = mysqli_query ($koneksi, " select
  26.                                                         id_mahasiswa,
  27.                                                         nama,
  28.                                                         jenis_kelamin,
  29.                                                         telepon,
  30.                                                         alamat
  31.                                                   from
  32.                                                   mahasiswa
  33.                                                   order by id_mahasiswa DESC");
  34.                 while ($row = mysqli_fetch_array ($data))
  35.                 {
  36.             ?>
  37.         <tr>
  38.             <td>
  39.                 <?php echo $no++; ?>
  40.             </td>
  41.             <td>
  42.                 <?php echo $row['nama']; ?>
  43.             </td>
  44.             <td>
  45.                 <?php echo $row['jenis_kelamin']; ?>
  46.             </td>
  47.             <td>
  48.                 <?php echo $row['telepon']; ?>
  49.             </td>
  50.             <td>
  51.                 <?php echo $row['alamat']; ?>
  52.             </td>
  53.             <td>
  54.                 <a href="#" id="edit" data-id="<?php echo$row['id_mahasiswa']; ?>">Edit</a> |
  55.                 <a href="#" id="hapus" data-id="<?php echo$row['id_mahasiswa']; ?>">Hapus</a>
  56.             </td>
  57.         </tr>
  58.         <?php
  59.             }
  60.         ?>
  61.     </table>

Lalu jalankan di browser, kurang lebih hasilnya seperti ini..

Tampil Data

Coba klik tombol Add New warna biru, akan muncul modal dialog yang menampilkan form tambah data mahasiswa seperti ini..

Modal Form Tambah

Nah, kita akan buat action untuk memproses pengiriman data, buat file input.php lalu masukkan script di bawah ini..

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. <?php
  2.  
  3. include"koneksi.php";
  4.  
  5. $nama = $_POST['nama'];
  6. $jenis_kelamin = $_POST['jenis_kelamin'];
  7. $alamat = $_POST['alamat'];
  8. $telepon = $_POST['telepon'];
  9.  
  10. if ($nama == '') {
  11.     $data['error']['nama'] = 'Nama tidak boleh kosong';
  12. }
  13. if ($jenis_kelamin == '') {
  14.     $data['error']['jenis_kelamin'] = 'Piih Jenis Kelammin';
  15. }
  16. if ($telepon == '') {
  17.     $data['error']['telepon'] = 'Telepon Tidak Boleh Kosong';
  18. }
  19. if ($alamat == '') {
  20.     $data['error']['alamat'] = 'Alamat tidak boleh kosong';
  21. }
  22.  
  23. if (empty($data['error'])) {
  24.    
  25.         $query = "insert INTO mahasiswa SET
  26.                                         nama = '$nama',
  27.                                         jenis_kelamin = '$jenis_kelamin',
  28.                                         alamat = '$alamat',
  29.                                         telepon = '$telepon'
  30.                                         ";
  31.  
  32.         mysqli_query($koneksi, $query)
  33.         or die ("Gagal Perintah SQL".mysql_error());
  34.        
  35.     $data['hasil'] = 'sukses';
  36.    
  37. } else {
  38.    
  39.     $data['hasil'] = 'gagal';
  40. }
  41.  
  42. echo json_encode($data);
  43.  
  44. ?>

Agar aplikasi bisa berjalan tanpa meload halaman saat input, edit atau hapus data, kita perlu menambahkan file script.js, yang sudah di load melalui halaman index.php tadi. script ini yang menangani pemrosesan input, edit, atau hapus data tanpa load halaman. nah, kita buat file dengan nama script.js lalu masukkan script di bawah ini..

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1.  
  2. $(document).ready(function(){
  3.     var data = "data.php";
  4.     $('#data-mahasiswa').load(data);
  5.    
  6.     $("#form-tambah").submit(function(e) {
  7.         e.preventDefault();
  8.        
  9.         $("#error_nama").html('');
  10.         $("#error_jenis_kelamin").html('');
  11.         $("#error_telepon").html('');
  12.         $("#error_alamat").html('');
  13.        
  14.         var dataform = $("#form-tambah").serialize();
  15.         $.ajax({
  16.             url: "input.php",
  17.             type: "post",
  18.             data: dataform,
  19.             success: function(result) {
  20.                 var hasil = JSON.parse(result);
  21.                 if (hasil.hasil !== "sukses") {
  22.                     $("#error_nama").html(hasil.error.nama);
  23.                     $("#error_jenis_kelamin").html(hasil.error.jenis_kelamin);
  24.                     $("#error_telepon").html(hasil.error.telepon);
  25.                     $("#error_alamat").html(hasil.error.alamat);
  26.                 } else {
  27.                     $('#modal-tambah').modal('hide');
  28.                     $("#nama").val('');
  29.                     $("#jenis_kelamin").val('');
  30.                     $("#telepon").val('');
  31.                     $("#alamat").val('');
  32.                     $('#data-mahasiswa').load(data);
  33.                 }
  34.             }
  35.         });
  36.     });
  37.    
  38.     $(document).on('click','#edit',function(e){
  39.         e.preventDefault();
  40.         $("#modal-edit").modal('show');
  41.         $.post('edit.php',
  42.             {id:$(this).attr('data-id')},
  43.             function(html){
  44.                 $("#data-edit").html(html);
  45.             }  
  46.         );
  47.     });
  48.    
  49.    
  50.     $("#form-edit").submit(function(e) {
  51.         e.preventDefault();
  52.        
  53.         $("#error_nama").html('');
  54.         $("#error_jenis_kelamin").html('');
  55.         $("#error_telepon").html('');
  56.         $("#error_alamat").html('');
  57.        
  58.         var dataform = $("#form-edit").serialize();
  59.         $.ajax({
  60.             url: "update.php",
  61.             type: "post",
  62.             data: dataform,
  63.             success: function(result) {
  64.                 var hasil = JSON.parse(result);
  65.                 if (hasil.hasil !== "sukses") {
  66.                     $("#error_edit_nama").html(hasil.error.edit_nama);
  67.                     $("#error_edit_jenis_kelamin").html(hasil.error.edit_jenis_kelamin);
  68.                     $("#error_edit_telepon").html(hasil.error.edit_telepon);
  69.                     $("#error_edit_alamat").html(hasil.error.edit_alamat);
  70.                 } else {
  71.                     $('#modal-edit').modal('hide');
  72.                     $("#nama").val('');
  73.                     $("#jenis_kelamin").val('');
  74.                     $("#telepon").val('');
  75.                     $("#alamat").val('');
  76.                     $('#data-mahasiswa').load(data);
  77.                 }
  78.             }
  79.         });
  80.     });
  81.    
  82.    
  83.     $(document).on('click','#hapus',function(e){
  84.         e.preventDefault();
  85.         $.post('hapus.php',
  86.             {id:$(this).attr('data-id')},
  87.             function(html){
  88.                 $('#data-mahasiswa').load(data);           
  89.             }  
  90.         );
  91.     });
  92.  
  93.  
  94. });

Dan sekarang biarkan formnya kosong lalu klik tombol Simpan atau Enter..  Hasilnya akan seperti di bawah ini..

Fitur Validasi Form Dengan ajax jquery

Yup.. Aplikasi ini sudah di lengkapi dengan validasi menggunakan Ajax Jquery..

Setelah berhasil buat input data berserta validasinya, selanjutnya kita buat fitur edit data menggunakan modal  bootstrap..

Buat file edit.php lalu masukkan script di bawah ini..

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1.  
  2. <?php
  3.    
  4.     include"koneksi.php";
  5.     $no = 1;
  6.     $data = mysqli_query ($koneksi, " select
  7.                                             id_mahasiswa,
  8.                                             nama,
  9.                                             jenis_kelamin,
  10.                                             telepon,
  11.                                             alamat
  12.                                       from
  13.                                       mahasiswa
  14.                                       where id_mahasiswa = $_POST[id]");
  15.     $row = mysqli_fetch_array ($data);
  16.    
  17. ?>
  18. <form role="form" id="form-edit" method="post" action="update.php">
  19.     <div class="form-group">
  20.         <label>Nama</label>
  21.         <input type="hidden" name="id_mahasiswa" value="<?php echo$row['id_mahasiswa'] ; ?>">
  22.         <input class="form-control" name="nama" value="<?php echo$row['nama'] ; ?>">
  23.         <p style="color:red" id="error_edit_nama"></p>
  24.     </div>
  25.     <div class="form-group">
  26.         <label>Jenis Kelamin</label>
  27.         <div class="radio">
  28.             <label>
  29.                 <input type="radio" name="jenis_kelamin" value="Laki-laki"  <?php if($row['jenis_kelamin']=='Laki-laki'){ ; ?> checked <?php } ?>>Laki-laki
  30.             </label>
  31.         </div>
  32.         <div class="radio">
  33.             <label>
  34.                 <input type="radio" name="jenis_kelamin" value="Perempuan"  <?php if($row['jenis_kelamin']=='Perempuan'){ ; ?> checked <?php } ?>>Perempuan
  35.             </label>
  36.         </div>
  37.     </div>
  38.     <div class="form-group">
  39.         <label>Telepon</label>
  40.         <input class="form-control" name="telepon"  value="<?php echo$row['telepon'] ; ?>">
  41.         <p style="color:red" id="error_edit_telepon"></p>
  42.     </div>
  43.     <div class="form-group">
  44.         <label>Alamat</label>
  45.         <textarea name="alamat" class="form-control" rows="3"><?php echo$row['alamat'] ; ?></textarea>
  46.         <p style="color:red" id="error_edit_alamat"></p>
  47.     </div>
  48.    
  49. </form>

Lalu coba jalankan dengan klik link edit pada kolom opsi, akan modal dialog akan menampikan form edit beserta detail data berupa value di dalam form.. 

Modal Form edit

Untuk memproses edit kita buat action edit berupa file update.php, buatlah filenya lalu masukkan script di bawah ini..

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. <?php
  2. include"koneksi.php";
  3.  
  4. $id = $_POST['id_mahasiswa'];
  5. $nama = $_POST['nama'];
  6. $jenis_kelamin = $_POST['jenis_kelamin'];
  7. $alamat = $_POST['alamat'];
  8. $telepon = $_POST['telepon'];
  9.         if ($nama == '') {
  10.             $data['error']['edit_nama'] = 'Nama  harap diisi';
  11.         }
  12.         if ($jenis_kelamin == '') {
  13.             $data['error']['edit_jenis_kelamin'] = 'Pilih Jenis Kelamin';
  14.         }
  15.         if ($telepon == '') {
  16.             $data['error']['edit_telepon'] = 'Telepon Harap Di isi';
  17.         }
  18.         if ($alamat == '') {
  19.             $data['error']['edit_alamat'] = 'Alamat harap diisi';
  20.         }
  21.  
  22.         if (empty($data['error'])) {
  23.             $query = "UPDATE mahasiswa SET
  24.                                             nama = '$nama',
  25.                                             jenis_kelamin = '$jenis_kelamin',
  26.                                             alamat = '$alamat',
  27.                                             telepon = '$telepon'
  28.                                             WHERE id_mahasiswa = '$id'
  29.                                             ";
  30.  
  31.             mysqli_query($koneksi, $query)
  32.             or die ("Gagal Perintah SQL".mysql_error());
  33.             $data['hasil'] = 'sukses';
  34.         } else {
  35.             $data['hasil'] = 'gagal';
  36.         }
  37.         echo json_encode($data);
  38.  
  39. ?>

sama seperti form tambah form edit ini juga di lengkapi dengan fitur validasi form menggunakan Ajax 

dan yang terakhir adalah fitur hapus data tanpa perlua meload halaman, buat file hapus.php lalu masukkan script di bawah ini..

DATA HOSTED WITH ♥ BY PASTEBIN.COM - DOWNLOAD RAW - SEE ORIGINAL
  1. <?php
  2. include"koneksi.php";
  3.  
  4.  
  5. $query = "DELETE FROM mahasiswa
  6.                             WHERE id_mahasiswa ='$_POST[id]'
  7.                                 ";
  8.  
  9. mysqli_query($koneksi, $query)
  10. or die ("Gagal Perintah SQL".mysql_error());
  11.  
  12. ?>

Coba jalankan script hapusnya, dengan cara klik link hapus pada kolom opsi..

Nah.. selesai pembuatan Aplikasi CRUD Sederhana Menggunakan Ajax Jquery & Modal Bootstrap nya, hasil nya bisa di coba langsung melalui link Demo di bawah, dan Source Code Lengkapnya Juga sudah saya sertakan melalui Link Download di bawah ini..

Demo Download


Semoga bermanfaat yah..

Komentar

Postingan populer dari blog ini

Login, Session, dan Logout

Cara Membuat File Setup / Installer Aplikasi Sendiri dengan Inno Setup Compiler