Wednesday, 4 February 2026

Belajar web dari awal sampai master

Modul Web Profil Sekolah - PHP & MySQL
MODUL PEMBELAJARAN INTERAKTIF

Web Profil Sekolah
PHP & MySQL

Membangun Sistem Informasi Sekolah Lengkap dengan Source Code

Oleh: Ahmad Jamaludin Khusen | Materi Kelas XII RPL

1. Struktur Folder Project

Susun folder di C:/xampp/htdocs/web-sekolah/:

web-sekolah/
├── admin/            <!-- Area khusus pengelola konten -->
│   ├── index.php     <!-- Dashboard pusat admin -->
│   ├── guru.php      <!-- Kelola data tenaga pendidik -->
│   └── logout.php    <!-- Keluar dari sistem keamanan -->
├── assets/           <!-- Gambar, CSS, dan JavaScript -->
├── config/           <!-- Pengaturan sistem & DB -->
│   └── koneksi.php   <!-- Jembatan ke MySQL -->
├── index.php         <!-- Halaman utama bagi publik -->
└── profil.php        <!-- Info sejarah & visi misi -->
                

Pentingnya Folder Modular

Memisahkan file berdasarkan fungsinya (seperti config untuk database) memudahkan tim developer saat melakukan perbaikan kode di masa depan tanpa merusak tampilan utama.

2. Jembatan Data (koneksi.php)

File: config/koneksi.php
<?php
// Menentukan identitas server database
$host = "localhost"; // Nama server (lokal)
$user = "root";      // Username default XAMPP
$pass = "";          // Password default (kosong)
$db   = "db_sekolah"; // Nama database yang dituju

// Membuat jembatan koneksi ke MySQL
$koneksi = mysqli_connect($host, $user, $pass, $db);

// Memvalidasi: Jika koneksi gagal, hentikan program & tampilkan error
if (!$koneksi) {
    die("Koneksi gagal: " . mysqli_connect_error());
}

/**
 * Fungsi query() menyederhanakan pengambilan data
 * agar tidak menulis mysqli_fetch_assoc berulang kali
 */
function query($query) {
    global $koneksi;
    $result = mysqli_query($koneksi, $query);
    $rows = [];
    while ($row = mysqli_fetch_assoc($result)) {
        $rows[] = $row; // Memasukkan baris data ke dalam array
    }
    return $rows; // Mengembalikan kumpulan data
}
?>
        

3. Keamanan Admin (login.php)

Proses Verifikasi Akun
<?php
session_start(); // Memulai sesi untuk mengingat user yang login
include 'config/koneksi.php';

// Mengecek jika tombol login sudah ditekan
if(isset($_POST['login'])) {
    $user = $_POST['username'];
    $pass = $_POST['password'];

    // Mencari username di database
    $result = mysqli_query($koneksi, "SELECT * FROM admin WHERE username='$user'");
    
    // Jika user ditemukan (jumlah baris == 1)
    if(mysqli_num_rows($result) === 1) {
        $row = mysqli_fetch_assoc($result);
        
        // Membandingkan password input dengan password di database
        if($pass == $row['password']) {
            // Membuat tanda pengenal bahwa admin sudah login
            $_SESSION['admin'] = true;
            header("Location: admin/index.php"); // Pindah ke dashboard
            exit;
        }
    }
    $error = true; // Jika gagal, variabel ini akan memicu pesan error
}
?>
        

4. Menampilkan Data (Read)

File: admin/guru.php (Bagian Tabel)
<table border="1" cellpadding="10">
  <tr>
    <th>Nama Guru</th>
    <th>Mata Pelajaran</th>
    <th>Aksi</th>
  </tr>
  
  <?php
  // Mengambil seluruh baris dari tabel guru
  $data = mysqli_query($koneksi, "SELECT * FROM guru");
  
  // Looping: Ulangi kode di bawah selama data masih ada
  while($row = mysqli_fetch_assoc($data)) : ?>
  <tr>
    <td><?= $row['nama_guru']; ?></td> <!-- Menampilkan nama -->
    <td><?= $row['mapel']; ?></td>     <!-- Menampilkan mapel -->
    <td>
      <!-- Mengirim ID lewat URL untuk proses Edit/Hapus -->
      <a href="edit_guru.php?id=<?=$row['id'];?>">Edit</a> | 
      <a href="hapus.php?id=<?=$row['id'];?>" onclick="return confirm('Yakin?') AT " >Hapus</a>
    </td>
  </tr>
  <?php endwhile; ?>
</table>
        

5. Menambah Data (Create)

Logika Simpan Data
<?php
// Mengecek apakah form sudah di-submit
if(isset($_POST['simpan'])) {
    // Menangkap data dari inputan HTML (atribut name)
    $nama = $_POST['nama_guru'];
    $nip  = $_POST['nip'];
    $mpl  = $_POST['mapel'];
    
    // Perintah SQL untuk memasukkan data baru
    $query = "INSERT INTO guru (nip, nama_guru, mapel) 
              VALUES ('$nip', '$nama', '$mpl')";
    
    // Menjalankan perintah ke database
    mysqli_query($koneksi, $query);
    
    // Mengecek apakah ada baris yang bertambah di database
    if(mysqli_affected_rows($koneksi) > 0) {
        echo "<script>alert('Data Berhasil Disimpan!');</script>";
    }
}
?>
        

6. Menghapus Data (Delete)

File: admin/hapus_guru.php
<?php
include '../config/koneksi.php'; // Hubungkan ke DB

// Menangkap ID yang dikirim dari tombol hapus di URL
$id = $_GET['id'];

/**
 * Menjalankan perintah hapus data
 * PENTING: Gunakan WHERE agar tidak semua data terhapus!
 */
mysqli_query($koneksi, "DELETE FROM guru WHERE id = $id");

// Setelah dihapus, kembalikan admin ke halaman daftar guru
header("Location: guru.php");
exit;
?>
        

Perhatian!

Tanpa klausa WHERE id = $id, perintah DELETE akan menghapus SELURUH isi tabel. Selalu teliti!

Memahami Alur CRUD

Dengan membaca komentar di atas, Anda telah mempelajari bagaimana data mengalir dari Form (HTML) ke Logika (PHP) dan berakhir di Penyimpanan (MySQL).

Rangkuman Belajar:

  • $_POST: Mengambil data yang dikirim secara tersembunyi.
  • $_GET: Mengambil data dari alamat URL (seperti ID).
  • mysqli_query: Juru bicara kita ke server MySQL.
  • while: Mesin otomatis untuk menampilkan ribuan data.
Slide 1 / 8

SIMULATOR BELAJAR WEB DARI PEMULA

Simulator Pembelajaran Web Development

Simulator Belajar Web

Selamat datang! Pelajari cara membuat website dari nol hingga jadi. Ikuti setiap tahapan dengan interaktif.

Panduan Interaktif CMS Masterclass: PHP & MySQL

Panduan Interaktif CMS Masterclass: PHP & MySQL
CMSMasterclass Kurikulum Lengkap

Belajar web dari awal sampai master

Modul Web Profil Sekolah - PHP & MySQL MODUL PEMBELAJARAN INTE...