Crud PHP Tuts For All
Crud PHP Tuts For All
BAGIAN I
CRUD DENGAN PHP DAN HTML
Proyek yang akan kita buat sebagai materi belajar adalah project CRUD (Create, Retrieve/Read,
Update dan Delete) sederhana dengan menggunakan bahasa pemrograman PHP.
Ada beberapa tahap yang perlu dipersiapkn dalam pembuatan project ini adalah sebagai berikut:
1.1 Kebutuhan Software
a. Web Server dan DBMS = XAMPP
XAMPP dapat diunduh dari laman apachefriends.org atau dari laman sourceforge.net.
b. Text Editor = Notepad++ (Recommended)
Notepad++ dapat diunduh dari laman notepad-plus-plus.org
c. Browser = Google Chrome (Recommended)
Browser Google Chrome dapat diunduh dari laman google.co.id
d. MySQL Tool = SQLyog (optional)
SQLyog dapat diunduh dari laman webyog.com atau dari laman github.com
1.2 Persiapan
Hal-hal penting yang harus dipersiapakan untuk pembuatan project CRUD ini selain kebutuhan
software di atas adalah:
1.2.1 Membuat Folder
Persiapan membuat folder ini sangat penting karena folder ini akan berfungsi sebagai wadah
untuk menampung file-file utama dan file-file pendukung project yang akan dibuat. Buat nama folder
sesuai format berikut ini crud_php_MK_KLS
MK = Singkatan nama Matakuliah
PT = Pemrograman Terstruktur
PBD = Praktikum Basis Data
MABD = Manajemen dan Administrasi Basis Data
PMW = Pemrograman Mobile Web
KLS = Nama Kelas. Misalnya kelas A, B, C dan seterusnya
PENTING !!!
Contoh: Untuk matakuliah Pemrograman Mobile Web Kelas G, maka penulisan nama
foldernya adalah crud_php_pmw_g (semuanya huruf kecil/lower case dan
menggunakan simbol underscore “_” sebagai pengganti spasi).
Misalnya matakuliah yang anda program adalah adalah Pemrograman Terstruktur
Kelas A maka nama folder yang harus anda buat adalah crud_php_pt_a sesuai format.
Jika sudah memahami format penulisan nama folder di atas maka berikutnya adalah membuat
folder sesuai kasus yang diangkat sebagai contoh yaitu kasus matakuliah Pemrograman Mobile Web
Kelas G
CATATAN:
Bagian yang di-highlight warna MERAH pada penulisan nama folder di atas disesuaikan
dengan nama matakuliah dan nama kelas anda
2. Buat juga dua sub folder di dalamnya yaitu folder config dan modul
3. Di dalam folder modul, buat lagi sub folder dengan nama jenjang, prodi dan mahasiswa
C:\xampp\htdocs
- crud_php_pmw_g
- config
- modul
- jenjang
- prodi
- mahsiswa
CATATAN:
Bagian yang di-highlight warna MERAH pada penulisan nama database di atas disesuaikan dengan
nama matakuliah dan nama kelas anda
6. Klik tombol Create di sebelah kanan textbox Database name untuk mulai proses pembuatan
database. Jika proses berhasil maka tampak jendela Create table dan anda diminta untuk
membuatkan tabel-tabel yang dibutuhkan di dalam database yang baru dibuat tersebut.
tbl_jenjang
Name Type Length/Values Null Index A_I
kode_jenjang Varchar 3 No Primary No
nama_jenjang Varchar 50 No - No
tbl_prodi
Name Type Length/Values Null Index A_I
kode_prodi Varchar 2 No Primary No
nama_prodi Varchar 50 No - No
kode_jenjang Varchar 3 No - No
tbl_mahasiswa
Name Type Length/Values Null Index A_I
nim Varchar 8 No Primary No
nama_mahasisw Varchar 60 No - No
a
jenis_kelamin Varchar 10 No - No
tempat_lahir Varchar 30 No - No
tanggal_lahir Date - No - No
kode_prodi Varchar 2 No - No
Setelah tombol Go diklik maka tampil form isian untuk menginputkan kedua field yang diminta
pada proses pembuatan tabel pada langkah kedua di atas. Kedua field ini adalah kode_jenjang dan
nama_jenjang.
Ikuti langkah-langkah berikut ini untuk mengisi form pada gambar 5 di atas.
1. Ketikkan kode_jenjang di bagian nama pada baris pertama
2. Pilih tipe data pada combo Type. Di sini anda harus memilih tipe data VARCHAR (lihat
struktur tabel tbl_jenjang pada daftar Tabel 1)
Untuk langkah ke-4 sampai langkah ke-6, ikuti langkah ke-1 sampai langkah ke-3 di atas
dengan mengikuti aturan yang tertera pada tabel daftar Tabel 1.
Gambar 6. Jendela form create field pada table tbl_jenjang dan isiannya
Gambar 7. Jendela form create field pada table tbl_jenjang dan add index
-- --------------------------------------------------------
-- --------------------------------------------------------
--
-- Table structure for table `tbl_prodi`
--
-- --------------------------------------------------------
--
-- Table structure for table `tbl_mahasiswa`
--
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tbl_jenjang`
--
ALTER TABLE `tbl_jenjang`
ADD PRIMARY KEY (`kode_jenjang`);
--
-- Indexes for table `tbl_prodi`
--
ALTER TABLE `tbl_prodi`
ADD PRIMARY KEY (`kode_prodi`);
--
COMMIT;
CATATAN:
Bagian yang di-highlight warna Merah pada script di atas adalah nama database yang harus diganti
sesuai dengan format aturan penulisan nama database yaitu db_crud_MK_KLS. Namun untuk
mengganti nama database ini harus berhati-hati agar tidak kehilangan tanda petik tunggal (`) yang
mengapiti nama database yang dituliskan dan perhatikan pula agar tidak ada spasi kosong antara
tanda petik dengan nama database.
CCC
4. Paste/tempelkan script yang disalin tadi ke dalam jendela SQL query.
Jangan lupa untuk mengganti nama databasenya sesuai kasus yaitu nama matakuliah dan nama
kelas anda lalu klik tombol Go
if( !$db ){
die("Gagal terhubung dengan database: " . mysqli_connect_error());
}
?>
CATATAN:
Bagian yang di-highlight warna MERAH pada penulisan nama database di atas disesuaikan dengan
nama matakuliah dan nama kelas anda
Script di atas diketikkan atau disalin ke dalam text editor dan disimpan dengan nama
koneksi.php ke dalam folder yang telah dibuat sesuai matakuliah dan kelas 📁 C:\xampp\htdocs\
crud_php_pmw_g\konfig\koneksi.php
PENJELASAN:
File koneksi.php ini sebagai penghubung antara PHP dengan MySQL menggunakan
fungsi mysqli_connect() dengan parameter alamat server, user, password, dan nama database. Secara
default nama server adalah localhost, nama user adalah root. Nama user, password maupun nama
database dapat diganti sesuai kebutuhan
<?php
function cek_kode($namaTabel, $namaField, $nilaiField)
{
include "koneksi.php";
$sql = "SELECT * FROM $namaTabel WHERE $namaField='$nilaiField'";
$query = mysqli_query($db, $sql);
$row = mysqli_fetch_assoc($query);
return (is_array($row) && count($row)>0);
}
?>
<!-- SALIN SAMPAI DI SINI -->
Script di atas dapat diketikkan atau disalin ke dalam text editor dan disimpan dengan nama
fungsi.php ke dalam folder yang telah dibuat sesuai nama matakuliah dan kelas 📁 C:\xampp\htdocs\
crud_php_pmw_g\konfig\fungsi.php
PENJELASAN :
Fungsi cek_kode di atas adalah fungsi yang dibuat untuk memeriksa apakah sebuah data
berdasarkan kode tertentu (primary key) apakah sudah ada di dalam tabel atau belum sehingga tidak
terjadi duplikasi data pada saat penyimpanan data.
function cek_kode($namaTabel, $namaField, $nilaiField)
$namaTabel : Parameter ini mewakili nama suatu tabel tertentu misalnya tabel
tbl_mahasiswa
$namaField : Parameter ini mewakili nama suatu field tertentu. Field/kolom ini adalah
field yang akan dicari data di dalamnya misalnya field nim pada tabel
tbl_mahasiswa
$nilaiField : Parameter ini mewakili nilai suatu field tertentu yang akan dicari kecocokan
nilainya pada field tertentu. Nilai field ini biasanya dikirimkan dari form
setelah terjadi proses $_POST atau $_GET
include "koneksi.php";
Potongan bari script di atas digunakan untuk memanggil file koneksi.php. Alasan pemanggilan file
ini dalam fungsi cek_kode, karena fungsi cek_kode ini membutuhkan koneksi dengan database yaitu
berhubungan dengan pemeriksaan data di dalam tabel dan field tertentu sehingga file ini sangat
dibutuhkan.
1.3.1.2.1 CRUD Jenjang
Ada beberapa 6 file yang harus dibuat untuk menunjang proses CRUD jenjang yang disimpan di
dalam folder 📁 C:\xampp\htdocs\crud_php_pmw_g\modul\jenjang yaitu:
daftar_data_read.php - Untuk menampilkan daftar data dari tabel (Read/Retrieve)
form_tambah.php - Form untuk input data baru (Create)
proses_tambah_create.php - Untuk menambahkan data baru ke dalam tabel (Create)
form_edit.php - Form untuk edit/ubah data (Update)
proses_edit_update.php - Untuk merubah isi data yang sudah ada (Update)
proses_hapus_delete.php - Untuk menghapus data dari tabel (Delete)
Karena kepanjangan dari CRUD adalah Create, Read/Retrieve, Update dan Delete maka keenam
file di atas memiliki peran masing-masing dalam proses CRUD ini. Setiap kelompok file dalam proses
CRUD dibedakan berdasarkan warna teks.
C:\xampp\htdocs
- crud_php_pmw_g
- config
- modul
- jenjang
- prodi
- mahsiswa
- daftar_data_read.php
- form_edit.php
- proses_edit_update.php
- proses_hapus_delete_php
- proses_tambah_create.php
Gambar 10. Struktur folder jenjang file-filenya
1. Source Code
a. File daftar_data_read.php
Ketik atau salin script di atas ke dalam text editor lalu simpan dengan nama daftar_data_read.php
di folder 📁 C:\xampp\htdocs\crud_php_pmw_g\modul\jenjang\daftar_data_read.php
PENJELASAN :
<?php
//panggil file koneksi.php yang tersimpan di dalam folder config
include "../../config/koneksi.php";
//membuka session untuk menyimpan data di memory
session_start();
/*
periksa dan simpan nilai $_SESSION['sessData'] ke dalam
variabel baru bernama $sessData
*/
$sessData = !empty($_SESSION['sessData'])?$_SESSION['sessData']:'';
//periksa apakah nilai variabel $sessData dengan key pesan tidak sedang kosong
if(!empty($sessData['pesan']['isi_pesan'])){
/*
jika tidak kosong maka buat dua variabel baru yaitu
$nilai_isi_pesan untuk menampung isi pesan dan variabel
$nilai_tipe_pesan untuk menampung tipe pesan dari
varibel $sessData di atas
*/
$nilai_isi_pesan = $sessData['pesan']['isi_pesan'];
$nilai_tipe_pesan = $sessData['pesan']['tipe_pesan'];
//hapus session sessData yang memiliki key pesan
unset($_SESSION['sessData']['pesan']);
}
?>
<?php
/*
jika variabel $nilai_isi_pesan dan variabel $nilai_tipe_pesan
tidak sedang kosong maka
*/
if( !empty($nilai_isi_pesan) && !empty($nilai_tipe_pesan) ){
/*
tampilkan teks yang diambil dari nilai variabel $nilai_tipe_pesan
?>
<?php
//buat variabel bernama $sql untuk menuliskan perintah SQL
$sql = "SELECT * FROM tbl_jenjang ORDER BY kode_jenjang ASC";
//buat variabel $query untuk menampung hasil eksekusi perintah SQL di atas
$query = mysqli_query($db, $sql);
//set nilai awal nomor urut dengan angka 1
$no_urut = 1;
/*
simpan hasil eksekusi $query ke dalam array bernama $baris lalu
lakukan proses looping/perulangan sebanyak jumlah baris data
yang ada di dalam tabel
*/
while($baris = mysqli_fetch_array($query)){
?>
<tr>
//isi nilai dari variabel $no_urut
<td><?=$no_urut?></td>
//isi nilai kode_jenjang yang diambil dari array baris
<td><?=$baris['kode_jenjang']?></td>
//isi nilai kode_jenjang yang diambil dari array baris
<td><?=$baris['nama_jenjang']?></td>
<td>
/*
buat link ke file form_edit.php dan mengirimkan parameter
id dengan nilai dari kode_jenjang untuk setiap baris
dalam setiap kali looping
*/
<a href="form_edit.php?id=<?=$baris['kode_jenjang']?
>">Edit</a> |
<a href="proses_hapus_delete.php?id=<?=$baris['kode_jenjang']?
>"
onclick="return confirm('Apakah anda yakin ingin menghapus
data ini?')">
Hapus
</a>
</td>
</tr>
<?php
//tambahkan nilai no_urut dengan 1 setiap kali putaran atau looping
$no_urut++;
}
?>
Ketik atau salin script di atas ke dalam text editor lalu simpan dengan nama form_tambah.php di
folder 📁 C:\xampp\htdocs\crud_php_pmw_g\modul\jenjang\form_tambah.php
PENJELASAN :
<!-- SCRIPT LAIN DI SINI ----------!>
<!--
jika form ini di-submit dengan menekan tombol Simpan Data maka
akan mengirimkan data-data pada form ini ke file proses_tambah_create.php
dengan metode pengiriman datanya adalah $_POST
-->
<form action="proses_tambah_create.php" method="POST">
<p>
<label for="kode_jenjang">Kode Jenjang: </label>
/* elemen name="kode_jenjang" ini akan ditangkap
oleh proses_tambah_create.php dengan perintah
$_POST['kode_jenjang'];
*/
<input type="text" name="kode_jenjang" placeholder="Cth: S-1" value=""
size="8" size="8" maxlength="3" required />
</p>
c. File proses_tambah_create.php
Ketik atau salin script di atas ke dalam text editor lalu simpan dengan nama
proses_tambah_create.php di folder 📁 C:\xampp\htdocs\crud_php_pmw_g\modul\jenjang\
proses_tambah_create.php
PENJELASAN :
<?php
//membuka session untuk menyimpan data ke memory
session_start();
//panggil file koneksi.php agar terhubung dgn database
include "../../config/koneksi.php";
//panggil file fungsi.php
include "../../config/fungsi.php";
//jika tombol Simpan Data pada form_tambah.php diklik maka
if(isset($_POST['simpan'])){
/*
buat variabel $kode_jenjang, nilainya dikirim dari
form form_tambah.php yaitu elemen yang bernama kode_jenjang
(name="kode_jenjang")
*/
$kode_jenjang = $_POST['kode_jenjang'];
//idem
$nama_jenjang = $_POST['nama_jenjang'];
/*
buat variabel $cek untuk memeriksa kode dengan fungsi cek_kode
yang tersimpan di dlm file fungsi.php
*/
$cek=cek_kode('tbl_jenjang', 'kode_jenjang', $kode_jenjang);
//jika nilai yang dikembalikan dari variabel $cek adalah TRUE (data ada di
tabel) maka
if($cek){
//buat array utk menyimpan pesan
$sessData['pesan']['tipe_pesan'] = 'warning';
$sessData['pesan']['isi_pesan'] = 'Maaf, data dengan Kode <b>'.
$kode_jenjang.'</b> sudah ada di dalam tabel';
//simpan array di atas ke session sessData
$_SESSION['sessData'] = $sessData;
//alihkan halaman ke daftar_data_read.php lalu hentikan proses ke
baris berikut
header('Location: daftar_data_read.php');
exit();
}
/*
buat perintah SQL untuk menyimpan data ke dalam tabel yaitu:
sisipkan ke dalam tbl_jenjang yaitu kode_jenjang, nama_jenjang
dengan nilai diambil dari variabel $kode_jenjang, $nama_jenjang.
variabel $kode_jenjang dan $nama_jenjang
*/
$sql = "INSERT INTO tbl_jenjang (kode_jenjang, nama_jenjang)
VALUES ('$kode_jenjang', '$nama_jenjang')";
//buat variabel $query untuk mengeksekusi perintah SQL di atas
$query = mysqli_query($db, $sql);
if( $query ) {
//jika query berhasil dieksekusi maka buat array dgn pesan ini
d. File form_edit.php
Ketik atau salin script di atas ke dalam text editor lalu simpan dengan nama form_edit.php di
folder 📁 C:\xampp\htdocs\crud_php_pmw_g\modul\jenjang\form_edit.php
PENJELASAN :
<?php
//panggil file koneksi.php agar terhubung dgn database
include "../../config/koneksi.php";
//memriksa apakah parameter id telah didefinisikan
if( !isset($_GET['id']) ){
//jika belum maka buat array untuk menyimpan pesan
$sessData['pesan']['tipe_pesan'] = 'error';
$sessData['pesan']['isi_pesan'] = 'Maaf, akses dilarang...';
//simpan array di atas ke session sessData
$_SESSION['sessData'] = $sessData;
//alihkan halaman ke daftar_data_read.php lalu hentikan proses ke baris
berikut
header('Location: daftar_data_read.php');
exit();
}
/*
buat variabel $id dan set nilainya diambil dari parameter id
dgn metode $_GET
*/
$id = $_GET['id'];
//buat perintah SQL untuk memilih data dari tabel
/*
pilih semua field dari tbl_jenjang bilamana kode_jenjang
sama dengan nilai dari variabel $id
*/
$sql = "SELECT * FROM tbl_jenjang WHERE kode_jenjang='$id'";
//buat variabel $query untuk mengeksekusi perintah SQL di atas
$query = mysqli_query($db, $sql);
/*
jika form ini di-submit dengan menekan tombol Edit Data maka
akan mengirimkan data-data pada form ini ke file proses_edit_update.php
dengan metode pengiriman datanya adalah $_POST
*/
e. File proses_edit_update.php
Ketik atau salin script di atas ke dalam text editor lalu simpan dengan nama
proses_edit_update.php di folder 📁 C:\xampp\htdocs\crud_php_pmw_g\modul\jenjang\
proses_edit_update.php
PENJELASAN :
<?php
//membuka session untuk menyimpan data ke memory
session_start();
//panggil file koneksi.php agar terhubung dgn database
include "../../config/koneksi.php";
//jika tombol Edit Data pada form_edit.php diklik maka
if(isset($_POST['edit'])){
/*
buat variabel $kode_jenjang, nilainya dikirim dari
form form_edit.php yaitu elemen yang bernama kode_jenjang
(name="kode_jenjang")
*/
$kode_jenjang = $_POST['kode_jenjang'];
//idem
$nama_jenjang = $_POST['nama_jenjang'];
/*
buat perintah SQL untuk merubah data yaitu:
rubah data dari tabel tbl_jenjang
isikan field kode_jenjang dengan nilai dr variabel $kode_jenjang
isikan field nama_jenjang dengan nilai dr variabel $nama_jenjang
bilamana nilai pada field kode_jenjang = nilai dr variabel
$kode_jenjang
*/
$sql = "UPDATE tbl_jenjang SET
kode_jenjang='$kode_jenjang',
nama_jenjang='$nama_jenjang'
WHERE kode_jenjang='$kode_jenjang'";
f. File proses_hapus_delete.php
Ketik atau salin script di atas ke dalam text editor lalu simpan dengan nama
proses_hapus_delete.php di folder 📁 C:\xampp\htdocs\crud_php_pmw_g\modul\jenjang\
proses_hapus_delete.php
PENJELASAN :
<?php
//membuka session untuk menyimpan data ke memory
session_start();
//panggil file koneksi.php agar terhubung dgn database
include "../../config/koneksi.php";
//memriksa apakah parameter id telah didefinisikan
if( isset($_GET['id']) ){
/*
jika sudah, buat variabel $id dan set nilainya diambil dari
parameter id dgn metode $_GET
*/
$id = $_GET['id'];
//buat perintah SQL untuk menghapus data dari tabel
/*
hapus data dari tbl_jenjang bilamana kode_jenjang
sama dengan nilai dari variabel $id
*/
$sql = "DELETE FROM tbl_jenjang WHERE kode_jenjang='$id'";
//buat variabel $query untuk mengeksekusi perintah SQL di atas
$query = mysqli_query($db, $sql);
if( $query ){
//jika query berhasil dieksekusi maka buat array dgn pesan ini
$sessData['pesan']['tipe_pesan'] = 'success';
$sessData['pesan']['isi_pesan'] = 'Data berhasil dihapus.';
} else {
//jika tidak berhasil dieksekusi maka buat array dgn pesan ini
$sessData['pesan']['tipe_pesan'] = 'error';
$sessData['pesan']['isi_pesan'] = 'Data gagal dihapus.';
}
} else {//jika parameter id belum didefinisikan maka
//buat array dgn pesan ini
$sessData['pesan']['tipe_pesan'] = 'error';
$sessData['pesan']['isi_pesan'] = 'Maaf, akses dilarang...';
}
//simpan variabel $sessData ke dalam $_SESSION
$_SESSION['sessData'] = $sessData;
//beralih ke halaman daftar_data_read.php
header('Location: daftar_data_read.php');
?>
Hasilnya adalah:
b. Hasil form_tambah.php
Jika link [+] Tambah Data pada gambar 11 di atas diklik maka akan tampil
form_tambah.php dan isikan data yang diminta untuk menambahkan data baru ke dalam
tabel tbl_jenjang
c. Hasil form_edit.php
Jika link Edit pada gambar 13 di atas diklik maka akan tampak form_edit.php sebagai
berikut
Jika nama jenjang pada form di atas diubah maka akan tampak seperti gambar berikut ini
Jika tombol OK pada konfirmasi diklik maka data akan dikirimkan ke file
proses_hapus_delete.php dan proses akan dialihkan ke dafftar_data_read.php seperti
tampak pada gambar 18 berikut ini.
Eksekusi program CRUD Jenjang dengan menuliskan link berikut pada address bar browser
localhost/crud_php_pmw_g/modul/jenjang/daftar_data_read.php