PWEB Menambahkan Entitas Calon Pekerja

Nama : Afel Allaric Absor
NRP   : 5025231140
Kelas : Pemrograman Web (E)


                          Pertemuan 12 Menambahkan Entitas Calon Pekerja dan Relational

Yang berubah adalah :

- calon-siswa.sql :

CREATE DATABASE IF NOT EXISTS pendaftaran_siswa;
USE pendaftaran_siswa;

-- Tabel pegawai
CREATE TABLE IF NOT EXISTS pegawai (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama VARCHAR(100) NOT NULL,
    jabatan VARCHAR(50) DEFAULT 'Staff',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabel calon_siswa
CREATE TABLE IF NOT EXISTS calon_siswa (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nama VARCHAR(100) NOT NULL,
    alamat TEXT NOT NULL,
    jenis_kelamin ENUM('Laki-laki', 'Perempuan') NOT NULL,
    agama VARCHAR(50) NOT NULL,
    sekolah_asal VARCHAR(100) NOT NULL,
    photo VARCHAR(255) DEFAULT NULL,
    pegawai_id INT,
    FOREIGN KEY (pegawai_id) REFERENCES pegawai(id)
        ON DELETE SET NULL
        ON UPDATE CASCADE
);

-- Tambah data ke tabel pegawai
INSERT INTO pegawai (nama) VALUES
('Kinan'),
('Kanaja'),
('Kaka');

Kode diatas berfungsi untuk membuat db dan table untuk tugas ini. Yang berubah adalah menambahkan kolom pegawai pada tabel calon_siswa dan menambahkan tabel pegawai serta nama pegawai-pegawai.



- proses-pendaftaran.php :

<?php
require 'config.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $nama = isset($_POST['nama']) ? $_POST['nama'] : null;
    $alamat = isset($_POST['alamat']) ? $_POST['alamat'] : null;
    $jenis_kelamin = isset($_POST['jenis_kelamin']) ? $_POST['jenis_kelamin'] : null;
    $agama = isset($_POST['agama']) ? $_POST['agama'] : null;
    $sekolah_asal = isset($_POST['sekolah_asal']) ? $_POST['sekolah_asal'] : null;
    $pegawai_id = isset($_POST['pegawai_id']) ? $_POST['pegawai_id'] : null;

    // Validasi input
    if (empty($nama) || empty($alamat) || empty($jenis_kelamin) || empty($agama) || empty($sekolah_asal) || empty($pegawai_id)) {
        die("Semua field wajib diisi!");
    }

    // Query SQL untuk menyimpan data
    $sql = "INSERT INTO calon_siswa (nama, alamat, jenis_kelamin, agama, sekolah_asal, pegawai_id)
            VALUES ('$nama', '$alamat', '$jenis_kelamin', '$agama', '$sekolah_asal', '$pegawai_id')";

    // Eksekusi query
    if (mysqli_query($conn, $sql)) {
        echo "Pendaftaran berhasil! <a href='index.php'>Kembali ke halaman utama</a>";
    } else {
        echo "Pendaftaran gagal: " . mysqli_error($conn);
    }

    // Tutup koneksi
    mysqli_close($conn);
}
?>

Kode diatas adalah logika dari suatu page yaitu form pendaftaran untuk mendaftarkan data siswa yang baru. Yang berubah adalah menambahkan "pegawai_id"


- form-daftar.php :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Form Daftar</title>
</head>
<body>
    <h1>Form Pendaftaran</h1>
    <?php
    // Hubungkan ke database untuk mendapatkan daftar pegawai
    require 'config.php';

    $pegawaiQuery = "SELECT id, nama FROM pegawai";
    $pegawaiResult = mysqli_query($conn, $pegawaiQuery);
    ?>

    <form action="proses-pendaftaran.php" method="POST">
        <label for="nama">Nama:</label>
        <input type="text" name="nama" id="nama" required><br>

        <label for="alamat">Alamat:</label>
        <textarea name="alamat" id="alamat" required></textarea><br>

        <label for="jenis_kelamin">Jenis Kelamin:</label>
        <select name="jenis_kelamin" id="jenis_kelamin" required>
            <option value="Laki-laki">Laki-laki</option>
            <option value="Perempuan">Perempuan</option>
        </select><br>

        <label for="agama">Agama:</label>
        <input type="text" name="agama" id="agama" required><br>

        <label for="sekolah_asal">Sekolah Asal:</label>
        <input type="text" name="sekolah_asal" id="sekolah_asal" required><br>

        <label for="pegawai_id">Pilih Pegawai:</label>
        <select name="pegawai_id" id="pegawai_id" required>
            <option value="" disabled selected>Pilih Pegawai</option>
            <?php
            while ($pegawai = mysqli_fetch_assoc($pegawaiResult)) {
                echo "<option value='" . $pegawai['id'] . "'>" . htmlspecialchars($pegawai['nama']) . "</option>";
            }
            ?>
        </select><br>

        <button type="submit">Daftar</button>
    </form>
</body>
</html>

Kode diatas berfungsi untuk membuat form page untuk menambahkan data siswa. Yang berubah adalah menambahkan pilihan pegawai dengan opsi yang ada pada database (tabel pegawai).



- list-siswa.php :

<?php
require 'config.php';

// Query untuk mengambil data calon_siswa beserta nama pegawai
$sql = "
    SELECT
        calon_siswa.id AS calon_id,
        calon_siswa.nama AS calon_nama,
        calon_siswa.alamat,
        calon_siswa.jenis_kelamin,
        calon_siswa.agama,
        calon_siswa.sekolah_asal,
        calon_siswa.photo,
        pegawai.nama AS pegawai_nama
    FROM
        calon_siswa
    LEFT JOIN
        pegawai ON calon_siswa.pegawai_id = pegawai.id
";
$result = mysqli_query($conn, $sql);
?>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>List Siswa</title>
</head>

<body>
    <h1>Daftar Siswa</h1>
    <a href="form-daftar.php">[+] Tambah Siswa Baru</a>
    <a href="edit-siswa.php">[+] Edit Data Siswa</a>
    <a href="export-all-pdf.php">[+] Ekspor Semua PDF</a> <!-- Tombol Ekspor Semua -->
   
    <table border="1">
        <thead>
            <tr>
                <th>ID</th>
                <th>Nama</th>
                <th>Alamat</th>
                <th>Jenis Kelamin</th>
                <th>Agama</th>
                <th>Sekolah Asal</th>
                <th>Nama Pegawai</th> <!-- Kolom baru -->
                <th>Photo</th>
                <th>Upload Photo</th>
                <th>Ekspor</th>
                <th>Hapus</th>
                <th>Edit</th>
            </tr>
        </thead>
        <tbody>
            <?php while ($row = mysqli_fetch_assoc($result)): ?>
                <tr>
                    <td><?= $row['calon_id'] ?></td>
                    <td><?= htmlspecialchars($row['calon_nama']) ?></td>
                    <td><?= htmlspecialchars($row['alamat']) ?></td>
                    <td><?= $row['jenis_kelamin'] ?></td>
                    <td><?= htmlspecialchars($row['agama']) ?></td>
                    <td><?= htmlspecialchars($row['sekolah_asal']) ?></td>
                    <td><?= $row['pegawai_nama'] ?: 'Tidak dipilih' ?></td> <!-- Nama Pegawai -->
                    <td>
                        <?php if ($row['photo']): ?>
                            <img src="<?= $row['photo'] ?>" alt="Photo" width="100">
                        <?php else: ?>
                            Belum ada foto
                        <?php endif; ?>
                    </td>
                    <td>
                        <form action="upload-photo.php" method="POST" enctype="multipart/form-data">
                            <input type="file" name="photo" required>
                            <input type="hidden" name="id" value="<?= $row['calon_id'] ?>">
                            <button type="submit" name="upload">Upload</button>
                        </form>
                    </td>
                    <td>
                        <a href="export-row-pdf.php?id=<?= $row['calon_id'] ?>">Ekspor PDF</a>
                    </td>
                    <td>
                        <a href="hapus.php?id=<?= $row['calon_id'] ?>" onclick="return confirm('Apakah Anda yakin ingin menghapus data ini?');">Hapus</a>
                    </td>
                    <td>
                        <a href="edit-siswa.php?id=<?= $row['calon_id'] ?>">Edit</a>
                    </td>
                </tr>
            <?php endwhile; ?>
        </tbody>
    </table>
</body>

</html>

Kode diatas berfungsi untuk menampilkan list dari data siswa yang telah dimasukkan serta jika ingin menghapus atau mengedit data siswa yang telah dimasukkan tersebut, logikanya menggunakan proses-pendaftaran.php. Yang berubah adalah menambahkan kolom "pegawai" yang akan diambil dari database.


- proses-edit.php :

<<?php
require 'config.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $id = $_POST['id'];
    $nama = $_POST['nama'];
    $alamat = $_POST['alamat'];
    $jenis_kelamin = $_POST['jenis_kelamin'];
    $agama = $_POST['agama'];
    $sekolah_asal = $_POST['sekolah_asal'];
    $pegawai_id = $_POST['pegawai_id'];

    // Validasi apakah semua input terisi
    if (empty($nama) || empty($alamat) || empty($jenis_kelamin) || empty($agama) || empty($sekolah_asal) || empty($pegawai_id)) {
        die("Semua field wajib diisi!");
    }

    // Query untuk update data siswa
    $sql = "UPDATE calon_siswa SET
                nama = ?,
                alamat = ?,
                jenis_kelamin = ?,
                agama = ?,
                sekolah_asal = ?,
                pegawai_id = ?
            WHERE id = ?";

    $stmt = mysqli_prepare($conn, $sql);
    mysqli_stmt_bind_param($stmt, "ssssssi", $nama, $alamat, $jenis_kelamin, $agama, $sekolah_asal, $pegawai_id, $id);

    // Eksekusi query
    if (mysqli_stmt_execute($stmt)) {
        header('Location: list-siswa.php');
        exit();
    } else {
        echo "Gagal mengupdate data: " . mysqli_error($conn);
    }
}
?>


Kode diatas berfungsi sebagai logika page edit data siswa. Yang berubah adalah menambahkan logika pilihan edit "pegawai" sesuai dengan apa yang ada di database.



- edit-siswa.php :

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Edit Data Siswa</title>
</head>
<body>
    <h2>Edit Data Siswa</h2>
    <?php
    require 'config.php';

    // Pastikan ID tersedia di URL
    if (isset($_GET['id'])) {
        $id = $_GET['id'];

        // Ambil data siswa berdasarkan ID
        $sql = "SELECT * FROM calon_siswa WHERE id = ?";
        $stmt = mysqli_prepare($conn, $sql);
        mysqli_stmt_bind_param($stmt, "i", $id);
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);

        // Cek jika data ditemukan
        if ($data = mysqli_fetch_assoc($result)) {
            // Ambil daftar pegawai untuk dropdown
            $pegawaiQuery = "SELECT id, nama FROM pegawai";
            $pegawaiResult = mysqli_query($conn, $pegawaiQuery);
        } else {
            echo "Data tidak ditemukan!";
            exit;
        }
    } else {
        echo "ID tidak diberikan!";
        exit;
    }
    ?>

    <form action="proses-edit.php" method="POST">
        <!-- Hidden input untuk ID -->
        <input type="hidden" name="id" value="<?= $data['id'] ?>">

        <label for="nama">Nama:</label><br>
        <input type="text" name="nama" id="nama" value="<?= htmlspecialchars($data['nama']) ?>"><br><br>

        <label for="alamat">Alamat:</label><br>
        <input type="text" name="alamat" id="alamat" value="<?= htmlspecialchars($data['alamat']) ?>"><br><br>

        <label for="jenis_kelamin">Jenis Kelamin:</label><br>
        <select name="jenis_kelamin" id="jenis_kelamin">
            <option value="Laki-laki" <?= $data['jenis_kelamin'] == 'Laki-laki' ? 'selected' : '' ?>>Laki-laki</option>
            <option value="Perempuan" <?= $data['jenis_kelamin'] == 'Perempuan' ? 'selected' : '' ?>>Perempuan</option>
        </select><br><br>

        <label for="agama">Agama:</label><br>
        <input type="text" name="agama" id="agama" value="<?= htmlspecialchars($data['agama']) ?>"><br><br>

        <label for="sekolah_asal">Sekolah Asal:</label><br>
        <input type="text" name="sekolah_asal" id="sekolah_asal" value="<?= htmlspecialchars($data['sekolah_asal']) ?>"><br><br>

        <label for="pegawai_id">Pilih Pegawai:</label><br>
        <select name="pegawai_id" id="pegawai_id">
            <?php
            while ($pegawai = mysqli_fetch_assoc($pegawaiResult)) {
                $selected = $pegawai['id'] == $data['pegawai_id'] ? 'selected' : '';
                echo "<option value='" . $pegawai['id'] . "' $selected>" . htmlspecialchars($pegawai['nama']) . "</option>";
            }
            ?>
        </select><br><br>

        <input type="submit" value="Simpan Perubahan">
    </form>
</body>
</html>

Kode diatas berfungsi untuk membuat form page yang akan mengubah data siswa pada row yang telah dipilih, logikanya menggunakan proses-edit.php. Yang berubah hanya menambahkan pilihan opsi edit "pegawai" sesuai dengan apa yang ada di database.


- Hasil kode saat dijalankan :





- Link repo github berisi source code : https://github.com/afelallaric/Tugas-Pweb-Relational-Pekerja.git

Komentar

Postingan populer dari blog ini

PWEB 15 Desain Final Project

Tugas 8 Pemrograman Web (E) Membuat Form Register & Login Menggunakan Bootstrap

Tugas PBO 14 GUI & Panel Login