Cara Membuat CRUD Dengan PHP Dan MySQL

Pada kesempatan kali ini saya mau membagi ilmu yang merupakan masih dasar apakah itu CRUD?  merupakan singkatan dari Create, Read, Update dan Delete. CRUD merupakan salah satu inti dari sebuah pemrograman karena di dalam suatu program biasanya mencakup operasi Create atau menciptakan data, Read atau Menampilkan data, Update atau mengedit suatu data dan Delete atau menghapus data.

Pada kesempatan kali ini saya akan mencoba untuk membahas bagaimana cara membuat sebuah aplikasi sederhana dan cara menerapkan operasi CRUD.

     Langkah pertama yang harus dilakukan adalah membuat database. 

1. DATABASE
Dalam tutorial kali ini, kita buat database dengan nama "database" dengan tabel is_siswa, seperti contoh gambar dibawah ini


2. config.php atau koneksi

Setelah membuat atau sudah memiliki database MYSQL langkah selanjutnya ialah membuat koneksi php. Di sini koneksi ke database akan berjalan dengan nama "config" dan user database. Buatlah file dengan nama "config.php", seperti script dibawah ini :

<?php
// deklarasi parameter koneksi database
$server = "localhost";
$username = "root";
$password = "";
$database = "database";
// koneksi database
$db = mysqli_connect($server, $username, $password, $database);
// cek koneksi
if (!$db) {
die('Koneksi Database Gagal : ' . mysqli_connect_error());
}
?>
view raw config hosted with ❤ by GitHub
3. index


digunakan untuk membuat sebuah direktori atau wadah dari aplikasi

Buatlah file dengan nama "index.php",
<?php
require_once "config/database.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Aplikasi CRUD</title>
<!-- favicon -->
<link rel="shortcut icon" href="assets/img/favicon.png">
<!-- Bootstrap -->
<link href="assets/css/bootstrap.min.css" rel="stylesheet">
<link href="assets/css/datepicker.min.css" rel="stylesheet">
<!-- styles -->
<link href="assets/css/style.css" rel="stylesheet">
<!-- Fungsi untuk membatasi karakter yang diinputkan -->
<script language="javascript">
function getkey(e)
{
if (window.event)
return window.event.keyCode;
else if (e)
return e.which;
else
return null;
}
function goodchars(e, goods, field)
{
var key, keychar;
key = getkey(e);
if (key == null) return true;
keychar = String.fromCharCode(key);
keychar = keychar.toLowerCase();
goods = goods.toLowerCase();
// check goodkeys
if (goods.indexOf(keychar) != -1)
return true;
// control keys
if ( key==null || key==0 || key==8 || key==9 || key==27 )
return true;
if (key == 13) {
var i;
for (i = 0; i < field.form.elements.length; i++)
if (field == field.form.elements[i])
break;
i = (i + 1) % field.form.elements.length;
field.form.elements[i].focus();
return false;
};
// else return false
return false;
}
</script>
</head>
<body>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
<!-- Brand -->
<div class="navbar-header">
<a class="navbar-brand" href="index.php">
<i class="glyphicon glyphicon-check"></i>
Aplikasi CRUD PHP dan MySQLi
</a>
</div>
</div> <!-- /.container-fluid -->
</nav>
<div class="container-fluid">
<?php
if (empty($_GET["page"])) {
include "tampil-data.php";
} elseif ($_GET['page'] == 'tambah') {
include "form-tambah.php";
} elseif ($_GET['page'] == 'ubah') {
include "form-ubah.php";
}
?>
</div> <!-- /.container-fluid -->
<footer class="footer">
<div class="container-fluid">
<p class="text-muted pull-right ">Theme by <a href="http://www.getbootstrap.com" target="_blank">Bootstrap</a></p>
</div>
</footer>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="assets/js/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="assets/js/bootstrap.min.js"></script>
<script src="assets/js/bootstrap-datepicker.min.js"></script>
<script type="text/javascript">
$(function () {
//datepicker plugin
$('.date-picker').datepicker({
autoclose: true,
todayHighlight: true
});
// toolip
$('[data-toggle="tooltip"]').tooltip();
})
</script>
</body>
</html>
view raw index hosted with ❤ by GitHub

seperti script dibawah ini :


4. from-tambah.php
 from ini digunakan untuk mengimputkan tambah data baru. dengan cara menginputkan datanya. 

Buatlah file dengan nama "from-tambah.php", seperti script dibawah ini :


<div class="row">
<div class="col-md-12">
<div class="page-header">
<h4>
<i class="glyphicon glyphicon-edit"></i>
Input data
</h4>
</div> <!-- /.page-header -->
<div class="panel panel-default">
<div class="panel-body">
<form class="form-horizontal" method="POST" action="proses-simpan.php">
<div class="form-group">
<label class="col-sm-2 control-label">Nama</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="nama" autocomplete="off" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Username</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="username" autocomplete="off" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Password</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="password" autocomplete="off" required>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Email address</label>
<div class="col-sm-3">
<input type="email" class="form-control" name="email" placeholder="name@example.com">
</div>
<hr/>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" class="btn btn-info btn-submit" name="simpan" value="Simpan">
<a href="index.php" class="btn btn-default btn-reset">Batal</a>
</div>
</div>
</form>
</div> <!-- /.panel-body -->
</div> <!-- /.panel -->
</div> <!-- /.col -->
</div> <!-- /.row -->
view raw from-tambah.php hosted with ❤ by GitHub
jika sudah membuat form-tambah.php maka tampilannya seperti ini:

5. form-ubah.php
File ubah.php digunakan untuk melakukan proses edit/uptade data, file ini menampilkan form yang sama dengan form tambah.php, form edit.php ini berfungsi mengambil data yang akan kita edit didalam database. 

Buatlah file dengan nama "from-ubah.php", seperti script dibawah ini :

<div class="row">
<div class="col-md-12">
<div class="page-header">
<h4>
<i class="glyphicon glyphicon-edit"></i>
Ubah data
</h4>
</div> <!-- /.page-header -->
<?php
if (isset($_GET['id'])) {
$nama = $_GET['id'];
$query = mysqli_query($db, "SELECT * FROM is_siswa WHERE nama='$nama
'") or die('Query Error : '.mysqli_error($db));
while ($data = mysqli_fetch_assoc($query)) {
$nama = $data['nama'];
$username = $data['username'];
$password = $data['password'];
$email = $data['email'];
}
}
?>
<div class="panel panel-default">
<div class="panel-body">
<form class="form-horizontal" method="POST" action="proses-ubah.php">
<div class="form-group">
<label class="col-sm-2 control-label">Nama</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="nama" autocomplete="off" value="<?php echo $nama; ?>" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Userame</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="username" autocomplete="off" value="<?php echo $username; ?>" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Password</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="password" autocomplete="off" value="<?php echo $password; ?>" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Email</label>
<div class="col-sm-3">
<input type="text" class="form-control" name="email" autocomplete="off" value="<?php echo $email; ?>" required>
</div>
</div>
<hr/>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" class="btn btn-info btn-submit" name="simpan" value="Simpan">
<a href="index.php" class="btn btn-default btn-reset">Batal</a>
</div>
</div>
</form>
</div> <!-- /.panel-body -->
</div> <!-- /.panel -->
</div> <!-- /.col -->
</div> <!-- /.row -->
view raw from-ubah.php hosted with ❤ by GitHub
maka akan memberikan tampilan
6. proses-hapus
proses hapus digunakan untuk menghapus data yang ingin dihapus. jika telah dihapus maka data tersebut akan hilang dari database
<?php
// Panggil koneksi database
require_once "config/database.php";
if (isset($_GET['id'])) {
$nama = $_GET['id'];
// perintah query untuk menghapus data pada tabel is_siswa
$query = mysqli_query($db, "DELETE FROM is_siswa WHERE nama='$nama'");
// cek hasil query
if ($query) {
// jika berhasil tampilkan pesan berhasil delete data
header('location: index.php?alert=4');
} else {
// jika gagal tampilkan pesan kesalahan
header('location: index.php?alert=1');
}
}
?>
view raw proses-hapus hosted with ❤ by GitHub


tampilan dari hapus data adalah sebagai berikut. terdapat notifikasi apakah data tersebut ingin dihapus

7.  proses-simpan
proses simpan digunakan untuk menyimpan semua data yang telah terisi dalam tambah data maupun update data. 

Buatlah file dengan nama "proses-simpan.php", seperti script dibawah ini :

<?php
// Panggil koneksi database
require_once "config/database.php";
if (isset($_POST['simpan'])) {
$nama = mysqli_real_escape_string($db, trim($_POST['nama']));
$username = mysqli_real_escape_string($db, trim($_POST['username']));
$password = mysqli_real_escape_string($db, trim($_POST['password']));
$email = mysqli_real_escape_string($db, trim($_POST['email']));
// perintah query untuk menyimpan data ke tabel
$query = mysqli_query($db, "INSERT INTO is_siswa(nama,
username,
password,
email)
VALUES('$nama',
'$username',
'$password',
'$email')");
// cek hasil query
if ($query) {
// jika berhasil tampilkan pesan berhasil insert data
header('location: index.php?alert=2');
} else {
// jika gagal tampilkan pesan kesalahan
header('location: index.php?alert=1');
}
}
?>
view raw proses-simpan hosted with ❤ by GitHub
tampilan dari proses simpan data adalah sebagai berikut:
data akan tersimpan secara otomatis

8. proses-ubah
untuk memproses ubah data yang ada di database
<?php
// Panggil koneksi database
require_once "config/database.php";
if (isset($_POST['simpan'])) {
if (isset($_POST['nama'])) {
$nama = mysqli_real_escape_string($db, trim($_POST['nama']));
$username = mysqli_real_escape_string($db, trim($_POST['username']));
$password = mysqli_real_escape_string($db, trim($_POST['password']));
$email = mysqli_real_escape_string($db, trim($_POST['email']));
// perintah query untuk mengubah data pada tabel
$query = mysqli_query($db, "UPDATE is_siswa SET username = '$username',
password = '$password',
email = '$email',
WHERE nama = '$nama'");
// cek query
if ($query) {
// jika berhasil tampilkan pesan berhasil update data
header('location: index.php?alert=3');
} else {
// jika gagal tampilkan pesan kesalahan
header('location: index.php?alert=1');
}
}
}
?>
view raw proses-ubah hosted with ❤ by GitHub
9. tampil-data
tampil data digunakan untuk menampilkan seluruh tampilan data diawal.
<?php
if (isset($_POST['cari'])){
$cari = $_POST['cari'];
}else {
$cari = "";
}
?>
<div class="row">
<div class="col-md-12">
<div class="page-header">
<h4>
<i class="glyphicon glyphicon-user"></i> Data User
<div class="pull-right btn-tambah">
<form class="form-inline" method="POST" action="index.php">
<div class="form-group">
<div class="input-group">
<div class="input-group-addon">
<i class="glyphicon glyphicon-search"></i>
</div>
<input type="text" class="form-control" name="cari" placeholder="Cari ..." autocomplete="off" value="
<?php echo $cari; ?>">
</div>
</div>
<a class="btn btn-info" href="?page=tambah">
<i class="glyphicon glyphicon-plus"></i> Tambah
</a>
</form>
</div>
</h4>
</div>
<?php
if (empty($_GET['alert'])) {
echo "";
} elseif ($_GET['alert'] == 1) {
echo "<div class='alert alert-danger alert-dismissible' role='alert'>
<button type='button' class='close' data-dismiss='alert' aria-label='Close'>
<span aria-hidden='true'>&times;</span>
</button>
<strong><i class='glyphicon glyphicon-alert'></i> Gagal!</strong> Terjadi kesalahan.
</div>";
} elseif ($_GET['alert'] == 2) {
echo "<div class='alert alert-success alert-dismissible' role='alert'>
<button type='button' class='close' data-dismiss='alert' aria-label='Close'>
<span aria-hidden='true'>&times;</span>
</button>
<strong><i class='glyphicon glyphicon-ok-circle'></i> Sukses!</strong> Data berhasil disimpan.
</div>";
} elseif ($_GET['alert'] == 3) {
echo "<div class='alert alert-success alert-dismissible' role='alert'>
<button type='button' class='close' data-dismiss='alert' aria-label='Close'>
<span aria-hidden='true'>&times;</span>
</button>
<strong><i class='glyphicon glyphicon-ok-circle'></i> Sukses!</strong> Data berhasil diubah.
</div>";
} elseif ($_GET['alert'] == 4) {
echo "<div class='alert alert-success alert-dismissible' role='alert'>
<button type='button' class='close' data-dismiss='alert' aria-label='Close'>
<span aria-hidden='true'>&times;</span>
</button>
<strong><i class='glyphicon glyphicon-ok-circle'></i> Sukses!</strong> Data berhasil dihapus.
</div>";
}
?>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Data </h3>
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-striped table-hover">
<thead>
<tr>
<th>No.</th>
<th>Nama</th>
<th>Username</th>
<th>Password</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<?php
/* Pagination */
$batas = 5;
if (isset($cari)) {
$jumlah_record = mysqli_query($db, "SELECT * FROM is_siswa
WHERE nama LIKE '%$cari%'")
or die('Ada kesalahan pada query jumlah_record: '.mysqli_error($db));
} else {
$jumlah_record = mysqli_query($db, "SELECT * FROM is_siswa")
or die('Ada kesalahan pada query jumlah_record: '.mysqli_error($db));
}
$jumlah = mysqli_num_rows($jumlah_record);
$halaman = ceil($jumlah / $batas);
$page = (isset($_GET['hal'])) ? (int)$_GET['hal'] : 1;
$mulai = ($page - 1) * $batas;
/*-------------------------------------------------------------------*/
$no = 1;
if (isset($cari)) {
$query = mysqli_query($db, "SELECT * FROM is_siswa
WHERE nama LIKE '%$cari%'
ORDER BY nama DESC LIMIT $mulai, $batas")
or die('Ada kesalahan pada query siswa: '.mysqli_error($db));
} else {
$query = mysqli_query($db, "SELECT * FROM is_siswa
ORDER BY nama DESC LIMIT $mulai, $batas")
or die('Ada kesalahan pada query siswa: '.mysqli_error($db));
}
while ($data = mysqli_fetch_assoc($query)) {;
echo " <tr>
<td width='50' class='center'>$no</td>
<td width='150'>$data[nama]</td>
<td width='150'>$data[username]</td>
<td width='150'>$data[password]</td>
<td width='150'>$data[email]</td>
<td width='100'>
<div class=''>
<a data-toggle='tooltip' data-placement='top' title='Ubah' style='margin-right:5px' class='btn btn-info btn-sm' href='?page=ubah&id=$data[nama]'>
<i class='glyphicon glyphicon-edit'></i>
</a>";
?>
<a data-toggle="tooltip" data-placement="top" title="Hapus" class="btn btn-danger btn-sm" href="proses-hapus.php?id=<?php echo $data['nama'];?>" onclick="return confirm('Anda yakin ingin menghapus siswa <?php echo $data['nama']; ?>?');">
<i class="glyphicon glyphicon-trash"></i>
</a>
<?php
echo "
</div>
</td>
</tr>";
$no++;
}
?>
</tbody>
</table>
<?php
if (empty($_GET['hal'])) {
$halaman_aktif = '1';
} else {
$halaman_aktif = $_GET['hal'];
}
?>
<a>
Halaman <?php echo $halaman_aktif; ?> dari <?php echo $halaman; ?> |
Total <?php echo $jumlah; ?> data
</a>
<nav>
<ul class="pagination pull-right">
<!-- Button untuk halaman sebelumnya -->
<?php
if ($halaman_aktif<='1') { ?>
<li class="disabled">
<a href="" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
<?php
} else { ?>
<li>
<a href="?hal=<?php echo $page -1 ?>" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
<?php
}
?>
<!-- Link halaman 1 2 3 ... -->
<?php
for($x=1; $x<=$halaman; $x++) { ?>
<li class="">
<a href="?hal=<?php echo $x ?>"><?php echo $x ?></a>
</li>
<?php
}
?>
<!-- Button untuk halaman selanjutnya -->
<?php
if ($halaman_aktif>=$halaman) { ?>
<li class="disabled">
<a href="" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
<?php
} else { ?>
<li>
<a href="?hal=<?php echo $page +1 ?>" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
<?php
}
?>
</ul>
</nav>
</div>
</div>
</div> <!-- /.panel -->
</div> <!-- /.col -->
</div> <!-- /.row -->
view raw tampil-data hosted with ❤ by GitHub

tampilan datanya adalah sebagai berikut

Komentar

  1. Casinos & Entertainment Online - Dr. MD
    Welcome to the Official 안성 출장안마 website of MGM Resorts International, one of the leading Internet 대구광역 출장샵 entertainment for a 부천 출장마사지 chance to play live dealer casino games and get a chance to 이천 출장샵 win 충주 출장샵 real prizes.

    BalasHapus

Posting Komentar

Postingan Populer