بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

Kumpulan Materi Management Informatika untuk SMA Islam Lembah Arafah

dan Kumpulan Hasil karya Siswa Lembah Arafah


Kategori php    
  • Koneksi Data
    <?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.


    🔰 1. Konsep Dasar yang Digunakan

    Kode ini sebenarnya menggabungkan beberapa konsep penting:

    1. PHP (Server-Side Programming)

    • PHP adalah bahasa yang berjalan di server

    • Digunakan untuk:

      • Koneksi database
      • Mengambil data
      • Menghasilkan HTML secara dinamis

    👉 Jadi HTML yang tampil di browser sebenarnya hasil dari PHP.


    2. Database MySQL

    • Data disimpan di database ibnu

    • Tabel yang digunakan: siswa

    • Kolom:

      • nama
      • alamat
      • tgl_lahir

    3. PDO (PHP Data Objects)

    PDO adalah cara modern untuk koneksi database di PHP

    📌 Keunggulan PDO:

    • Lebih aman (mencegah SQL Injection)
    • Support banyak database (MySQL, PostgreSQL, dll)
    • Object-oriented (rapi & fleksibel)

    🔌 2. Bagian Koneksi Database

    $host = "mysql";
    $user = "root";
    $pass = "root";
    $db   = "ibnu";
    

    Teori:

    • Ini disebut konfigurasi koneksi
    • Digunakan untuk menghubungkan PHP ke DB server

    📌 Catatan:

    • "mysql" biasanya dipakai di Docker (nama service)
    • Kalau lokal → biasanya "localhost"

    Membuat koneksi PDO

    $conn = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
    

    Teori:

    Ini adalah instansiasi object PDO

    Format:

    PDO("driver:host=HOST;dbname=DB", USER, PASSWORD)
    

    Penjelasan:

    • mysql: → jenis database
    • host → alamat server
    • dbname → nama database
    • charset=utf8 → encoding karakter

    📌 Kenapa penting?

    • Menghindari masalah encoding (huruf aneh)

    Error Handling

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    

    Teori:

    Mengatur cara PDO menangani error

    Jenis:

    • SILENT → diam (tidak disarankan)
    • WARNING → warning
    • EXCEPTION → error jadi exception ✅ (dipakai)

    📌 Keuntungan:

    • Bisa ditangkap oleh try-catch
    • Lebih mudah debugging

    Try - Catch

    try {
       ...
    } catch (PDOException $e) {
        die("Koneksi gagal: " . $e->getMessage());
    }
    

    Teori:

    • Digunakan untuk menangani error runtime
    • Jika koneksi gagal → masuk ke catch

    📌 die():

    • Menghentikan program
    • Menampilkan pesan error

    📊 3. Query Data

    $stmt = $conn->query("SELECT * FROM siswa");
    

    Teori:

    • query() digunakan untuk menjalankan SQL langsung
    • Menghasilkan object PDOStatement

    📌 PDOStatement:

    • Object yang menyimpan hasil query
    • Bisa di-loop / di-fetch

    🔁 4. Mengambil Data (Fetch)

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
    

    Teori:

    • fetch() → mengambil 1 baris data
    • Loop while → membaca semua data

    Jenis Fetch Mode:

    PDO::FETCH_ASSOC
    

    Artinya:

    • Data diambil dalam bentuk array asosiatif

    Contoh hasil:

    $row = [
      "nama" => "Budi",
      "alamat" => "Bandung",
      "tgl_lahir" => "2005-01-01"
    ];
    

    🌐 5. HTML + PHP (Dynamic Content)

    echo "<td>".$row['nama']."</td>";
    

    Teori:

    • PHP menyisipkan data ke HTML
    • Ini disebut server-side rendering

    📌 Alur:

    1. PHP ambil data dari DB
    2. PHP generate HTML
    3. Browser menerima HTML jadi

    🔢 6. Penomoran Otomatis

    $no = 1;
    echo "<td>".$no++."</td>";
    

    Teori:

    • $no++ → increment
    • Digunakan untuk nomor urut tabel

    ⚠️ 7. Validasi Data Kosong

    if ($no == 1) {
        echo "<tr><td colspan='4'>Data tidak ada</td></tr>";
    }
    

    Teori:

    • Jika loop tidak jalan → berarti data kosong
    • $no tetap 1 → belum bertambah

    📌 colspan='4':

    • Menggabungkan 4 kolom jadi 1

    🎨 8. CSS Styling

    table {
        border-collapse: collapse;
    }
    

    Teori:

    • border-collapse → menggabungkan border
    • margin auto → posisi tengah
    • th → header tabel

    🔄 9. Alur Eksekusi Program (WAJIB PAHAM)

    Urutan yang terjadi:

    1. Browser request halaman PHP

    2. Server menjalankan PHP

    3. PHP:

      • konek ke database
      • jalankan query
      • ambil data
    4. PHP generate HTML

    5. HTML dikirim ke browser

    6. Browser menampilkan tabel


    🧠 10. Konsep Inti yang Dipakai

    Ringkasan teori penting:

    • Client vs Server
    • Koneksi database
    • PDO (Object-Oriented DB Access)
    • SQL Query (SELECT)
    • Looping (while)
    • Array Asosiatif
    • Error Handling (try-catch)
    • Dynamic HTML

    🚀 11. Insight (Level Developer)

    Kalau mau naik level, perhatikan ini:

    ❗ Kelemahan kode sekarang:

    • Belum pakai prepared statement
    • Belum ada pagination
    • Belum ada sanitasi output (XSS)

    ✅ Versi lebih aman (contoh konsep)

    • Gunakan:
    $stmt = $conn->prepare("SELECT * FROM siswa");
    $stmt->execute();
    

    📌 Kesimpulan

    Kode ini adalah contoh klasik:

    👉 PHP + PDO + MySQL + HTML Table

    Digunakan untuk:

    • Menampilkan data dari database
    • Dasar semua CRUD aplikasi web

    Kalau mau, saya bisa bantu lanjut ke:

    • 🔥 versi CRUD lengkap (insert, edit, delete)
    • 🔥 integrasi ke API Laravel (sesuai project kamu Flutter)
    • 🔥 pagination + search seperti DataTables

    Tinggal bilang 👍