Membuat Aplikasi CRUD Sederhana Dengan PHP dan MySQL

Posted by bibil23 on Februari 15, 2016 in | No comments

Membuat Aplikasi CRUD Sederhana Dengan PHP dan MySQL

 

 

 

 

 


Sebelum masuk kedalam sebuah kerangka kerja PHP yang komplek, ada baik nya kita mempelajari hal-hal dasar dalam dalam membangun sebuah aplikasi dengan PHP. Banyak diantara kita yang terjebak pada sebuah framework/ kerangka kerja PHP, tanpa tahu dasar PHP itu sendiri.

Seperti halnya dengan membuat aplikasi CRUD, mungkin selama ini kita menggunakan framework-framework PHP yang sudah menyediakan CRUD secara otomatis atau mengikuti alur CRUD yang sudah ada. Pertanyaan nya apakah kita sudah tau dasar CRUD di PHP tanpa embel-embel framework?.

Berangkat dari permasalahan tersebut, saya mencoba menyajikan sebuah tutorial sederhana dengan PHP CRUD tanpa embel-embel framework. Dengan ini diharapkan kita mampu membuat aplikasi CRUD sederhana dengan PHP tanpa framework.

Sebelum nya pada tutorial nya membuat aplikasi login dengan PHP telah dijelaskan tentang pembuatan aplikasi login sederhana dengan php, dan kita akan mencoba menggabungkan ke dua aplikasi tersebut login+CRUD untuk data penduduk. Hal yang pertama harus kita lakukan adalah membuat database dan tabel di mysql:

 
  1. CREATE DATABASE /*!32312 IF NOT EXISTS*/`crud` /*!40100 DEFAULT CHARACTER SET utf8 */;
  2.  
  3. USE `crud`;
  4.  
  5. /*Table structure for table `penduduk` */
  6.  
  7. DROP TABLE IF EXISTS `penduduk`;
  8.  
  9. CREATE TABLE `penduduk` (
  10. `id` int(11) NOT NULL AUTO_INCREMENT,
  11. `nip` varchar(15) DEFAULT NULL,
  12. `nama` varchar(100) DEFAULT NULL,
  13. `jk` enum('laki-laki','perempuan') DEFAULT NULL,
  14. `kawin` enum('kawin','lajang') DEFAULT NULL,
  15. `pekerjaan` varchar(100) DEFAULT NULL,
  16. `alamat` varchar(225) DEFAULT NULL,
  17. PRIMARY KEY (`id`)
  18. ) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
  19.  
  20. /*Data for the table `penduduk` */
  21.  
  22. insert into `penduduk`(`id`,`nip`,`nama`,`jk`,`kawin`,`pekerjaan`,`alamat`) values (16,'000000000000001','admins','laki-laki','kawin','admins','-'),(17,'000000000000002','editors','perempuan','lajang','editors','-'),(18,'000000000000003','hadinug','laki-laki','lajang','freelance','-'),(19,'000000000000004','teguh','laki-laki','lajang','Pegawai Negeri','-'),(20,'000000000000005','mario','laki-laki','kawin','motivator','-'),(21,'000000000000006','ruhut','laki-laki','kawin','anggota dhewan','-'),(22,'000000000000007','Ngadimin','laki-laki','lajang','Pengangguran','-');
  23.  
  24. /*Table structure for table `users` */
  25.  
  26. DROP TABLE IF EXISTS `users`;
  27.  
  28. CREATE TABLE `users` (
  29. `id` int(11) NOT NULL AUTO_INCREMENT,
  30. `username` varchar(30) DEFAULT NULL,
  31. `password` varchar(45) DEFAULT NULL,
  32. PRIMARY KEY (`id`)
  33. ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
  34.  
  35. /*Data for the table `users` */
  36.  
  37. insert into `users`(`id`,`username`,`password`) values (1,'admin','21232f297a57a5a743894a0e4a801fc3');

Kemudian buat struktur aplikasi CRUD yang akan kita buat seperti pada gambar berikut:



Kemudian pada script index.php, kita isikan kode berikut:

 
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Login</title>
  5. <style type="text/css">
  6.  
  7. body{
  8. font: 12px/25px sans-serif;
  9. margin: 10px auto;
  10. width: 980px;
  11. padding: 10px;
  12. }
  13. form input[type="text"],form textarea, form input[type="password"]{
  14. padding: 5px;
  15. border: 1px solid #ccc;
  16. }
  17. form input[readonly="true"]{
  18. background: #f3f3f3;
  19. }
  20. form label{
  21. float: left;
  22. width: 100px;
  23. padding: 5px;
  24. font-weight: bold;
  25. }
  26. form input[type="submit"],input[type="reset"]{
  27. border: none;
  28. background: #3333ff;
  29. color: #fff;
  30. padding: 5px 10px;
  31. }
  32. form input[type="submit"]{
  33. background: #3333ff;
  34. }
  35. input[type="reset"]{
  36. background: #ffcc33;
  37. }
  38. .left{
  39. float: left;
  40. width: 20%;
  41. }
  42. .right{
  43. float: left;
  44. padding: 5px 1%;
  45. width: 76%;
  46. border-left: 1px solid #ccc;
  47. }
  48. table{
  49. float: left;
  50. margin-left: 10px;
  51. border-left: 1px solid #ccc;
  52. border-top: 1px solid #ccc;
  53. width: 100%;
  54. }
  55. table tr, table tr+tr, table td, table td+td, table th, table th+th{
  56. border-right: 1px solid #ccc;
  57. border-bottom: 1px solid #ccc;
  58. padding: 5px;
  59. }
  60. .pagging{
  61. float: right;
  62. padding: 10px 0;
  63. text-align: right;
  64. }
  65. .pagging a, .pagging strong{
  66. padding: 5px;
  67. border: 1px solid #ccc;
  68. margin-left: 5px;
  69. }
  70. </style>
  71. </head>
  72. <body>
  73. <div class="left">
  74. <ul>
  75. <li>
  76. <a href="index.php?mod=penduduk">Penduduk</a>
  77. </li>
  78. <?php
  79. if (isset($_COOKIE['username'])) {
  80. ?>
  81. <li>
  82. <a href="logout.php">Keluar</a>
  83. </li>
  84. <?php
  85. }
  86. ?>
  87. </ul>
  88. </div>
  89. <div class="right">
  90. <?php
  91. if (isset($_COOKIE['username'])) {
  92. include 'connection.php';
  93. if (isset($_GET['mod'])) {
  94. switch ($_GET['mod']) {
  95.  
  96. case 'penduduk':
  97. if (isset($_GET['func'])) {
  98. switch ($_GET['func']) {
  99. case 'create':
  100. case 'update':
  101. include 'penduduk/form.php';
  102. break;
  103. case 'delete':
  104. include 'penduduk/delete.php';
  105. default:
  106. include 'penduduk/index.php';
  107. break;
  108. }
  109. } else {
  110. include 'penduduk/index.php';
  111. }
  112. default:
  113. break;
  114. }
  115. }
  116. } else {
  117. header("Location: login.php");
  118. }
  119. ?>
  120. </div>
  121. </body>
  122. </html>

Pada index.php semua target url ada pada halaman index.php, jadi ketika kita ingin memanggil modul penduduk, pada link kita cukup menuliskan index.php?mod=penduduk dan link ini akan mengarah pada file penduduk/index.php.

Kemudian pada penduduk/index.php, kita akan menuliskan script untuk menampilkan data penduduk dalam sebuah table dengan pagging.

 
  1. <?php
  2. /// koneksi database
  3. $offset = isset($_GET['offset']) ? $_GET['offset'] : 0;
  4. $limit = isset($_GET['limit']) ? $_GET['limit'] : 5;
  5. $x = 0;
  6. if ($limit > 0) {
  7. $x = ($offset * $limit);
  8. }
  9. $query = mysql_query("SELECT * FROM penduduk ORDER BY `id` DESC LIMIT $x,$limit ") or die(mysql_error());
  10. $no = $x + 1;
  11.  
  12. function pagging($limit, $offset) {
  13. $num = intval(mysql_num_rows(mysql_query('SELECT * FROM penduduk')));
  14.  
  15. $num_p = $num / intval($limit);
  16. $lp = '';
  17. for ($i = 0; $i < $num_p; $i++) {
  18. if ($i == $offset) {
  19. $lp.= "<strong>" . ($i + 1) . "</strong>";
  20. } else {
  21. $lp.= "<a href='index.php?mod=penduduk&limit=$limit&offset=$i'>" . ($i + 1) . "</a>";
  22. }
  23. }
  24. echo $lp;
  25. }
  26. ?>
  27. <p>
  28. <a href="index.php?mod=penduduk&func=create">Tambah Data</a>
  29. </p>
  30. <table cellpading='0' cellspacing='0'>
  31. <tr>
  32. <th>No</th>
  33. <th>Nip</th>
  34. <th>Nama</th>
  35. <th>Jenis Kelamin</th>
  36. <th>Status</th>
  37. <th>Pekerjaan</th>
  38. <th>Alamat</th>
  39. <th>Action</th>
  40. </tr>
  41. <?php
  42. while ($row = mysql_fetch_object($query)) {
  43. ?>
  44. <tr>
  45. <td><?php echo $no ?></td>
  46. <td><?php echo $row->nip ?></td>
  47. <td><?php echo $row->nama ?></td>
  48. <td><?php echo $row->jk ?></td>
  49. <td><?php echo $row->kawin ?></td>
  50. <td><?php echo $row->pekerjaan ?></td>
  51. <td><?php echo $row->alamat ?></td>
  52. <td align="center"><a href="index.php?mod=penduduk&func=update&id=<?php echo $row->id ?>&m=Update">Update</a> / <a href="index.php?mod=penduduk&func=delete&id=<?php echo $row->id ?>">Delete</a></td>
  53. </tr>
  54. <?php
  55. $no++;
  56. }
  57. ?>
  58. </table>
  59. <script type="text/javascript">
  60. function set_limit(i){
  61. window.location.href="index.php?mod=penduduk&limit="+i.value;
  62. }
  63. </script>
  64. Limit <select onchange="set_limit(this)" style="width: 20%; margin: 10px; width: 50px">
  65. <option value="5" <?php echo isset($limit) ? ($limit=='5') ? 'selected="true"': '' : '' ?>>5</option>
  66. <option value="10" <?php echo isset($limit) ? ($limit=='10') ? 'selected="true"': '' : '' ?>>10</option>
  67. <option value="15" <?php echo isset($limit) ? ($limit=='15') ? 'selected="true"': '' : '' ?>>15</option>
  68. </select>
  69. <span class="pagging">
  70. Pagging : <?php pagging($limit, $offset) ?>
  71. </span>

FIle penduduk/form.php, kita gunakan untuk menambah dan mengubah data penduduk. Hal ini  sengaja saya ringkas.

 
  1. <?php
  2. // jika terdapat HTTP GET dengan ID maka lakukan query pencarian penduduk dengan ID tersebut
  3. if (isset($_GET['id'])) {
  4. $query = mysql_query("SELECT * FROM penduduk WHERE id ='$_GET[id]'") or die(mysql_error());
  5. $row = mysql_fetch_object($query);
  6. }
  7.  
  8. function auto_nip($length = 15) {
  9. $num = mysql_num_rows(mysql_query('SELECT * FROM penduduk')) + 1;
  10. $number = strval($num);
  11. $tmp = '';
  12. for ($i = 1; $i <= ($length - 0 - strlen($number)); $i++) {
  13. $tmp = $tmp . "0";
  14. }
  15. return $tmp . $number;
  16. }
  17. ?>
  18. <form method="post" action="">
  19. <p>
  20. <label>NIP</label>
  21. <input type="text" name="nip" readonly="true" value="<?php echo isset($row->nip) ? $row->nip : auto_nip() ?>">
  22. </p>
  23. <p>
  24. <label>Nama</label>
  25. <input type="text" name="nama" value="<?php echo isset($row->nama) ? $row->nama : '' ?>">
  26. </p>
  27. <p>
  28. <label>Jenis Kelamin</label>
  29. <input type="radio" name="jk" value="laki-laki" <?php echo isset($row->jk) ? ($row->jk == 'laki-laki') ? 'checked="true"' : '' : '' ?>> Laki-laki
  30. <input type="radio" name="jk" value="perempuan" <?php echo isset($row->jk) ? ($row->jk == 'perempuan') ? 'checked="true"' : '' : '' ?>> Perempuan
  31. </p>
  32. <p>
  33. <label>Pekerjaan</label>
  34. <input type="text" name="pekerjaan" value="<?php echo isset($row->pekerjaan) ? $row->pekerjaan : '' ?>">
  35. </p>
  36. <p>
  37. <label>Status</label>
  38. <input type="radio" name="kawin" value="kawin" <?php echo isset($row->kawin) ? ($row->kawin == 'kawin') ? 'checked="true"' : '' : '' ?>> kawin
  39. <input type="radio" name="kawin" value="lajang" <?php echo isset($row->kawin) ? ($row->kawin == 'lajang') ? 'checked="true"' : '' : '' ?>> Lajang
  40. </p>
  41. <p>
  42. <label>Alamat</label>
  43. <textarea cols="50" rows="5" name="alamat"><?php echo isset($row->alamat) ? $row->alamat : '' ?></textarea>
  44. </p>
  45. <p>
  46. <label>&nbsp;</label>
  47. <input type="submit" value="<?php echo isset($_GET['m']) ? $_GET['m'] : 'Simpan'; ?>" name="<?php echo isset($_GET['m']) ? $_GET['m'] : 'Simpan'; ?>"> <input type="reset"name="Reset">
  48. </p>
  49. </form>
  50. <?php
  51. if (isset($_POST['Simpan'])) {
  52. mysql_query("
  53. INSERT INTO penduduk(`nip`,`nama`,`jk`,`kawin`,`pekerjaan`,`alamat`)
  54. VALUES('$_POST[nip]','$_POST[nama]','$_POST[jk]','$_POST[kawin]','$_POST[pekerjaan]','$_POST[alamat]')
  55. ") or die(mysql_error());
  56. header("location: index.php?mod=penduduk");
  57. }
  58. if (isset($_POST['Update'])) {
  59. mysql_query("
  60. UPDATE penduduk
  61. SET nip='$_POST[nip]',nama='$_POST[nama]',jk='$_POST[jk]',kawin='$_POST[kawin]',pekerjaan='$_POST[pekerjaan]',alamat='$_POST[alamat]'
  62. WHERE id='$_GET[id]'
  63. ") or die(mysql_error());
  64. header("location: index.php?mod=penduduk");
  65. }
  66. ?>



Dan pada tahap terakhir kita akan membuat action delete data penduduk di file penduduk/delete.php 


 
  1. <?php
  2.  
  3. if (isset($_GET['id'])) {
  4. mysql_query("DELETE FROM penduduk WHERE id ='$_GET[id]'") or die(mysql_error());
  5. header("location: index.php?mod=penduduk");
  6. }


Semoga bermanfaat, dan saya berharap ini bisa menjadi pembejaran bari kita dalam membuat aplikasi CRUD sederhana tanpa embel-embel framework.

0 komentar:

Posting Komentar