<?php
// Koneksi ke database
$host = "mysql"; // kalau docker: ganti jadi "mysql"
$user = "root";
$pass = "root";
$db = "ibnu";
try {
// Buat koneksi PDO
$conn = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
// Set error mode
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Query ambil data
$stmt = $conn->query("SELECT * FROM siswa");
} catch (PDOException $e) {
die("Koneksi gagal: " . $e->getMessage());
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Data Siswa</title>
<style>
table {
border-collapse: collapse;
width: 70%;
margin: 20px auto;
}
th, td {
border: 1px solid #333;
padding: 10px;
text-align: center;
}
th {
background-color: #4CAF50;
color: white;
}
</style>
</head>
<body>
<h2 style="text-align:center;">Data Siswa</h2>
<table>
<tr>
<th>No</th>
<th>Nama</th>
<th>Alamat</th>
<th>Tanggal Lahir</th>
</tr>
<?php
$no = 1;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>";
echo "<td>".$no++."</td>";
echo "<td>".$row['nama']."</td>";
echo "<td>".$row['alamat']."</td>";
echo "<td>".$row['tgl_lahir']."</td>";
echo "</tr>";
}
if ($no == 1) {
echo "<tr><td colspan='4'>Data tidak ada</td></tr>";
}
?>
</table>
</body>
</html>
Berikut penjelasan teori dasar + pembahasan detail dari kode PHP yang kamu buat. Saya jelaskan dari konsep paling dasar sampai alur eksekusi programnya supaya benar-benar paham, bukan sekadar hafal.
Kode ini sebenarnya menggabungkan beberapa konsep penting:
PHP adalah bahasa yang berjalan di server
Digunakan untuk:
👉 Jadi HTML yang tampil di browser sebenarnya hasil dari PHP.
Data disimpan di database ibnu
Tabel yang digunakan: siswa
Kolom:
nama
alamat
tgl_lahir
PDO adalah cara modern untuk koneksi database di PHP
📌 Keunggulan PDO:
$host = "mysql";
$user = "root";
$pass = "root";
$db = "ibnu";
📌 Catatan:
"mysql" biasanya dipakai di Docker (nama service)"localhost"
$conn = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
Ini adalah instansiasi object PDO
Format:
PDO("driver:host=HOST;dbname=DB", USER, PASSWORD)
Penjelasan:
mysql: → jenis databasehost → alamat serverdbname → nama databasecharset=utf8 → encoding karakter📌 Kenapa penting?
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Mengatur cara PDO menangani error
Jenis:
SILENT → diam (tidak disarankan)WARNING → warningEXCEPTION → error jadi exception ✅ (dipakai)📌 Keuntungan:
try-catch
try {
...
} catch (PDOException $e) {
die("Koneksi gagal: " . $e->getMessage());
}
catch
📌 die():
$stmt = $conn->query("SELECT * FROM siswa");
query() digunakan untuk menjalankan SQL langsung📌 PDOStatement:
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
fetch() → mengambil 1 baris datawhile → membaca semua dataPDO::FETCH_ASSOC
Artinya:
Contoh hasil:
$row = [
"nama" => "Budi",
"alamat" => "Bandung",
"tgl_lahir" => "2005-01-01"
];
echo "<td>".$row['nama']."</td>";
📌 Alur:
$no = 1;
echo "<td>".$no++."</td>";
$no++ → incrementif ($no == 1) {
echo "<tr><td colspan='4'>Data tidak ada</td></tr>";
}
$no tetap 1 → belum bertambah📌 colspan='4':
table {
border-collapse: collapse;
}
border-collapse → menggabungkan bordermargin auto → posisi tengahth → header tabelUrutan yang terjadi:
Browser request halaman PHP
Server menjalankan PHP
PHP:
PHP generate HTML
HTML dikirim ke browser
Browser menampilkan tabel
Ringkasan teori penting:
SELECT)while)try-catch)Kalau mau naik level, perhatikan ini:
$stmt = $conn->prepare("SELECT * FROM siswa");
$stmt->execute();
Kode ini adalah contoh klasik:
👉 PHP + PDO + MySQL + HTML Table
Digunakan untuk:
Kalau mau, saya bisa bantu lanjut ke:
Tinggal bilang 👍