Membuat Aplikasi CRUD Sederhana Dengan PHP dan MySQL

 Author : hadinug, 15 February, 2014, Komentar

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:


CREATE DATABASE /*!32312 IF NOT EXISTS*/`crud` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `crud`;

/*Table structure for table `penduduk` */

DROP TABLE IF EXISTS `penduduk`;

CREATE TABLE `penduduk` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nip` varchar(15) DEFAULT NULL,
  `nama` varchar(100) DEFAULT NULL,
  `jk` enum('laki-laki','perempuan') DEFAULT NULL,
  `kawin` enum('kawin','lajang') DEFAULT NULL,
  `pekerjaan` varchar(100) DEFAULT NULL,
  `alamat` varchar(225) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;

/*Data for the table `penduduk` */

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','-');

/*Table structure for table `users` */

DROP TABLE IF EXISTS `users`;

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(30) DEFAULT NULL,
  `password` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

/*Data for the table `users` */

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:


<!DOCTYPE html>
<html>
    <head>
        <title>Login</title>
        <style type="text/css">

            body{
                font: 12px/25px sans-serif;
                margin: 10px auto;
                width: 980px; 
                padding: 10px;
            }
            form input[type="text"],form textarea, form input[type="password"]{
                padding: 5px;
                border: 1px solid #ccc;
            }
            form input[readonly="true"]{
                background: #f3f3f3;
            }
            form label{
                float: left;
                width: 100px;
                padding: 5px;
                font-weight: bold;
            }
            form input[type="submit"],input[type="reset"]{
                border: none;
                background: #3333ff;
                color: #fff;
                padding: 5px 10px;
            }
            form input[type="submit"]{
                background: #3333ff;
            }
            input[type="reset"]{
                background: #ffcc33;   
            }
            .left{
                float: left;
                width: 20%;
            }
            .right{
                float: left;
                padding: 5px 1%;
                width: 76%; 
                border-left: 1px solid #ccc;
            }
            table{
                float: left;
                margin-left: 10px;
                border-left: 1px solid #ccc;
                border-top: 1px solid #ccc;
                width: 100%;
            }
            table tr, table tr+tr, table td, table td+td, table th, table th+th{
                border-right: 1px solid #ccc;
                border-bottom: 1px solid #ccc;
                padding: 5px;
            }
            .pagging{
                float: right;
                padding: 10px 0; 
                text-align: right;
            }
            .pagging a, .pagging strong{
                padding: 5px;
                border: 1px solid #ccc;
                margin-left: 5px;
            }
        </style>
    </head>
    <body>
        <div class="left">
            <ul>
                <li>
                    <a href="index.php?mod=penduduk">Penduduk</a>
                </li> 
                <?php
                if (isset($_COOKIE['username'])) {
                    ?>
                    <li>
                        <a href="logout.php">Keluar</a>
                    </li> 
                    <?php
                }
                ?>
            </ul>
        </div>
        <div class="right">
            <?php
            if (isset($_COOKIE['username'])) {
                include 'connection.php';
                if (isset($_GET['mod'])) {
                    switch ($_GET['mod']) {

                        case 'penduduk':
                            if (isset($_GET['func'])) {
                                switch ($_GET['func']) {
                                    case 'create':
                                    case 'update':
                                        include 'penduduk/form.php';
                                        break;
                                    case 'delete':
                                        include 'penduduk/delete.php';
                                    default:
                                        include 'penduduk/index.php';
                                        break;
                                }
                            } else {
                                include 'penduduk/index.php';
                            }
                        default:
                            break;
                    }
                }
            } else {
                header("Location: login.php");
            }
            ?>
        </div>
    </body>
</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.


<?php
/// koneksi database 
$offset = isset($_GET['offset']) ? $_GET['offset'] : 0;
$limit = isset($_GET['limit']) ? $_GET['limit'] : 5;
$x = 0;
if ($limit > 0) {
    $x = ($offset * $limit);
}
$query = mysql_query("SELECT * FROM penduduk ORDER BY `id` DESC LIMIT $x,$limit ") or die(mysql_error());
$no = $x + 1;

function pagging($limit, $offset) {
    $num = intval(mysql_num_rows(mysql_query('SELECT * FROM penduduk')));

    $num_p = $num / intval($limit);
    $lp = '';
    for ($i = 0; $i < $num_p; $i++) {
        if ($i == $offset) {
            $lp.= "<strong>" . ($i + 1) . "</strong>";
        } else {
            $lp.= "<a href='index.php?mod=penduduk&limit=$limit&offset=$i'>" . ($i + 1) . "</a>";
        }
    }
    echo $lp;
}
?>
<p>
    <a href="index.php?mod=penduduk&func=create">Tambah Data</a>
</p>
<table cellpading='0' cellspacing='0'>
    <tr>
        <th>No</th>
        <th>Nip</th>
        <th>Nama</th>
        <th>Jenis Kelamin</th>
        <th>Status</th>
        <th>Pekerjaan</th>
        <th>Alamat</th>
        <th>Action</th>
    </tr>
    <?php
    while ($row = mysql_fetch_object($query)) {
        ?>
        <tr>
            <td><?php echo $no ?></td>
            <td><?php echo $row->nip ?></td>
            <td><?php echo $row->nama ?></td>
            <td><?php echo $row->jk ?></td>
            <td><?php echo $row->kawin ?></td>    
            <td><?php echo $row->pekerjaan ?></td>
            <td><?php echo $row->alamat ?></td>  
            <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>
        </tr>
        <?php
        $no++;
    }
    ?>
</table>
<script type="text/javascript">
    function set_limit(i){
        window.location.href="index.php?mod=penduduk&limit="+i.value;
    }
</script>
Limit <select onchange="set_limit(this)" style="width: 20%; margin: 10px; width: 50px">
    <option value="5" <?php echo isset($limit) ? ($limit=='5') ? 'selected="true"': '' : '' ?>>5</option>
    <option value="10" <?php echo isset($limit) ? ($limit=='10') ? 'selected="true"': '' : '' ?>>10</option>
    <option value="15" <?php echo isset($limit) ? ($limit=='15') ? 'selected="true"': '' : '' ?>>15</option>
</select>
<span class="pagging">
    Pagging : <?php pagging($limit, $offset) ?>
</span>


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


<?php
// jika terdapat HTTP GET dengan ID maka lakukan query pencarian penduduk dengan ID tersebut
if (isset($_GET['id'])) {
    $query = mysql_query("SELECT * FROM penduduk WHERE id ='$_GET[id]'") or die(mysql_error());
    $row = mysql_fetch_object($query);
}

function auto_nip($length = 15) {
    $num = mysql_num_rows(mysql_query('SELECT * FROM penduduk')) + 1;
    $number = strval($num);
    $tmp = '';
    for ($i = 1; $i <= ($length - 0 - strlen($number)); $i++) {
        $tmp = $tmp . "0";
    }
    return $tmp . $number;
}
?>
<form method="post" action="">
    <p>
        <label>NIP</label>
        <input type="text" name="nip" readonly="true" value="<?php echo isset($row->nip) ? $row->nip : auto_nip() ?>">
    </p>
    <p>
        <label>Nama</label>
        <input type="text" name="nama" value="<?php echo isset($row->nama) ? $row->nama : '' ?>">
    </p>
    <p>
        <label>Jenis Kelamin</label>
        <input type="radio" name="jk" value="laki-laki" <?php echo isset($row->jk) ? ($row->jk == 'laki-laki') ? 'checked="true"' : ''  : '' ?>> Laki-laki
        <input type="radio" name="jk" value="perempuan" <?php echo isset($row->jk) ? ($row->jk == 'perempuan') ? 'checked="true"' : ''  : '' ?>> Perempuan
    </p>
    <p>
        <label>Pekerjaan</label>
        <input type="text" name="pekerjaan" value="<?php echo isset($row->pekerjaan) ? $row->pekerjaan : '' ?>">
    </p>
    <p>
        <label>Status</label>
        <input type="radio" name="kawin" value="kawin" <?php echo isset($row->kawin) ? ($row->kawin == 'kawin') ? 'checked="true"' : ''  : '' ?>> kawin
        <input type="radio" name="kawin" value="lajang" <?php echo isset($row->kawin) ? ($row->kawin == 'lajang') ? 'checked="true"' : ''  : '' ?>> Lajang
    </p>
    <p>
        <label>Alamat</label>
        <textarea cols="50" rows="5" name="alamat"><?php echo isset($row->alamat) ? $row->alamat : '' ?></textarea>
    </p> 
    <p>
        <label>&nbsp;</label>
        <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">
    </p>
</form>
<?php
if (isset($_POST['Simpan'])) {
    mysql_query("
        INSERT INTO penduduk(`nip`,`nama`,`jk`,`kawin`,`pekerjaan`,`alamat`) 
        VALUES('$_POST[nip]','$_POST[nama]','$_POST[jk]','$_POST[kawin]','$_POST[pekerjaan]','$_POST[alamat]')
     ") or die(mysql_error());
    header("location: index.php?mod=penduduk");
}
if (isset($_POST['Update'])) {
    mysql_query("
        UPDATE penduduk 
        SET nip='$_POST[nip]',nama='$_POST[nama]',jk='$_POST[jk]',kawin='$_POST[kawin]',pekerjaan='$_POST[pekerjaan]',alamat='$_POST[alamat]'
        WHERE id='$_GET[id]'
     ") or die(mysql_error());
    header("location: index.php?mod=penduduk");
}
?>




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


<?php

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



Download


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


 
Bagikan halaman ke sosial media
 
Tags :   php    phpCRUD       

Tentang Penulis

writer hadinug
Web Developer di PT. Yafii Solusi Internasional

Link: http://ysi.co.id

   Komentar Anda