LAPORAN PRAKTIKUM

F. Fungsi Mahasiswa

Fungsi mahasiswa ini berfungsi sebagai controller yang menghubungkan antara class/model mahasiswa dengan view, buka file function/Mahasiswa.php, kemudian tambahkan kode program berikut

<?php
include_once '../config/Database.php';
include '../config/Config.php';
include_once '../model/Mahasiswa.php';

$database = new Database();
$db = $database->getConnection();
$mahasiswa = new Mahasiswa($db);

if (isset($_GET['action'])) {
    if ($_GET['action'] == 'create') {
        $mahasiswa->nim = $_POST['nim'];
        $mahasiswa->nama = $_POST['nama'];
        $mahasiswa->jurusan = $_POST['jurusan'];
        $mahasiswa->create();
    } elseif ($_GET['action'] == 'delete') {
        $mahasiswa->id = $_GET['id'];
        $mahasiswa->delete();
    } elseif ($_GET['action'] == 'update') {
        $mahasiswa->id = $_POST['id'];
        $mahasiswa->nim = $_POST['nim'];
        $mahasiswa->nama = $_POST['nama'];
        $mahasiswa->jurusan = $_POST['jurusan'];
        $mahasiswa->update();
    }
}
?>

Pertama akan dilakukan pengecekan sebuah parameter action yang dikirimkan melalui method GET, jika ada terdapat parameter action yang dikirimkan maka nilai parameter akan diambil dan digunakan sesuai dengan fungsinya, ada 3 buah isi parameter yang dikirimkan yaitu create, delete dan update.

G. View

View ini berfungsi untuk menampilkan data, menampilkan form input dan update data mahasiswa.

index.php

File Index.php ini berisi tampilan data-data mahasiswa yang telah berhasil diinputkan kedalam database, berikut ini kode program Index.php

<?php
include 'function/Alert.php'; 
include_once './config/Database.php'; 
include_once './model/Mahasiswa.php';

$database = new Database();
$db = $database->getConnection();
$mahasiswa = new Mahasiswa($db);
$result = $mahasiswa->read();
?>

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>OOP - CRUD</title>
        <link href="assets/css/bootstrap.min.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-lg-12">
                    <h4 class="text-center">Data Mahasiswa</h4>
                    <a class="btn btn-primary btn-sm mb-2" href="create.php">Tambah Mahasiswa</a>
                    <!-- show alert -->
                    <?php
                        if (isset($_SESSION['flash_message']) && isset($_GET['msg'])) { 
                            if ($_GET['msg'] == '1') {
                                alert($_SESSION['flash_message'], 1);
                            }else{
                                alert($_SESSION['flash_message'], 0);
                            }
                        }
                    ?>
                    <table class="table table-stripped table-bordered">
                        <thead>
                            <tr>
                                <th>#</th>
                                <th>NIM</th>
                                <th>NAMA</th>
                                <th>JURUSAN</th>
                                <th>ACTION</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php $no=1; while ($row = $result->fetch_assoc()) { ?>
                                <tr>
                                    <td><?=$no++?></td>
                                    <td><?=$row['nim']?></td>
                                    <td><?=$row['nama']?></td>
                                    <td><?=$row['jurusan']?></td>
                                    <td>
                                        <a class="btn btn-success btn-sm" href="edit.php?id=<?=$row['id']?>">Edit</a>
                                        <a class="btn btn-danger btn-sm" href="function/Mahasiswa.php?action=delete&&id=<?=$row ['id']?>" onclick="return confirm('Anda yakin ingin menghapus Data <?php echo $row['nama'];?>?');">Hapus</a>
                                    </td>
                                </tr>
                            <?php } ?>
                        </tbody>

                    </table>

                </div>
            </div>
        </div>
        <script src="assets/js/bootstrap.bundle.min.js"></script>
    </body>
</html>

Create.php

File ini berisi form input data mahasiswa

<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>OOP - Create</title>
        <link href="assets/css/bootstrap.min.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <div class="row">
                <h1>Create Mahasiswa</h1>
                <form action="function/Mahasiswa.php?action=create" method="post">
                    <div class="form-group">
                        <label for="nim">NIM</label>
                        <input type="text" class="form-control" name="nim" required>
                    </div>
                    <div class="form-group">
                        <label for="nama">Nama</label>
                        <input type="text" class="form-control" name="nama" required>
                    </div>
                    <div class="form-group">
                        <label for="jurusan">Jurusan</label>
                        <input type="text" class="form-control" name="jurusan" required>
                    </div>
                        <button type="submit" class="btn btn-primary mt-2">Create</button>
                </form>
            </div>
        </div>
        <script src="assets/js/bootstrap.bundle.min.js"></script>
    </body>
</html>

Edit.php

File ini berisi form untuk melakukan perubahan data mahasiswa

<?php
include_once './config/Database.php'; 
include_once './model/Mahasiswa.php';

$database = new Database();
$db = $database->getConnection();

$mahasiswa = new Mahasiswa($db);

if (isset($_GET['id'])) {
$result = $mahasiswa->read($_GET['id'])->fetch_assoc();
}
?>
<!doctype html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>OOP - Edit</title>
        <link href="assets/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-SgOJa3DmI69IUzQ2PVdRZhwQ+dy64/BUtbMJw1MZ8t5HZApcHrRKUc4W0kG879m7" crossorigin="anonymous">
    </head>
    <body>
        <div class="container">
            <div class="row">
                <h1>Edit Mahasiswa</h1>
                <form action="function/Mahasiswa.php?action=update" method="post">
                    <div class="form-group">
                        <label for="nim">NIM</label>
                        <input type="hidden" class="form-control" name="id" value="<?=$result['id'];?>" required>
                        <input type="text" class="form-control" name="nim" value="<?=$result['nim'];?>" required>
                    </div>
                    <div class="form-group">
                        <label for="nama">Nama</label>
                        <input type="text" class="form-control" name="nama" value="<?=$result['nama'];?>" required>
                    </div>
                    <div class="form-group">
                        <label for="jurusan">Jurusan</label>
                        <input type="text" class="form-control" name="jurusan" value="<?=$result['jurusan'];?>" required>
                    </div>
                    <button type="submit" class="btn btn-primary mt- 2">Update</button>
                </form>
            </div>
        </div>
        <script src="assets/js/bootstrap.bundle.min.js" integrity="sha384-k6d4wzSIapyDyv1kpU366/PK5hCdSbCRGRCMv+eplOQJWyd1fbcAu9OCUj5zNLiq" crossorigin="anonymous"></script>
    </body>
</html>

H. Efisiensi Kode

Program CRUD dapat diefisiensi dengan menggabungkan halaman create.php dan edit.php menjadi satu, dengan nama form.php. logika if else digunakan pada form.php, Jadi ketika query yang diminta adalah create maka form.php akan menampilkan kondisi yang sesuai untuk create data, dan sebaliknya. Setelah itu, di index.php ubah bagian-bagian yang mereferensi ke create.php dan edit.php menjadi mereferensi ke form.php. Jika sudah berhasil, file create.php dan edit.php bisa dihapus.

buat form.php dengan isi kode berikut:

<?php
include_once './config/Database.php';
include_once './model/Mahasiswa.php';

$database = new Database();
$db = $database->getConnection();
$mahasiswa = new Mahasiswa($db);

$isEdit = false;
$data = [
    'id' => '',
    'nim' => '',
    'nama' => '',
    'jurusan' => ''
];

if (isset($_GET['id'])) {
    $result = $mahasiswa->read($_GET['id'])->fetch_assoc();
    if ($result) {
        $isEdit = true;
        $data = $result;
    }
}

$formAction = $isEdit ? 'function/Mahasiswa.php?action=update' : 'function/Mahasiswa.php?action=create';
$formTitle = $isEdit ? 'Edit Mahasiswa' : 'Create Mahasiswa';
$submitText = $isEdit ? 'Update' : 'Create';
?>

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title><?= $formTitle ?></title>
    <link href="assets/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
    <div class="row">
        <h1><?= $formTitle ?></h1>
        <form action="<?= $formAction ?>" method="post">
            <?php if ($isEdit): ?>
                <input type="hidden" name="id" value="<?= $data['id'] ?>">
            <?php endif; ?>
            <div class="form-group">
                <label for="nim">NIM</label>
                <input type="text" class="form-control" name="nim" value="<?= $data['nim'] ?>" required>
            </div>
            <div class="form-group">
                <label for="nama">Nama</label>
                <input type="text" class="form-control" name="nama" value="<?= $data['nama'] ?>" required>
            </div>
            <div class="form-group">
                <label for="jurusan">Jurusan</label>
                <input type="text" class="form-control" name="jurusan" value="<?= $data['jurusan'] ?>" required>
            </div>
            <button type="submit" class="btn btn-primary mt-2"><?= $submitText ?></button>
        </form>
    </div>
</div>
<script src="assets/js/bootstrap.bundle.min.js"></script>
</body>
</html>

Berikut tampilannya

Leave a Reply

Your email address will not be published. Required fields are marked *