Skip to main content

TUTORIAL by GEMINI: Koneksi dan Pengelolaan Database menggunakan Bahasa Pemrograman PHP dgn Konsep Pemrograman Berorientasi Obyek/Object Oriented Programming

FILE-FILE LAMPIRAN


📚 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).

KolomTipe DataKeterangan
id_anggotaINT(11)Kunci utama (Primary Key), AUTO_INCREMENT
namaVARCHAR(200)Nama Anggota
alamatTEXTAlamat Anggota
telponVARCHAR(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:

PHP
   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.

PHP
   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.

    PHP
    function 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.

    PHP
    function 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.

    PHP
    function 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').

    PHP
    function 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.

    PHP
    function 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:

  1. Panggil file koneksi_class.php dengan include.

  2. Buat instance objek dari kelas database ($db = new database();).

  3. Panggil method koneksi ($db->connectMySQL();).

PHP
// 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().

PHP
// ... 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.

PHP
// ... 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:

  1. Kolom Aksi ditambahkan ke tabel dengan tautan Hapus.

  2. Tautan hapus mengirim parameter aksi=hapus dan id_agt=... melalui metode GET (<a href='...php?aksi=hapus&id_agt=...'>Hapus</a>).

  3. Kode PHP memeriksa apakah parameter aksi bernilai hapus.

  4. Jika ya, nilai id_agt dibaca, dan method hapusAnggota($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
<?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 kelas database.

  • $db = new database();: Membuat objek baru bernama $db dari kelas database.

  • $db->connectMySQL();: Memanggil method koneksi untuk terhubung ke database coba.


2. Kelompok Kode: Logika Proses Hapus

Blok kode ini menangani permintaan penghapusan data yang dikirimkan melalui URL (Query String).

PHP
// 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 parameter aksi yang dikirimkan melalui URL (metode GET).

  • if ($_GET['aksi'] == 'hapus'): Memastikan bahwa aksi yang diminta adalah hapus.

  • $id = $_GET['id_agt'];: Mengambil nilai ID Anggota yang akan dihapus dari parameter URL id_agt.

  • $db->hapusAnggota($id);: Memanggil method hapusAnggota($id) yang ada di dalam koneksi_class.php untuk menjalankan query DELETE 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.

PHP
// 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 method tampilAnggota() untuk mengambil semua data terbaru dari tabel anggota dalam 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:

      1. aksi=hapus: Memberitahu Kelompok Kode 2 bahwa ini adalah permintaan hapus.

      2. id_agt=...: Menyertakan nilai id_anggota dari 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=edit diakses, 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 method updateDataAnggota() 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:

  1. Tahap Edit (aksi=edit): Menampilkan formulir yang sudah terisi dengan data anggota lama.

  2. 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
<?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 kelas database.

  • $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 parameter aksi ditemukan 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.

PHP
	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 baru aksi=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. Method bacaDataAnggota() dari koneksi_class.php bertugas 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.

PHP
	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 method updateDataAnggota() pada objek $db. Method ini berada di koneksi_class.php dan bertugas menjalankan query SQL UPDATE menggunakan 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.

PHP
// 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

Popular posts from this blog

PART 0.1.0 RAD PROTOTYPE Web-App: Post-Video & Comments [program]

Video List — JP Kanji Ultra Translation CONTROL SECTION — Login (Admin) Username: Password: Login CONTROL SECTION — Admin Panel Enable Comments Disable Comments Logout Activity Log Show Video COMMENTS DISABLED BY ADMIN Leave a Comment: Additional Comment Show Video COMMENTS DISABLED BY ADMIN Leave a Comment: Additional Comment Show Video COMMENTS DISABLED BY ADMIN Leave a Comment: Additional Comment Show Video COMMENTS DISABLED BY ADMIN Leave a Comment: Additional Comment

My Pending and Delayed POSTs SUMMARY [APPs]
MADE by ChatGPT

🔗 My Pending and Delayed POSTs SUMMARY Sort by Date Sort by Auto Title Sort by My Title Ascending Descending (Newest First) Insert URL: Your Own Title (Optional): Status: Pending Done ➕ ADD ENTRY 💾 SAVE EDIT (MAIN FORM) DATE / TIME AUTO TITLE MY TITLE STATUS URL ACTIONS 📝 TO DO LIST SUMMARY Sort by Date Sort by Header Sort by Detail ...

Tablet Holder di Mobil dan Konsep DOUBLE Tablet Holder aka +secondary supporting holder

Gw udah pasang Holder khusus Tablet yg menurut gw sudah pilihan terbaik! Karena memiliki Arm KERAS/RIGID yg dibutuhkan utk menggenggam ERAT Dalam hal menopang Tablet yg lebih berat dr HP biasa Cekidot Lapak (click here!!) Namun .. Setelah gw pasang Bukan tidak bagus Tapi kalau melewati jalan jelek GOYANG (sikit) juga Gan! Akan tetapi .... Gw rasa bisa makin dimaksimalkan KERIGIDAN dengan menambah PENOPANG KEDUA Check it out: Dari searching2 di MarketPlace Gw ketemu yg mirip holder lampu belajar zaman doeloe Dan .. namun .. tiba2 gw menemukan Ide (lanjutan) Mekanisme yg bisa diReApplied kalau suatu saat diperlukan di Kreasi Agan2 lain  Gunakan Kombo 2 Perangkat berikut apabila membutuhkan holdingan tablet tambahan yg memiliki  "hold area"  yg lebih sempit karena holder kedua "takutnya/dirasa" tidak akan muat utk menggenggam Tablet sebagai penopang kedua, sebagai akibat holder pertama/utama sudah "cukup banyak" memakan tempat Perangkat Pertama (kon...