TUTORIAL by GEMINI: Koneksi dan Pengelolaan Database menggunakan Bahasa Pemrograman PHP dgn Konsep Pemrograman Berorientasi Obyek/Object Oriented Programming
📚 Materi Pembelajaran:
Koneksi & Pengelolaan Database PHP (OOP)
Materi ini ditujukan untuk pemula yang baru mempelajari dasar-dasar PHP dan konsep Object-Oriented Programming (OOP), khususnya dalam konteks interaksi dengan database MySQL.
1. Struktur Database
Dalam contoh ini, kita menggunakan database bernama coba yang berisi satu tabel bernama anggota (lihat coba.sql).
| Kolom | Tipe Data | Keterangan |
id_anggota | INT(11) | Kunci utama (Primary Key), AUTO_INCREMENT |
nama | VARCHAR(200) | Nama Anggota |
alamat | TEXT | Alamat Anggota |
telpon | VARCHAR(15) | Nomor Telepon |
2. Kelas Koneksi Database (OOP)
Pengelolaan database dilakukan dalam sebuah kelas PHP bernama database yang disimpan di file koneksi_class.php. Ini adalah implementasi OOP yang memisahkan logika koneksi dan operasi database dari tampilan (view).
A. Properti (Variabel Anggota)
Properti menyimpan detail konfigurasi koneksi database:
private $dbHost="localhost";
private $dbUser="root";
private $dbPass="";
private $dbName="coba";
Properti ini dideklarasikan sebagai private agar hanya bisa diakses dari dalam kelas database itu sendiri.
B. Method Koneksi (connectMySQL)
Method ini bertugas untuk membuat koneksi ke MySQL.
function connectMySQL() {
mysql_connect($this->dbHost, $this->dbUser, $this->dbPass);
mysql_select_db($this->dbName) or die ("Database tidak ada!");
}
mysql_connect(): Membuat koneksi menggunakan properti$dbHost,$dbUser, dan$dbPass.mysql_select_db(): Memilih database$dbName.
⚠️ Catatan Penting: Fungsi
mysql_*sudah usang (deprecated) dan tidak disarankan untuk kode baru. Sebaiknya gunakan MySQLi atau PDO.
C. Method Operasi CRUD
Kelas database juga memiliki method untuk operasi dasar CRUD (Create, Read, Update, Delete):
1. Menampilkan Data (tampilAnggota)
Method ini menjalankan query SELECT * dan mengembalikan hasilnya dalam bentuk array multidimensi.
PHPfunction tampilAnggota() { $query=mysql_query("SELECT * FROM anggota ORDER BY id_anggota"); while($row=mysql_fetch_array($query)) $data[]=$row; return $data; }2. Menambah Data (tambahAnggota)
Menerima parameter data anggota dan menjalankan query INSERT.
PHPfunction tambahAnggota($nama, $alamat, $telpon) { $query = "INSERT INTO anggota (nama, alamat, telpon) VALUES ('$nama', '$alamat','$telpon')"; // ... eksekusi query }3. Menghapus Data (hapusAnggota)
Menerima $id_agt dan menjalankan query DELETE.
PHPfunction hapusAnggota($id_agt) { $query = mysql_query("DELETE FROM anggota WHERE id_anggota='$id_agt'"); // ... cetak pesan sukses }4. Membaca Data Tunggal (bacaDataAnggota)
Digunakan untuk mengambil satu baris data berdasarkan id_agt, biasanya untuk keperluan editing. Parameter $field menentukan kolom mana yang ingin dikembalikan (contoh: 'nama', 'alamat', atau 'telpon').
PHPfunction bacaDataAnggota($field,$id_agt) { $query = "SELECT * FROM anggota WHERE id_anggota = '$id_agt'"; // ... mengambil data dan mengembalikan nilai kolom yang diminta }5. Mengubah Data (updateDataAnggota)
Menerima semua data baru termasuk $id_anggota dan menjalankan query UPDATE.
PHPfunction updateDataAnggota($id_anggota,$nama,$alamat,$telpon) { $query = "UPDATE anggota SET nama='$nama', alamat ='$alamat', telpon='$telpon' WHERE id_anggota='$id_anggota'"; // ... eksekusi query }
3. Implementasi: Operasi Dasar Database
File-file latih_db*.php mengimplementasikan method-method dari kelas database untuk melakukan operasi CRUD.
A. Koneksi Sederhana (latih_db1.php)
Ini adalah langkah paling dasar:
Panggil file
koneksi_class.phpdenganinclude.Buat instance objek dari kelas
database($db = new database();).Panggil method koneksi (
$db->connectMySQL();).
// memanggil file koneksi
include 'koneksi_class.php';
// instance objek db
$db = new database();
// koneksi ke MySQL via method
$db->connectMySQL();
?>
B. Menambah Data (Create) (latih_db2.php)
Setelah koneksi, kita dapat memanggil method tambahAnggota().
// ... kode koneksi ...
// insert data anggota via method
$db->tambahAnggota('Joni Adi Surya', 'Pamulang', '021-88209340');
?>
C. Menampilkan Data (Read) (latih_db3.php)
Data diambil menggunakan method tampilAnggota() dan kemudian ditampilkan dalam tabel HTML.
// ... kode koneksi ...
// buat array data anggota dari method tampilAnggota()
$arrayanggota=$db->tampilAnggota();
echo "<table border='1' cellpadding='5'> /* ... header tabel ... */ </tr>";
// Loop data yang dikembalikan oleh method tampilAnggota()
foreach($arrayanggota as $data) {
echo "<tr> /* ... cetak kolom data ... */ </tr>";
$i++;
}
echo "</table>";
?>D. Menghapus Data (Delete) (latih_db4.php)
File ini menambahkan fungsionalitas hapus ke tampilan data:
Kolom Aksi ditambahkan ke tabel dengan tautan Hapus.
Tautan hapus mengirim parameter
aksi=hapusdanid_agt=...melalui metode GET (<a href='...php?aksi=hapus&id_agt=...'>Hapus</a>).Kode PHP memeriksa apakah parameter
aksibernilaihapus.Jika ya, nilai
id_agtdibaca, dan methodhapusAnggota($id)dipanggil.
Fokus mendalam pada file latih_db4.php dan pembahasan detail per kelompok kode.
📚 Materi Pembelajaran:
🗑️ D. Menghapus Data (Delete) dengan latih_db4.php
Fungsionalitas penghapusan data memungkinkan pengguna untuk menghapus satu baris data anggota dari tabel anggota. Dalam implementasi ini, proses penghapusan dipicu melalui hyperlink pada halaman yang sama (latih_db4.php), yang mengirimkan parameter melalui metode GET.
1. Kelompok Kode: Inisiasi dan Koneksi
Bagian awal file bertanggung jawab untuk menyiapkan lingkungan (OOP) dan membuat koneksi ke database.
<?php
// memanggil file koneksi
include 'koneksi_class.php';
// instance objek db
$db = new database();
// koneksi ke MySQL via method
$db->connectMySQL();
?>
include 'koneksi_class.php';: Memanggil dan menyertakan definisi kelasdatabase.$db = new database();: Membuat objek baru bernama$dbdari kelasdatabase.$db->connectMySQL();: Memanggil method koneksi untuk terhubung ke databasecoba.
2. Kelompok Kode: Logika Proses Hapus
Blok kode ini menangani permintaan penghapusan data yang dikirimkan melalui URL (Query String).
// proses hapus data
if (isset($_GET['aksi'])) {
if ($_GET['aksi'] == 'hapus') {
// baca ID dari parameter ID Anggota yang akan dihapus
$id = $_GET['id_agt'];
// proses hapus data anggota berdasarkan ID via method
$db->hapusAnggota($id);
}
}
if (isset($_GET['aksi'])): Memeriksa apakah ada parameteraksiyang dikirimkan melalui URL (metode GET).if ($_GET['aksi'] == 'hapus'): Memastikan bahwa aksi yang diminta adalahhapus.$id = $_GET['id_agt'];: Mengambil nilai ID Anggota yang akan dihapus dari parameter URLid_agt.$db->hapusAnggota($id);: Memanggil methodhapusAnggota($id)yang ada di dalamkoneksi_class.phpuntuk menjalankan queryDELETE FROM anggota WHERE id_anggota='$id_agt'.
3. Kelompok Kode: Tampilan Data (Memuat Ulang)
Setelah proses penghapusan (jika ada), kode akan melanjutkan dengan memuat ulang dan menampilkan data anggota yang tersisa.
// buat array data anggota dari method tampilAnggota()
$arrayanggota=$db->tampilAnggota();
echo "<table border='1' cellpadding='5'> /* ... header tabel ... */ </tr>";
$i = 1;
foreach($arrayanggota as $data) { /* ... cetak data ... */
// ... baris tabel ...
<td><a href='".$_SERVER['PHP_SELF']."?aksi=hapus&id_agt=".$data['id_anggota']."'>Hapus</a></td>
</tr>";
$i++;
}
echo "</table>";
?>
$arrayanggota=$db->tampilAnggota();: Memanggil methodtampilAnggota()untuk mengambil semua data terbaru dari tabelanggotadalam bentuk array.Loop
foreach: Mengulang data anggota dan menampilkannya dalam tabel HTML.Tautan Hapus: Baris ini adalah kunci implementasi Hapus (Delete):
<a href='...'>Hapus</a>: Membuat hyperlink yang dapat diklik.".$_SERVER['PHP_SELF'].": Menunjuk kembali ke file PHP itu sendiri (latih_db4.php), memungkinkan file ini memproses permintaannya sendiri.?aksi=hapus&id_agt=".$data['id_anggota'].": Ini adalah Query String yang dikirim ke file itu sendiri. Parameter ini berisi:aksi=hapus: Memberitahu Kelompok Kode 2 bahwa ini adalah permintaan hapus.id_agt=...: Menyertakan nilaiid_anggotadari baris data yang sedang ditampilkan, sehingga Kelompok Kode 2 tahu data mana yang harus dihapus.
Dengan cara ini, saat pengguna mengklik "Hapus", permintaan dikirimkan kembali ke latih_db4.php, logika penghapusan dieksekusi, dan halaman dimuat ulang dengan daftar anggota yang sudah diperbarui.
== 'hapus' -> Calls $db->hapusAnggota(X) -> $db->tampilAnggota() is called -> New table (without record X) is displayed.]
E. Mengubah Data (Update) (latih_db5.php)
File ini mengkombinasikan operasi Read, Edit, Update, dan Delete:
Tampilan Data: Menampilkan data dengan tautan Edit dan Hapus.
Aksi Edit: Jika
aksi=editdiakses, form edit ditampilkan.Form diisi dengan data anggota saat ini menggunakan method
bacaDataAnggota().ID anggota disimpan dalam
<input type="hidden">.
Aksi Update: Jika form disubmit (melalui
aksi=update), data dari form (via POST) ditangkap, dan methodupdateDataAnggota()dipanggil untuk menyimpan perubahan ke database.
Tentu, berikut adalah pengembangan detail untuk poin E. Mengubah Data (Update) dengan berfokus pada file latih_db5.php.
File latih_db5.php adalah implementasi lengkap yang mencakup tampilan data, penghapusan, dan pengubahan data (Edit dan Update), menjadikannya contoh aplikasi CRUD (Create, Read, Update, Delete) yang paling komprehensif dari semua file yang dilampirkan.
📚 Materi Pembelajaran:
📝 E. Mengubah Data (Update) dengan latih_db5.php
Proses pengubahan data terbagi menjadi dua tahapan utama yang dikontrol melalui parameter URL aksi:
Tahap Edit (
aksi=edit): Menampilkan formulir yang sudah terisi dengan data anggota lama.Tahap Update (
aksi=update): Menerima data baru dari formulir dan menyimpannya ke database.
1. Kelompok Kode: Inisiasi, Koneksi, dan Control Flow Utama
Bagian ini memastikan program dapat berkomunikasi dengan database dan menyiapkan struktur kontrol untuk memproses berbagai permintaan (Delete, Edit, atau Update).
<?php
// memanggil file koneksi
include 'koneksi_class.php';
// instance objek db
$db = new database();
// koneksi ke MySQL via method
$db->connectMySQL();
// proses hapus data & edit data
if (isset($_GET['aksi'])) {
// ... Logika Hapus ...
else if ($_GET['aksi'] == 'edit') {
// ... Logika Tampilkan Form Edit ...
}
else if ($_GET['aksi'] == 'update') {
// ... Logika Proses Update ...
}
}
?>
include 'koneksi_class.php';: Memuat definisi kelasdatabase.$db = new database();&$db->connectMySQL();: Membuat objek dan membuka koneksi database.if (isset($_GET['aksi'])): Struktur kontrol utama. Skrip hanya akan menjalankan logika Delete, Edit, atau Update jika parameteraksiditemukan di URL.
2. Kelompok Kode: Menampilkan Formulir Edit (Aksi='edit')
Jika pengguna mengklik tautan Edit pada tabel, URL akan berisi ?aksi=edit&id_agt=X. Skrip menjalankan blok ini, yang berfungsi sebagai "View" (Tampilan) untuk data yang akan diubah.
else if ($_GET['aksi'] == 'edit') {
// baca ID anggota yang akan diedit
$id = $_GET['id_agt'];
// menampilkan form edit anggota pakai method bacaDataAnggota()
?>
<form method="post" action="<?php $_SERVER['PHP_SELF']?>?aksi=update">
<table>
<tr><td>Nama Anggota</td><td>:</td>
<td><input type="text" name="nama" value="<?php echo $db->bacaDataAnggota('nama', $id); ?>"></td>
</tr>
</table>
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input type="submit" name="submit" value="Update Data">
</form>
<?php
}
$id = $_GET['id_agt'];: ID anggota yang akan diedit diambil dari URL.action="...php?aksi=update": Formulir diarahkan kembali ke file yang sama ($_SERVER['PHP_SELF']), tetapi dengan parameter baruaksi=update. Ini akan memicu Kelompok Kode 3 setelah tombol Update Data diklik.value="<?php echo $db->bacaDataAnggota('nama', $id); ?>": Input field diisi secara otomatis (pre-filled) dengan data lama. MethodbacaDataAnggota()darikoneksi_class.phpbertugas mengambil data tunggal (berdasarkan ID) untuk field yang diminta ('nama', 'alamat', atau 'telpon').<input type="hidden" name="id" value="<?php echo $id; ?>">: ID anggota disembunyikan dalam formulir. Ini sangat penting karena ID ini akan dikirim melalui metode POST ke Kelompok Kode 3 (aksi=update) untuk mengidentifikasi baris mana di database yang harus diubah.
3. Kelompok Kode: Logika Pemrosesan Update (Aksi='update')
Setelah formulir disubmit, permintaan dikirim dengan metode POST dan parameter URL aksi=update, yang memicu eksekusi blok kode ini.
else if ($_GET['aksi'] == 'update') {
// proses update data anggota
$id = $_POST['id'];
$nama = $_POST['nama'];
$alamat = $_POST['alamat'];
$telpon = $_POST['telpon'];
// update data via method
$db->updateDataAnggota($id, $nama, $alamat, $telpon);
}
Pengambilan Data POST: Semua data baru (termasuk ID dari hidden field) diambil dari array superglobal
$_POST.$db->updateDataAnggota(...): Memanggil methodupdateDataAnggota()pada objek$db. Method ini berada dikoneksi_class.phpdan bertugas menjalankan query SQLUPDATEmenggunakan semua parameter yang diberikan.
4. Kelompok Kode: Tampilan Data Anggota (List dengan Aksi)
Blok ini selalu dieksekusi setelah semua logika di Kelompok Kode 2 selesai, memastikan bahwa daftar anggota yang ditampilkan adalah yang terbaru.
// buat array data anggota dari method tampilAnggota()
$arrayanggota=$db->tampilAnggota(); // ...
// ... cetak header tabel ...
foreach($arrayanggota as $data) {
echo "<tr> /* ... cetak data ... */
<td><a href='".$_SERVER['PHP_SELF']."?aksi=edit&id_agt=".$data['id_anggota']."'>Edit</a> |
<a href='".$_SERVER['PHP_SELF']."?aksi=hapus&id_agt=".$data['id_anggota']."'>Hapus</a></td>
</tr>";
$i++;
}
// ...
?>
Tautan Edit: Setiap baris memiliki tautan Edit yang mengirimkan parameter
?aksi=edit&id_agt=...kembali ke file ini, yang kemudian memicu Kelompok Kode 2 untuk menampilkan formulir edit.
Comments