Anda di halaman 1dari 27

LATIHAN PRAKTIKUM PEMROGRAMAN WEB

BAB : 7 - OOP DAN MVC


NAMA : MUHAMMAD RIFQI TAUFAN
NIM : 225150707111080
ASISTEN : 1. M NABIL GHIFARI
2. ECI EMRIYENI
TGL PRAKTIKUM : 30 AGUSTUS 2023

STUDI KASUS
Thalita dan Amelia adalah 2 orang mahasiswa FILKOM yang selama mereka berkuliah mereka
membentuk perusahaan startup TA Innovation yang bergerak pada bidang pengembangan aplikasi
web. Saat ini mereka sedang bekerja sama dengan BEM FILKOM untuk mengembangkan sebuah
website yang nantinya dapat digunakan untuk membantu proses pembuatan dan evaluasi program
kerja pada salah satu kementerian pada BEM FILKOM. Dari proses observasi dan analisis kebutuhan
yang mereka lakukan, mereka mendapatkan spesifikasi kebutuhan sebagai berikut.

1. Ada 2 tipe pengguna yang dapat menggunakan sistem ini :


a. Menteri yang bertanggung jawab untuk melakukan monitoring program kerja yang sudah
berjalan
b. Kepala Departemen yang bertanggung jawab untuk membentuk tim dan mengeksekusi
program kerja yang sudah dilakukan
2. Semua pengguna pada dasarnya adalah pengurus BEM yang memiliki data sebagai berikut :
a. Nama
b. NIM
c. Angkatan
d. Jabatan
e. Foto
3. Terdapat data program kerja yang harus disimpan dalam database dengan struktur data sebagai
berikut :
a. Nomor
b. Nama Program
c. Surat Keterangan

Proses pengembangan aplikasi web ini dilakukan dengan bahasa PHP. Sistem ini dikembangkan
dengan dibagi melalui 2 tahap, yang pertama adalah tahap pengembangan arsitektur sistem dan
yang kedua adalah tahap pengembangan fungsionalitas sistem.

LATIHAN 1
A. Soal

Buatlah pemodelan class diagram dan entity relationship diagram sesuai dengan analisis dan
perancangan sistem yang sudah dibuat.

B. Screenshoot
C. Penjelasan
Untuk class diagram telah dibuat 2 tabel, yaitu tabel ‘pengurusBEM’ yang memiliki atribut
‘NIM’ sebagai primary key, ‘Nama’, ‘Angkatan’, ‘Jabatan’, dan ‘Foto’. Selanjutnya ada tabel
‘proker’ yang memiliki atribut ‘nomorProgram’ sebagai primary key, ‘namaProgram’, dan
‘suratKeterangan’.

Untuk entity relationship diagram telah dibuat 2 entitas. Entitas yang pertama adalah
‘pengurusBEM’ yang memiliki atribut ‘NIM’ sebagai primary key, ‘Nama’, ‘Angkatan’,
‘Jabatan’, dan ‘Foto’. Selanjutnya ada entitas ‘Proker’ yang memiliki atribut ‘nomorProgram’
sebagai primary key, ‘namaProgram’, dan ‘suratKeterangan’. Kedua entitas memiliki relasi one to
many ‘dimiliki’ yang berarti sebuah program kerja bisa dimiliki oleh banyak pengurus BEM.

LATIHAN 2
A. Soal

Buatlah folder baru dalam folder ‘htdocs’ dan beri nama ‘OOP’, seluruh kode Latihan 2 ini
disimpan dalam folder ‘OOP’. Membuat pemodelan struktur pengguna sistem dengan menuliskan
kode di bawah ini dan simpan dalam file ‘pengurusBEM.php’.
<?php

class pengurusBEM {

public $nama;
public $nim;
public $angkatan;
private $jabatan;
private $foto;

public function setNama($nama) {


$this->nama = $nama;
}

public function getNama() {


echo ”$this->nama”;
}

private function setJabatan($jabatan) {


$this->jabatan = $jabatan;
}

public function getJabatan() {


echo ”$this->jabatan”;
}
}
?>

Tulis kode di bawah ini dan simpan dalam file ‘menteri.php’.


<?php

include ”pengurusBEM.php”

class menteri extends pengurusBEM {

public function __construct($nama){


$this->nama = $nama;
}

function setJabatan($jabatan) { // method


$this->jabatan = $jabatan;
}
public function getJabatan() {
echo ”$this->jabatan”;
}
}
?>

a. Apa maksud dari penulisan public dan private pada class ‘pengurusBEM’?

b. Modifikasilah kode tersebut sehingga kita dapat melakukan manipulasi atribut dari pengurus
BEM dengan lengkap.

c. Apa hubungan antara method ‘setJabatan’ pada class ‘pengurusBEM’ dan class ‘Menteri’?
Apakah method yang sama karena konsep turunan?

d. Apa yang terjadi saat dalam pembuatan class kita tidak menuliskan tingkat visibility? Apakah
method atau atribut dengan semua tingkat visibility itu diturunkan?

B. Screenshoot

C. Syntax

1 //b. hasil modifikasi


//pengurusBEM.php
<?php

class pengurusBEM {

public $nama;
public $nim;
public $angkatan;
private $jabatan;
private $foto;
public function __construct($nama, $nim, $angkatan,
$jabatan, $foto) {
$this->nama = $nama;
$this->nim = $nim;
$this->angkatan = $angkatan;
$this->jabatan = $jabatan;
$this->foto = $foto;
}

public function getNama() {


echo "$this->nama";
}

public function getNIM() {


echo "$this->nim";
}

public function getAngkatan() {


echo "$this->angkatan";
}

public function getJabatan() {


echo "$this->jabatan";
}

public function getFoto() {


echo "$this->foto";
}
}
?>

//menteri.php
<?php

include "pengurusBEM.php";

class menteri extends pengurusBEM {

public function __construct($nama, $nim, $angkatan,


$jabatan, $foto) {
$this->nama = $nama;
$this->nim = $nim;
$this->angkatan = $angkatan;
$this->jabatan = $jabatan;
$this->foto = $foto;
}

public function informasi() {


echo "Nama : {$this->nama} ";
echo "<br>";
echo "NIM : {$this->nim} ";
echo "<br>";
echo "Angkatan : {$this->angkatan}";
echo "<br>";
echo "Jabatan : {$this->jabatan}";
echo "<br>";
echo "Foto : {$this->foto}";
echo "<br>";
}
}

$menteri = new menteri("Mark Gasol", "2150606111039",


"2021", "Presiden BEM", "mark.jpg");
$menteri->informasi();
?>

D. Penjelasan
a. Penulisan public berarti atribut dari class tersebut bisa diakses dari class mana saja, baik dari
dalam maupun luar class melalui objek class tersebut. Untuk penulisan private berarti atribut
dari class tersebut hanya bisa diakses di dalam class yang sama.
b. Untuk pemodifikasian pada file ‘pengurusBEM.php’, ditambahkan sebuah constructor untuk
menginisialisasi sebuah properti objek pada saat pembuatan objek. Kemudian, memasang
getter untuk seluruh atribut yang berada di class ‘pengurusBEM’.

Untuk pemodifikasian pada file ‘menteri.php’, digunakan kata extends untuk menandakan
bahwa class ‘menteri’ merupakan inheritance dari class ‘pengurusBEM’. Ditambahkan juga
sebuah constructor yang sama dengan constructor dari class ‘pengurusBEM’ karena
merupakan turunan dari class tersebut. Kemudian, ditambahkan method ‘informasi’ yang
berisi data tentang objek yang akan diinisialisasikan. Di luar class ‘menteri’, diinisialisasikan
sebuah objek ‘menteri’ dengan memasangkan data-data yang ingin dimasukkan. Setelah itu,
objek ‘menteri’ memanggil method ‘informasi’ supaya mengeluarkan output data-data yang
telah dimasukkan.
c. Hubungan antara method ‘setJabatan’ dari class ‘pengurusBEM’ dan ‘menteri’ hanya
memiliki nama yang sama. Namun, keduanya berbeda dalam konteks dan tipe
aksesibilitasnya karena berada di dua class yang berbeda. Method ‘setJabatan’ dari class
‘pengurusBEM’ bersifat private yang berarti hanya bisa diakses oleh class yang mewarisi
class ‘pengurusBEM’. Method ‘setJabatan’ dari class ‘menteri’ bersifat public yang berarti
dapat diakses dari luar class ‘menteri’.
d. Jika tidak menuliskan tingkat visibility maka program akan menganggap sifat dari method
tersebut adalah public. Dengan semua tingkat visibility dapat diturunkan sesuai dengan sifat
dari method.

LATIHAN 3
A. Soal

Buatlah tabel proker dalam database untuk menyimpan data program kerja dengan struktur
sebagai berikut.

No Nama Field Tipe Data Ukuran Keterangan

1 nomorProgram Integer Default Primary Key

2 namaProgram Varchar 255 -

3 suratKeterangan Varchar 100 -

Buatlah folder baru dalam folder ‘htdocs’ dan beri nama ‘mvc’. Seluruh kode Latihan 3 ini
disimpan dalam folder ‘mvc’.

Tulis kode di bawah ini dan simpan dalam file ‘koneksiMVC.php’.

<?php
// sesuaikan username dan password
$mysqli = new mysqli(’localhost’, ’username’, ’password’,
’praktikumWeb’);
?>

Tulis kode di bawah ini dan simpan dalam file ‘m_programKerja.php’.

<?php

require "koneksiMVC.php";

class m_programKerja {
private $nomorProgram;
private $namaProgram;
private $suratKeterangan;
public $hasil = array();

public function __construct($nomorProgram, $namaProgram,


$suratKeterangan) {
$this->nomorProgram = $nomorProgram;
$this->namaProgram = $namaProgram;
$this->suratKeterangan = $suratKeterangan;
}

public function setPogramKerja($nomorProgram, $namaProgram,


$suratKeterangan) {

$rs = $mysqli->query("INSERT INTO proker VALUES


('$this->nomorProgram’, '$this->namaProgram’,
'$this->suratKeterangan')");
}

public function getSemuaPogramKerja() {


$rs = $mysqli->query("SELECT * FROM proker");
$rows = array();

while($row = $rs->fetch_assoc()) {
$rows[] = $row;
}

$this->hasil[] = $rows;

return $this->hasil;

}
?>

Tulis kode di bawah ini dan simpan dalam file ‘c_programKerja.php’.

<?php

include_once("m_programKerja");

class c_programKerja {

public $model;

public function __construct($nama){


$this->model = new m_programKerja();
}

public function invoke()


$proker = $this->model->getSemuaPogramKerja();
include 'v_programKerja.php';
}

}
?>

Tulis kode di bawah ini dan simpan dalam file ‘v_programKerja.php’.

<html>
<head></head>
<body>
<h2>Daftar Program Kerja BEM</h2>
<table>
<tbody>
<tr>
<td>No</td>
<td>Nama Program Kerja</td>
<td>Surat Keterangan</td>
</tr>
</tbody>
<?php

echo ‘<table><tr>’,
‘<td>$proker[nomorProgram]</td>’,
‘<td>$proker[namaProgram]</td>’,
‘<td>$proker[suratKeterangan]</td>’,
‘</tr></table>’;
?>
</body>
</html>

Tulis kode di bawah ini dan simpan dalam file ‘index.php’.

<?php
include_once("c_programKerja.php");

$controller = new c_programKerja();


$controller->invoke();
?>

a. Jalankan file ‘index.php’ dan amati yang terjadi. Apa hubungannya dengan sequence diagram
di bawah ini.
b. Apa maksud dari pembuatan kode ‘m_programKerja.php’?
c. Apa maksud dari pembuatan kode ‘c_programKerja.php’?
d. Apa maksud dari pembuatan kode ‘v_programKerja.php’?
e. Apa maksud dari pembuatan kode ‘index.php’?
B. Screenshoot

C. Syntax

1 koneksiMVC.php
<?php

class koneksiMVC {
public $mysqli;

public function __construct() {


// sesuaikan username dan password
$this->mysqli = mysqli_connect('localhost', 'root',
'', 'praktikumWeb');
}
}
?>

m_programKerja.php
<?php

require "koneksiMVC.php";

class m_programkerja {
private $database;
protected $tablename = "proker";

public function __construct() {


$this->database = new koneksiMVC();
$this->database = $this->database->mysqli;
}

public function setProgramKerja($nomorProgram,


$namaProgram, $suratKeterangan) {
$this->database->query("INSERT INTO
$this->tablename(nomorProgram, namaProgram,
suratKeterangan)
VALUES('$nomorProgram', '$namaProgram',
'$suratKeterangan')");
}

public function getSemuaProgramKerja() {


return $this->database->query("SELECT * FROM
$this->tablename");
}
}
?>

c_programKerja.php
<?php

include_once("m_programKerja.php");

class c_programKerja {
public $model;

public function __construct() {


$this->model = new m_programKerja();
}

public function invoke() {


$proker = $this->model->getSemuaProgramKerja();
include 'v_programKerja.php';
}
}
?>

v_programKerja.php
<html>
<head>
<style> table, th, td {border: 1px solid black;}</style>
</head>
<body>
<h2>Daftar Program Kerja BEM</h2>
<table>
<tbody>
<tr>
<td>No</td>
<td>Nama Program Kerja</td>
<td>Surat Keterangan</td>
</tr>
</tbody>
<?php

foreach ($proker as $proker) {


if ($proker >= 1) {
echo "<tr>",
"<td>$proker[nomorProgram]</td>",
"<td>$proker[namaProgram]</td>",
"<td>$proker[suratKeterangan]</td>",
"</tr>";
} else if ($proker = 0) {
echo "<table>";
}
}
echo "</table>";
?>
</body>
</html>

index.php
<?php

include_once("c_programKerja.php");

$controller = new c_programKerja();


$controller->invoke();
?>

D. Penjelasan
a. Dalam file ‘index.php’, yang terjadi adalah menampilkan tabel daftar program kerja BEM
yang datanya telah dimasukkan ke dalam database. Hubungannya adalah client melakukan
HTTP request dengan menjalankan file ‘index.php’. Kemudian, file ‘index.php’ akan
melakukan request data ke file ‘c_programKerja.php’ sebagai controller dan meneruskan
request data ke file ‘m_programKerja.php’ sebagai model. File ‘m_programKerja.php’ akan
mengirim datanya kembali ke file ‘c_programKerja.php’ dan dapat dilihat bentuknya ke
dalam file ‘v_programKerja.php’ sebagai view. Setelah itu, hasil dari HTTP request akan
dikirim ke client dalam bentuk HTTP response.
b. Tujuan pembuatan file ‘m_programKerja.php’ adalah untuk mengelola data, interaksi dengan
database, dan menyimpan data.
c. Tujuan pembuatan file ‘c_programKerja.php’ adalah untuk mengelola aliran aplikasi,
mengelola input pengguna, dan berperan sebagai perantara antara Model dan View.
d. Tujuan pembuatan file ‘v_programKerja.php’ adalah untuk menampilkan data-data yang telah
dimasukkan oleh pengguna ke dalam database dalam bentuk tabel.
e. Tujuan pembuatan file ‘index.php’ adalah sebagai langkah utama aplikasi berjalan. File ini
mengarahkan permintaan HTTP ke fungsi yang berjalan dalam aplikasi. File ini juga menjadi
tempat awal inisialisasi untuk mengatur koneksi database.

LATIHAN 4
A. Soal

Modifikasilah Latihan 3 sehingga dapat dibuat program dengan kemampuan CRUD secara
lengkap!

B. Screenshoot
Jika ingin tambah program kerja.

Jika ingin update program kerja.


Jika ingin hapus program kerja.
C. Syntax

1 koneksiMVC.php
<?php

class koneksiMVC {
public $mysqli;

public function __construct() {


// sesuaikan username dan password
$this->mysqli = mysqli_connect('localhost', 'root',
'', 'praktikumWeb');
}
}
?>

m_programKerja.php
<?php

require "koneksiMVC.php";

class m_programkerja {
private $database;
protected $tablename = "proker";

public function __construct() {


$this->database = new koneksiMVC();
$this->database = $this->database->mysqli;
}
public function setProgramKerja($nomorProgram,
$namaProgram, $suratKeterangan) {
$this->database->query("INSERT INTO
$this->tablename(nomorProgram, namaProgram, suratKeterangan)
VALUES('$nomorProgram', '$namaProgram',
'$suratKeterangan')");
}

public function getSemuaProgramKerja() {


return $this->database->query("SELECT * FROM
$this->tablename");
}

public function updateProgramKerja($nomorProgram,


$namaProgram, $suratKeterangan) {
$this->database->query("UPDATE $this->tablename SET
namaProgram = '$namaProgram',
suratKeterangan = '$suratKeterangan' WHERE nomorProgram
= '$nomorProgram'");
}

public function deleteProgramKerja($nomorProgram) {


$this->database->query("DELETE FROM $this->tablename
WHERE nomorProgram = '$nomorProgram'");
}
}
?>

c_programKerja.php
<?php

include_once("m_programKerja.php");

class c_programKerja {

public $model;

public function __construct() {


$this->model = new m_programKerja();
}

public function invoke() {


$proker = $this->model->getSemuaProgramKerja();
include 'v_programKerja.php';
}

public function add($nomorProgram, $namaProgram,


$suratKeterangan) {
$this->model->setProgramKerja($nomorProgram,
$namaProgram, $suratKeterangan);
}

public function delete($nomorProgram) {


$this->model->deleteProgramKerja($nomorProgram);
}

public function update($nomorProgram, $namaProgram,


$suratKeterangan) {
$this->model->updateProgramKerja($nomorProgram,
$namaProgram, $suratKeterangan);
}

}
?>

v_programKerja.php
<html>
<head>
<style> table, th, td {border: 1px solid black;}</style>
</head>
<body>
<form action="index.php" method="post">
<input type="text" name="nomorProgram"
placeholder="Nomor Program">
<input type="text" name="namaProgram" placeholder="Nama
Program Kerja">
<input type="text" name="suratKeterangan"
placeholder="Surat Keterangan">
<input type="submit" name="create" value="Tambah
Program Kerja">
</form>

<form action="index.php" method="post">


<input type="text" name="nomorProgram"
placeholder="Nomor Program">
<input type="text" name="namaProgram" placeholder="Nama
Program Kerja">
<input type="text" name="suratKeterangan"
placeholder="Surat Keterangan">
<input type="submit" name="update" value="Update
Program Kerja">
</form>

<form action="index.php" method="post">


<input type="text" name="nomorProgram"
placeholder="Nomor Program">
<input type="submit" name="delete" value="Hapus Program
Kerja">
</form>
<h2>Daftar Program Kerja BEM</h2>
<table>
<tbody>
<tr>
<td>No</td>
<td>Nama Program Kerja</td>
<td>Surat Keterangan</td>
</tr>
</tbody>
<?php

foreach ($proker as $proker) {


if ($proker >= 1) {
echo "<tr>",
"<td>$proker[nomorProgram]</td>",
"<td>$proker[namaProgram]</td>",
"<td>$proker[suratKeterangan]</td>",
"</tr>";
} else if ($proker = 0) {
echo "<table>";
}
}

echo "</table>";
?>
</body>
</html>

index.php
<?php

include_once("c_programKerja.php");

$controller = new c_programKerja();


$controller->invoke();

if (isset($_POST['create'])) {
$nomorProgram = $_POST['nomorProgram'];
$namaProgram = $_POST['namaProgram'];
$suratKeterangan = $_POST['suratKeterangan'];
$controller->add($nomorProgram, $namaProgram,
$suratKeterangan);
} else if (isset($_POST['update'])) {
$nomorProgram = $_POST['nomorProgram'];
$namaProgram = $_POST['namaProgram'];
$suratKeterangan = $_POST['suratKeterangan'];
$controller->update($nomorProgram, $namaProgram,
$suratKeterangan);
} else if (isset($_POST['delete'])) {
$nomorProgram = $_POST['nomorProgram'];
$controller->delete($nomorProgram);
}
?>

D. Penjelasan
Pada file ‘koneksiMVC.php’, tidak dilakukan modifikasi dan sama seperti sebelumnya.

Pada file ‘m_programKerja.php’, dilakukan penambahan method untuk update dan delete.
Method ‘updateProgramKerja’ digunakan untuk melakukan perubahan data yang sebelumnya
telah dimasukkan, sedangkan method ‘deleteProgramKerja’ digunakan untuk melakukan
penghapusan data yang sebelumnya telah dimasukkan.

Pada file ‘c_programKerja.php’, dilakukan penambahan method untuk melanjutkan


pengiriman request data ke file ‘v_programKerja.php’. Terdapat method ‘add’ dengan memanggil
method ‘setProgramKerja’ untuk menambah data dan dikirim ke file ‘v_programKerja.php’.
Method ‘delete’ juga memanggil method ‘deleteProgramKerja’ untuk menghapus data dan dikirim
ke file ‘v_programKerja.php’. Selain itu, method ‘update’ memanggil method
‘updateProgramKerja’ untuk mengubah data sebelumnya dan dikirim ke file
‘v_programKerja.php’.

Pada file ‘v_programKerja.php’, dilakukan penambahan pada tag ‘<body>’, yaitu sebuah
form untuk mengisi nomor proker, nama proker, dan surat kegiatan. Terdapat 3 form untuk
masing-masing aktivitas, seperti create, update, dan delete. Metode form yang digunakan adalah
post supaya tersimpan dengan aman.

Pada file ‘index.php’, dilakukan penambahan dengan seleksi kondisi if-else dengan kondisi
pertama yaitu jika pengguna ingin melakukan penambahan data maka program akan menjalankan
kondisi ‘isset($_POST[‘create’]’. Jika pengguna ingin melakukan perubahan data maka program
akan menjalankan kondisi ‘isset($_POST[‘update’]’. Jika pengguna ingin melakukan penambahan
data, maka program akan menjalankan kondisi ‘isset($_POST[‘delete’]’. Setiap kondisi akan
memanggil data yang telah disimpan menggunakan metode post dan memanggil method ‘add’,
‘update’, dan ‘delete’ dari file ‘c_programKerja.php’.

LATIHAN 5
A. Soal

Modifikasi sesuai kebutuhan terlebih dahulu, lengkapi dengan halaman login dan halaman
administrasi dan gabungkan Latihan 2 dan Latihan 3 sehingga didapat skenario Menteri hanya
dapat melihat daftar program kerja saja, sedangkan Kepala Departemen dapat melakukan proses
manajemen program kerja (CRUD). Lakukan modifikasi pada database dan struktur class model,
controller, dan view jika diperlukan untuk mengakomodasi skenario tersebut.

B. Screenshoot

Ketika masuk dengan jabatan Kepala Departemen.


Ketika masuk dengan jabatan Menteri.

C. Syntax
1 login.php
<!DOCTYPE html>
<html>
<head>
<title>Halaman Login</title>
</head>
<body>
<h2>Silakan Login</h2>
<form action="loginProses.php" method="post">
<p>Username : <input type="text"
name="username"></p>
<p>Password : <input type="password"
name="password"></p>
<p>Jabatan : <input type="text" name="jabatan"></p>
<input type="submit" value="Login" name="login">
</form>
</body>
</html>

user.php
<?php

require "koneksiMVC.php";

class user {
private $database;
protected $tablename = "user";

public function __construct(){


$this->database = new koneksiMVC();
$this->database = $this->database->mysqli;
}

public function login($username, $password, $jabatan) {


return $this->database->query("SELECT * FROM
$this->tablename WHERE username = '$username' AND password =
'$password' AND jabatan = '$jabatan'");
}
}
?>

loginProses.php
<?php
session_start();

require "user.php";

$check = new user();


$result = $check->login($_POST['username'], $_POST['password'],
$_POST['jabatan'])->fetch_assoc();

if ($result) {
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $result['password'];
$_SESSION['jabatan'] = $result['jabatan'];
header("Location: index.php");
} else {
session_destroy();
unset($_COOKIE);
header("Location: login.php");
}
?>
index.php
<?php

session_start();

include_once("c_programKerja.php");

if($_SESSION['jabatan'] == 'kepala departemen') {


$controller = new c_programKerja();
$controller->invoke();

if (isset($_POST['create'])) {
$nomorProgram = $_POST['nomorProgram'];
$namaProgram = $_POST['namaProgram'];
$suratKeterangan = $_POST['suratKeterangan'];
$controller->add($nomorProgram, $namaProgram,
$suratKeterangan);
} else if (isset($_POST['update'])) {
$nomorProgram = $_POST['nomorProgram'];
$namaProgram = $_POST['namaProgram'];
$suratKeterangan = $_POST['suratKeterangan'];
$controller->update($nomorProgram, $namaProgram,
$suratKeterangan);
} else if (isset($_POST['delete'])) {
$nomorProgram = $_POST['nomorProgram'];
$controller->delete($nomorProgram);
}
} else if ($_SESSION['jabatan'] == 'menteri') {
$controller = new c_programKerja();
$controller->baru();
}
?>

c_programKerja.php
<?php

include_once("m_programKerja.php");

class c_programKerja {

public $model;

public function __construct() {


$this->model = new m_programKerja();
}

public function invoke() {


$proker = $this->model->getSemuaProgramKerja();
include 'v_programKerja.php';
}

public function baru() {


$kerpro = $this->model->getSemuaProgramKerja();
include 'tabelMenteri.php';
}

public function add($nomorProgram, $namaProgram,


$suratKeterangan) {
$this->model->setProgramKerja($nomorProgram,
$namaProgram, $suratKeterangan);
}

public function delete($nomorProgram) {


$this->model->deleteProgramKerja($nomorProgram);
}
public function update($nomorProgram, $namaProgram,
$suratKeterangan) {
$this->model->updateProgramKerja($nomorProgram,
$namaProgram, $suratKeterangan);
}

}
?>

tabelMenteri.php
<html>
<head>
<style> table, th, td {border: 1px solid
black;}</style>
</head>
<body>
<h2>Daftar Program Kerja BEM</h2>
<table>
<tbody>
<tr>
<td>No</td>
<td>Nama Program Kerja</td>
<td>Surat Keterangan</td>
</tr>
</tbody>
<?php

foreach ($kerpro as $kerpro) {


if ($kerpro >= 1) {
echo "<tr>",
"<td>$kerpro[nomorProgram]</td>",
"<td>$kerpro[namaProgram]</td>",
"<td>$kerpro[suratKeterangan]</td>",
"</tr>";
} else if ($kerpro = 0) {
echo "<table>";
}
}

echo "</table>";
?>
</body>
</html>
D. Penjelasan
Untuk modifikasinya ditambahkan beberapa file, yaitu ‘login.php’, ‘user.php’,
‘loginProses.php’, ‘tabelMenteri.php’ dan sedikit perubahan dari file ‘index.php’ dan
‘c_program.php’.

Ditambahkan file ‘login.php’ untuk pengguna memasukkan username, password, dan jabatan.
File ini dibuat dalam bentuk HTML dengan menggunakan form yang bersifat method post dengan
mengakses file ‘loginProses.php’. Setelah itu, ditambahkan file ‘loginProses.php’ untuk
melakukan autentikasi untuk melihat data dari username, password, dan jabatan. Jika data yang
dimasukkan benar maka akan dialihkan ke file ‘index.php’, sedangkan jika ada yang salah maka
akan masih di halaman login. Di file ‘index.php’ akan mengecek data yang dimasukkan oleh
pengguna antara menteri dan kepala departemen. Jika memasukkan jabatan Menteri maka hanya
akan menampilkan tabel yang telah dimasukkan dari file ‘tabelMenteri.php’, sedangkan jika
memasukkan jabatan Kepala Departemen maka bisa melakukan aktivitas CRUD untuk
menambahkan, menghapus, atau mengubah data yang sebelumnya telah dimasukkan.

Anda mungkin juga menyukai