Anda di halaman 1dari 33

LATIHAN PRAKTIKUM PEMROGRAMAN WEB

BAB : PEMROGRAMAN BERORIENTASI OBJEK DAN MODEL VIEW


CONTROLLER
NAMA : FABIANSYAH CAHYO KUNCORO P.
NIM : 165150201111019
ASISTEN : 1. HUGO GHALLY IMANAKA
2. MUHAMMAD RAYYAN ABHAD
TGL PRAKTIKUM : 3 MEI 2018

LATIHAN 1
A. Soal

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

A. Screenshot

Pemodelan Class Diagram


ERD

B. Syntax
C. Penjelasan

Pada pemodelan class diagram mempunyai 4 buat class yaitu class Menteri,
Kepala_Dept, pengurusBEM, dan Proker. Dimana pada kelas Menteri dan Kepala_Dept
Extends kelas PengurusBEM.

Pada ERD, terdapat entitas Pengurus dengan atribut nama, nim sebagai primary key,
jabatan dan angkatan. Selanjutnya entitas Proker dengan atribut nomor sebagai primary
key, nama_program dan surat_keterangan. Juga terdapat relasi menyelesaikan antara
pengurus dengan proker dengan kardinalitas many to one.

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

1 <?php
2
3 class pengurusBEM {
4
5 public $nama;
6 public $nim;
7 public $angkatan;
8 private $jabatan;
9 private $foto;
10
11 public function setNama($nama) {
12 $this->nama = $nama;
13 }
14
15 public function getNama() {
16 echo ”$this->nama”;
17 }
18
19 private function setJabatan($jabatan) {
20 $this->jabatan = $jabatan;
21 }
22
23 public function getJabatan() {
24 echo ”$this->jabatan”;
25 }
26 }

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

1 <?php
2
3 include ”pengurusBEM.php”
4
5 class menteri extends pengurusBEM {
6
7 public function __construct($nama){
8 $this->nama = $nama;
9 }
10
11 function setJabatan($jabatan) { // method
12 $this->jabatan = $jabatan;
13 }
14
15 public function getJabatan() {
16 echo ”$this->jabatan”;
17 }
18 }

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

b. Modifikasilah kode diatas sehingga kita dapat melakukan manipulasi attribut 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 atribute dengan semua tingkat visibility itu diturunkan?

D. Screenshot
E. Syntax

1 <?php
2
3 class pengurusBEM {
4
5 public $nama;
6 public $nim;
7 public $angkatan;
8 private $jabatan;
9 private $foto;
10
11 public function setNama($nama) {
12 $this->nama = $nama;
13 }
14
15 public function getNama() {
16 echo "$this->nama";
17 }
18
19 private function setJabatan($jabatan) {
20 $this->jabatan = $jabatan;
21 }
22
23 public function getJabatan() {
24 echo "$this->jabatan";
25 }
26 }

1 <?php
2
3 class pengurusBEM{
4 public $nama;
5 public $nim;
6 public $angkatan;
7 private $jabatan;
8 private $foto;
9
10 public function __construct($nama, $nim,
11 $angkatan, $jabatan, $foto){
12 $this->nama = $nama;
13 $this->nim = $nim;
14 $this->angkatan = $angkatan;
15 $this->jabatan = $jabatan;
16 $this->foto = $foto;
17 }
18
19 public function setNama($nama) {
20 $this->nama = $nama;
21 }
22
23 public function getNama(){
24 echo $this->nama."<br>";
25 }
26
27 public function setNim($nim) {
28 $this->nim = $nim;
29 }
30
31 public function getNim(){
32 echo $this->nim."<br>";
33 }
34
35 public function setAngkatan($angkatan) {
36 $this->angkatan = $angkatan;
37 }
38
39 public function getAngkatan(){
40 echo $this->angkatan."<br>";
41 }
42
43 public function setJabatan($jabatan) {
44 $this->jabatan = $jabatan;
45 }
46
47 public function getJabatan(){
48 echo $this->jabatan."<br>";
49 }
50
51 public function getFoto(){
52 echo $this->foto;
53 }
54 }
55
56 $foto = '<img src="arteezy.jpg" width=200>';
57 $object = new pengurusBEM("Fabiansyah Cahyo",
58 "165150201111019", "2016", "Anggota", $foto);
59 echo "Nama : "; $object->getNama();
60 echo "Nim : "; $object->getNim();
61 echo "Angkatan : "; $object->getAngkatan();
62 echo "Jabatan : "; $object->getJabatan();
63 echo "Foto : <br>"; $object->getFoto();
64 ?>

F. Penjelasan

Public dan private pada class adalah hak akses atribut tersebut. Jika public maka
class selain itu bisa mengaksesnya termasuk class turunan, tetapi jika private hanya bisa
diakses oleh class itu sendiri.
Modifikasi dilakukan dengan menambahkan method set dan get untuk masing-masing
atribut.
Tidak ada hubungan diantara keduanya walaupun menggunakan konsep turunan.
Pada
konsep turunan, method tidak diturunkan oleh kelas parent kepada kelas child yang
diturunkan hanyalah atribut, sehingga method setJabatan pada klas pengurusBEM dan
menteri berbeda dan memiliki fungsi masing-masing.
Pada saat pembuatan class apabila kita tidak menuliskan tingkat visibility akan
menyebabkan pengaksesan class atribut dapat secara bebas diakses oleh class lain dan
hubungan antara class satu dengan yang lain akan sulit dipahami, sehingga dapat
membuat program tersebut terdapat error. Tidak semua atribut yang ada bisa diturunkan
kepada class turunannya, pada hak akses private hanya terbatas sampai class itu sendiri
sehingga class yang lain tidak dapat menggunakannya.

LATIHAN 3
A. Soal

Buatlah tabel proker dalam database untuk menyimpan data program kerja, dengan
struktur sebagai berikut.
N Nama Field Tipe Data Ukuran Keterangan
o

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

1 <?php
2 // sesuaikan username dan password
3 $mysqli = new mysqli(’localhost’, ’username’,
4 ’password’, ’praktikumWeb’);

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

1 <?php
2
3
4 require "koneksiMVC.php";
5
6
7 class m_programKerja {
8 private $nomorProgram;
9 private $namaProgram;
10 private $suratKeterangan;
11 public $hasil = array();
12
13 public function __construct($nomorProgram,
14 $namaProgram, $suratKeterangan) {
15 $this->nomorProgram = $nomorProgram;
16 $this->namaProgram = $namaProgram;
17 $this->suratKeterangan = $suratKeterangan;
18 }
19
20 public function setPogramKerja($nomorProgram,
21 $namaProgram, $suratKeterangan) {
22
23
24 $rs = $mysqli->query("INSERT INTO proker VALUES
25 ('$this->nomorProgram’, '$this->namaProgram’, '$this-
26 >suratKeterangan')");
27 }
28
29
30 public function getSemuaPogramKerja() {
31 $rs = $mysqli->query("SELECT * FROM proker");
32
33 $rows = array();
34
35 while($row = $rs->fetch_assoc()) {
36 $rows[] = $row;
37 }
38
39 $this->hasil[] = $rows;
40
41 return $this->hasil;

Tulis kode di bawah ini dan simpan dalam file “c_programKerja.php”

1 <?php
2
3 include_once("m_programKerja");
4
5 class c_programKerja {
6
7 public $model;
8
9 public function __construct($nama){
10 $this->model = new m_programKerja();
11 }
12
13 public function invoke()
14 $proker = $this->model->getSemuaPogramKerja();
15 include 'v_programKerja.php';
16 }
17 }
18

Tulis kode di bawah ini dan simpan dalam file “v_programKerja.php”

1 <html>
2 <head></head>
3 <body>
4 <h2>Daftar Program Kerja BEM</h2>
5 <table>
6 <tbody>
7 <tr>
8 <td>No</td>
9 <td>Nama Program Kerja</td>
10 <td>Surat Keterangan</td>
11 </tr>
12 </tbody>
13 <?php
14
15
16 echo ‘<table><tr>’,
17 ‘<td>$proker[nomorProgram]</td>’,
18 ‘<td>$proker[namaProgram]</td>’,
19 ‘<td>$proker[suratKeterangan]</td>’,
20 ‘</tr></table>’;
21 ?>
22 </body>
</html>

Tulis kode di bawah ini dan simpan dalam file “index.php”

1 <?php
2 include_once("c_programKerja.php");
3
4 $controller = new c_programKerja();
5 $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”?

G. Screenshot
H. Syntax

1 <?php
2 // sesuaikan username dan password
3 $mysqli = new mysqli('localhost', 'root',
4 'zhuzhu', 'praktikumweb');

1 <?php
2
3 include("koneksiMVC.php");
4
5 class m_programKerja {
6 public $hasil = array();
7 public $db;
8
9 function __construct()
10 {
11 $this->db = new mysqli('localhost', 'root',
12 'zhuzhu', 'praktikumweb');
13 }
14
15 public function getSemuaPogramKerja() {
16 $rs = $this->db->query("SELECT * FROM proker");
17 return $rs;
18 }
19
20 }

1 <?php
2
3 include_once('m_programKerja.php');
4
5 class c_programKerja {
6
7 public $model;
8
9 public function __construct(){
10 $this->model = new m_programKerja();
11 }
12
13 public function invoke()
14 {
15 $proker = $this->model->getSemuaPogramKerja();
16 include 'v_programKerja.php';
17 }
18
}

1 <html>
2 <head></head>
3 <body>
4 <h2>Daftar Program Kerja BEM</h2>
5 <table>
6 <thead>
7 <tr>
8 <th>No</th>
9 <th>Nama Program Kerja</th>
10 <th>Surat Keterangan</th>
11 </tr>
12 </thead>
13 <tbody>
14 <?php while ($key = $proker->fetch_object()) { ?
15 >
16 <tr>
17 <td><?php echo $key->nomorProgram ?></td>
18 <td><?php echo $key->namaProgram ?></td>
19 <td><?php echo $key->suratKeterangan ?></td>
20 </tr>
21 <?php } ?>
22 </tbody>
23 </table>
24 </body>
</html>

1 <?php
2 include_once("c_proker.php");
3
4 $controller = new c_proker();
5 $controller->invoke();

I. Penjelasan
Setelah file index.php dijalankan, akan mengeluarkan output berupa isi tabel dari
proker ke dalam tabel. Hubungannya dengan sequence diagram yaitu proses yang berjalan
pada syntax diatas sesuai dengan sqeuence diagram tersebut. Controller berfungsi untuk
mengambil request tersebut lalu dilakukan parsing, menginisialisasi dan memanggil
model lalu mengambil sebuah model response dan mengirimkannya pada layar
presentasi. Model bertanggung jawab atas pengolahan data, mengambil dan menyimpan
entitas yang digunakan oleh sebuah aplikasi dari sebuah database. Model akan
mengembalikan data menuju controller lalu akan mengirimkannya menuju view. View
bertanggung jawab atas pemformatan data yang di terima dari model ke dalam tampilan
yang dapat diakses oleh pengguna.
Kode m_programKerja.php adalah kode yang bertindak sebagai model dalam MVC.
Model digunakan untuk memanipulasi sebuah database, yang menghubungkan antar
database satu dengan yang lain serta kode-kodenya.
Kode c_programKerja.php adalah kode yang bertindak sebagai controller dalam MVC.
Controller yang akan menerima request/permintaan serta akan memanggil Model untuk
melakukan operasi yang diminta dan akan mengirimkan datanya pada view, kelas
digunakan sebagai pengatur segala fungsi yang ada dalam aplikasi web yang bisa disebut
sebagai sebuah controller yaitu penjembatan antara view dengan model.
Kode v_programKerja.php adalah kode yang bertindak sebagai View atau tampilan
dalam MVC. View akan memformat sebuah data yang nantinya akan ditampilkan kepada
user atau bisa disebut sebagai user interface.
Kode index.php adalah kode yang dapat melakukan suatu pemanggilan sebuah
fungsi
invoke yang terdapat pada controller yaitu pada kelas c_programKerja.php, setelah
menginclude, akan membuat objek controller dari kelas c_progranKerja.php lalu objek
controller akan memanggil fungsi invoke tersebut. Fungsi invoke akan memanggil fungsi
yang terdapat pada model lalu meneruskannya ke view.

LATIHAN 4
A. Soal

Modifikasilah Latihan 3 sehingga dapat dibuat program dengan kemampuan CRUD


secara lengkap!

J. Screenshot
Halaman Awal

Menambahkan proker

Proker sudah ditambah


Mengedit proker

Menghapus proker

Proker berhasil dihapus

K. Syntax

Index.php

1 <?php
2
3 include "c_programKerja.php";
4
5
6
7 $controller = new c_programKerja();
8
9 if(isset($_GET['e'])){
10 $nomor = $_GET['e'];
11 $controller->viewEdit($nomor);
12 }else if(isset($_GET['d'])){
13 $nomor = $_GET['d'];
14 $controller->delete($nomor);
15 }else if(isset($_GET['i'])){
16 $controller->viewInsert();
17 }else{
18 $controller->index();
19 }
?>

koneksiMVC.php

1 <?php
2 class koneksi{
3 public function __construct(){
4 $this->mysqli = new
5 mysqli('localhost', 'root', '', 'praktikumweb');
6 }
7 public function getConnection(){
8 return $this->mysqli;
9 }
10 }
11
12 ?>

form.php

1 <form method="post">
2 <table align="center">
3 <tr>
4 <td><input type="text" name="Nomor Program
5 Kerja" placeholder="nomorProgram" value=""
6 required /></td>
7 </tr><tr>
8 <td><input type="text" name="Nama Program Kerja"
9 placeholder="namaProgram" value="" required /></td>
10 </tr><tr>
11 <td><input type="text" name="Surat Keterangan"
12 placeholder="suratKeterangan" value="" required
13 /></td>
14 </tr><tr>
15 <td>
16 <button type="submit" name="btn-
17 save"><strong>SUBMIT</strong></button></td> </tr>
18 </table>
19
20 </form>
c_programKerja.php

1 <?php
2
3 include_once("m_programKerja.php");
4
5 class c_programKerja {
6
7 public $model;
8
9 function __construct(){
10 $this->model = new
11 m_programKerja();
12 }
13
14 function index(){
15 $data = $this->model-
16 >selectAll();
17 include "v_programKerja.php";
18 }
19 function viewEdit($nomor){
20 $data = $this->model-
21 >selectPrk($nomor);
22 $row = $this->model-
23 >fetch($data);
24 include "view_edit.php";
25 }
26
27 function viewInsert(){
28 include "view_add.php";
29 }
30
function update(){
31
$nomor =
32
$_POST['nomorProgram'];
33
$nama = $_POST['namaProgram'];
34
$sk =
35
$_POST['suratKeterangan'];
36
37
$update = $this->model-
38
>updatePrk($nomor, $nama, $sk);
39
header("location:index.php");
40
}
41
42 function delete($nomor){
43 $delete = $this->model-
44 >deletePrk($nomor);
45 header("location:index.php");
46 }
47
48 function insert(){
49 $nomor =
50 $_POST['nomorProgram'];
51
52
53 $nama = $_POST['namaProgram'];
54 $sk =
55 $_POST['suratKeterangan'];
56
57 $insert = $this->model-
58 >insertPrk($nomor, $nama, $sk);
59 header("location:index.php");
60 }
61
62 function __destruct(){
63 }
64
65 }
66
67 ?>

m_programKerja.php

1 <?php
2
3 require "koneksiMVC.php";
4
5 class m_programKerja {
6 private $nomorProgram;
7 private $namaProgram;
8 private $suratKeterangan;
9 private $connect;
10
11 function __construct(){
12 $this->connect = new koneksi();
13 }
14
15 function execute($query){
16 return mysqli_query($this->connect-
17 >getConnection(),$query);
18 }
19
20 function selectAll(){
21 $query = "SELECT * FROM proker";
22 return $this->execute($query);
23 }
24
25 function selectPrk($nomor){
26 $query = "SELECT * FROM proker WHERE
27 nomorProgram='$nomor'";
28 return $this->execute($query);
29 }
30
function updatePrk($nomor, $nama, $sk){
31
$query = "UPDATE proker SET
32
nomorProgram='$nomor', namaProgram='$nama',
33
suratKeterangan='$sk' WHERE nomorProgram='$nomor'";
34
return $this->execute($query);
35
36
37 }
38
39 function deletePrk($nomor){
40 $query = "DELETE FROM proker WHERE
41 nomorProgram='$nomor'";
42 return $this->execute($query);
43 }
44
45 function insertPrk($nomor, $nama, $sk){
46 $query = "INSERT INTO proker VALUES ('$nomor',
47 '$nama', '$sk')";
48 return $this->execute($query);
49 }
50
51 function fetch($var){
52 return mysqli_fetch_array($var);
53 }
54
55 function __destruct(){
56 }
57 }
?>

v_programKerja.php

1 <html>
2 <head></head>
3 <body>
4 <h2> Daftar Program Kerja BEM </h2>
5 <div align="left">
6 <table border="1">
7 <tr align="center">
8 <td>Nomor</td>
9 <td>Nama Program Kerja</td>
10 <td>Surat Keterangan</td>
11 <td>Aksi 1 </td>
12 <td>Aksi 2 </td>
13 </tr>
14
15 <?php
16 while($row = $this->model->fetch($data)){
17 echo "
18 <tr>
19 <td>$row[0]</td>
20 <td>$row[1]</td>
21 <td>$row[2]</td>
22 <td><a href='index.php?e=$row[0]'>
23 Edit</a></td>
24 <td><a href='index.php?d=$row[0]'
25 onClick=\"return confirm('Hapus Data?')\"\>
26 Delete</a></td>
27 </tr>";
28 }
29
30
31 ?>
32 </table><br>
33 <a href='index.php?i=add'>Tambah
34 Data</a></div>
</body>
</html>

view_edit.php

1 <html>
2 <head>
3 <title>MVC</title>
4 </head>
5 <body>
6 <form action="" method="POST">
7 <table>
8 <tr>
9 <td>Nomor
10 Program: </td>
11 <td><input
12 type="text" name="nomorProgram" value="<?=$row[0]?
13 >" size="30" readonly /></td>
14 </tr>
15 <tr>
16 <td>Nama Program:
17 </td>
18 <td><input
19 type="text" name="namaProgram" value="<?=$row[1]?>"
20 size="30"/></td>
21 </tr>
22 <tr>
23 <td>Surat
24 Keterangan: </td>
25 <td><input
26 type="text" name="suratKeterangan" value="<?
27 =$row[2]?>" size="30"/></td>
28 </tr>
29 <tr>
30 <td><input
31 type="submit" name="submit" value="Submit"/></td>
32 </tr>
33 </table>
34 </form>
35 </body>
36 </html>
37 <?php
38 if(isset($_POST['submit'])){
39 $main = new c_programKerja();
40 $main->update();
41 }
42 ?>
view_add.php

1 <html>
2 <head>
3 <title>MVC</title>
4 </head>
5 <body>
6 <form action="" method="POST">
7 <table>
8 <tr>
9 <td>Nomor
10 Program: </td>
11 <td><input
12 type="text" name="nomorProgram" size="30"/></td>
13 </tr>
14 <tr>
15 <td>Nama Program:
16 </td>
17 <td><input
18 type="text" name="namaProgram" size="30"/></td>
19 </tr>
20 <tr>
21 <td>Surat
22 Keterangan: </td>
23 <td><input
24 type="text" name="suratKeterangan" size="30"/></td>
25 </tr>
26 <tr>
27 <td><input
28 type="submit" name="submit" value="Submit"/></td>
29 </tr>
30 </table>
31 </form>
32 </body>
33 </html>
34 <?php
35 if(isset($_POST['submit'])){
36 $main = new c_programKerja();
37 $main->insert();
38 }
39 ?>

L. Penjelasan

Output dari program berupa sebuah tabel berisi kolom untuk nomor, nama program
kerja, surat keterangan, aksi1 dan aksi 2, terdapat pula tombol Tambah Data untuk
menambahkan data, pada saat ingin menambahkan data kedalam tabel maka program
pertama yang akan dijalankan yaitu file index.php, di dalam file tersebut terdapat perintah
untuk melakukan instansiasi controller (c_programKerja.php). Terdapat tiga kondisi yaitu
apabila e maka controller akan mengeksekusi file viewEdit, d untuk mendelete, i untuk
viewInsert, namun apabila tidak memenuhi ketiganya maka controller akan mengeksekusi
function dari index.php.
File Viewedit digunakan untuk melakukan edit data, dilakukan dengan memanggil
sebuah fungsi update pada controller. Sedangkan file ViewInsert, digunakan untuk
melakukan penambahan data dengan memanggil fungsi insert dan file delete digunakan
untuk menghapus data sesuai parameter yang diinputkan. Sedangkan pada fungsi index
digunakan untuk menampilkan data.

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.

M. Screenshot

Halaman Login

Login sebagai Kepala Departement


Menambah program kerja

Mengedit program kerja


Menghapus Program Kerja

Login sebagai Menteri


N. Syntax

index.php

1 <?php
2 include_once("Controller.php");
3
4 $controller = new c_programKerja();
5 $controller->invoke();
6 ?>
7

Controller.php

1 <?php
2 include_once("Model.php");
3
4 class c_programKerja {
5 public $model;
6
7 public function __construct(){
8 $this->model = new m_programKerja();
9 }
10
11 public function invoke(){
12 session_start();
13 if (isset($_SESSION['status']) &&
14 $_SESSION['status']=='kadep'){
15 if(isset($_GET['edit'])){
16 $data = $this->model-
17 >getPogramKerja($_GET['nomorProgram']);
18 include 'v_edit.php';
19 if
20 (isset($_POST['Edit'])){
21 $add= $this-
22 >model->updatePogramKerja($_GET['nomorProgram'],
23 $_POST['namaProgram'], $_POST['suratKeterangan']);
24
25
26
27 header('Location:index.php');
28 }
29 }
30 else if(isset($_GET['delete']))
31 {
32 $del= $this->model-
33 >deletePogramKerja($_GET['nomorProgram']);
34
35 header('Location:index.php');
36 }
37 else if(isset($_GET['tambah']))
38 {
39 include 'v_Tambah.php';
40 if
41 (isset($_POST['Add'])){
42 $add= $this-
43 >model->setPogramKerja($_POST['nomorProgram'],
44 $_POST['namaProgram'], $_POST['suratKeterangan']);
45
46 header('Location:index.php');
47 }
48 }
49 else if(isset($_GET['Logout']))
50 {
51 $logout= $this->model-
52 >Logout();
53
54 header('Location:index.php');
55 }
56 else{
57 $proker = $this->model-
58 >getSemuaPogramKerja();
59 Include
60 'v_programKerja(CRUD).php';
61 }
62 }
63 else if(isset($_SESSION['status']) &&
64 $_SESSION['status']=='menteri'){
65 if(isset($_GET['Logout'])){
66 $logout= $this->model-
67 >Logout();
68
69 header('Location:index.php');
70 }
71 else {
72 $proker = $this->model-
73 >getSemuaPogramKerja();
74 Include
75 'v_programKerja.php';
76 }
77 }
78 else{
79 Include 'v_login.php';
80 if (isset($_POST['Login'])){
$login = $this->model-
81
82 >Login($_POST['id'], $_POST['pass']);
83
84 header('Location:index.php');
85 }
86 }
87 }
88 }
89 ?>

Koneksi.php

1 <?php
2 $mysqli = new mysqli('localhost', 'root',
3 '123456', 'praktikumweb');
4 ?>

Model.php

1 <?php
2 include 'kepalaDepartment.php';
3 include 'menteri.php';
4 class m_programKerja {
5 public $hasil = array();
6 public $user;
7
8 public function setPogramKerja($nomorProgram,
9 $namaProgram, $suratKeterangan){
10 include "Koneksi.php";
11 $rs = $mysqli->query(" INSERT
12 INTO proker
13 VALUES
14 ('$nomorProgram','$namaProgram','$suratKeterangan')"
15 );
16 }
17
18 public function getSemuaPogramKerja(){
19 include "Koneksi.php";
20 $rs = $mysqli->query("SELECT * FROM
21 proker");
22 $rows = array();
23
24 while($row = $rs->fetch_assoc()) {
25 $rows[] = $row;
26 }
27 return $rows;
28 }
29
30 public function getPogramKerja($nomorProgram)
31 {
32 include "Koneksi.php";
33 $rs = $mysqli->query("SELECT * FROM
34
35
36 proker WHERE nomorProgram='$nomorProgram'");
37 return mysqli_fetch_array($rs);
38 }
39
40 public function
41 updatePogramKerja($nomorProgram, $namaProgram,
42 $suratKeterangan){
43 include "Koneksi.php";
44 $rs = $mysqli->query(" UPDATE
45 proker SET nomorProgram= '$nomorProgram',
46 namaProgram = '$namaProgram',
47 suratKeterangan =
48 '$suratKeterangan'
49 WHERE nomorProgram =
50 '$nomorProgram'");
51 }
52
53 public function
54 deletePogramKerja($nomorProgram){
55 include "Koneksi.php";
56 $rs = $mysqli->query(" DELETE
57 from proker
58 WHERE nomorProgram =
59 '$nomorProgram'");
60 }
61
62 public function Login($id, $pass){
63 if($id=='KepalaDept' &&
64 $pass=='kadept'){
65 $_SESSION['status'] = 'kadep';
66 $user = new kepalaDepartmen();
67 $user-
68 >setData('Fabiansyah','1207','2016');
69 $user->setJabatan();
70 }
71 else if($id=='Menteri' &&
72 $pass=='menteri'){
73 $_SESSION['status'] =
74 'menteri';
75 $user = new menteri();
76 $user-
77 >setData('Cahyo','1098','2016');
78 $user->setJabatan();
79 }
80 }
81
82 public function Logout(){
83 session_start();
84 session_destroy();
85 }
}
?>
kepalaDepartmen.php

1 <?php
2 include_once 'pengurusBEM.php';
3 class kepalaDepartmen extends pengurusBEM {
4
5 public function __construct(){
6
7 }
8
9 function setJabatan() {
10 $this->jabatan = 'Kepala Department';
11 }
12
13 public function getJabatan() {
14 echo $this->jabatan;
15 }
16 }
17 ?>
18

menteri.php

1 <?php
2 include_once 'pengurusBEM.php';
3 class menteri extends pengurusBEM {
4
5 public function __construct(){
6
7 }
8
9 function setJabatan() {
10 $this->jabatan = 'Menteri';
11 }
12
13 public function getJabatan() {
14 echo $this->jabatan;
15 }
16 }
17 ?>

pengurusBEM.php

1 <?php
2 class pengurusBEM {
3 public $nama;
4 public $nim;
5 public $angkatan;
6 private $jabatan;
7 private $foto;
8
9 public function setData($nama,$nim,$angkatan)
10
11
12 {
13 $this->nama = $nama;
14 $this->nim = $nim;
15 $this->angkatan = $angkatan;
16 }
17
18 public function getNama() {
19 echo $this->nama;
20 }
21
22 public function getJabatan() {
23 echo $this->jabatan;
24 }
}
?>

v_edit.php

1 <html>
2 <style>
3 body{
4
5 }
6 </style>
7 <body>
8 <h1>Edit Program Kerja</h1>
9 <form method='post' action=''>
10 <table>
11 <tr><td>Nomor Program
12 </td><td>: <input type='text'
13 name='nomorProgram' value=<?php echo
14 $data['nomorProgram'] ?>></td></tr>
15 <tr><td>Nama Program
16 </td><td>: <input type='text'
17 name='namaProgram' value=<?php echo
18 $data['namaProgram'] ?>></td></tr>
19 <tr><td>Surat Keterangan
20 </td><td>: <input type='text'
21 name='suratKeterangan' value=<?php echo
22 $data['suratKeterangan'] ?>></td></tr>
23 </table>
24 <input type='submit' name='Edit'
25 value='Edit'>
26 </form>
27 <table>
28 </table>
29 </body>
30 </html>

v_login.php

1 <center>
2
3 <h1>Login Page<h1>
4 <form method='post' action=''>
5 <table>
6 <tr>
7 <td>Username :</td>
8 <td><input type='text'
9 name='id'></td>
10 </tr>
11 <tr>
12 <td>Password : </td>
13 <td><input type='password'
14 name='pass'></td>
15 </tr>
16 <tr>
17 <td><input type='submit' name='Login'
18 value='LOGIN'></td>
19 <td></td>
20 </tr>
21 </table><br>
22
</form>

v_programKerja.php

1 <html>
2 <style>
3 body{
4
5 }
6 </style>
7 <body>
8 <center>
9 <br><br>
10 <h2> Daftar Program Kerja BEM
11 </h2><hr>
12 <table border="1">
13 <th>Nomor</th>
14 <th>Nama Program Kerja</th>
15 <th>Surat Keterangan</th>
16 <?php
17 foreach($proker as $hasil)
18 echo " <tr>
19
20 <td>$hasil[nomorProgram]</td>
21
22 <td>$hasil[namaProgram]</td>
23
24 <td>$hasil[suratKeterangan]</td>
25 </tr>";
26 echo "</table>";
27 ?><br>
28 <form method='get' action='index.php'>
29 <input type='submit'
30
31
32 name='Logout' value='Logout'>
</form>
</body>
</html>
v_programKerja(CRUD).php

1 <html>
2 <style>
3 body{
4
5 }
6 </style>
7 <body>
8 <br>
9 <br>
10 <center>
11 <h2> Daftar Program Kerja BEM </h2>
12 <table border="1">
13 <th>Nomor</th>
14 <th>Nama Program Kerja</th>
15 <th>Surat Keterangan</th>
16 <th>Edit</th>
17 <th>Delate</th>
18 <?php
19 foreach($proker as $hasil)
20 echo " <tr>
21
22 <td>$hasil[nomorProgram]</td>
23
24 <td>$hasil[namaProgram]</td>
25
26 <td>$hasil[suratKeterangan]</td>
27 <td><a
28 href=\"index.php?
29 nomorProgram=$hasil[nomorProgram]&edit=edit\">Edit</
30 a></td>
31 <td><a
32 href=\"index.php?
33 nomorProgram=$hasil[nomorProgram]&delete=delete\">De
34 lete</a></td>
35 </tr>";
36 echo "</table>";
37 ?>
38 <br><br>
39 <form method='get' action='index.php'>
40 <table width="200" border="0">
41 <tr>
42 <td>&nbsp;</td>
43 <td><input type='submit' name='Logout'
44 value='Logout'></td>
45 <td>&nbsp;</td>
46 <td><input type='submit' name='tambah'
47 value='Tambah Program Kerja'></td>
48 <td>&nbsp;</td>
49
50 </tr>
</table></form>
</body>
</html>

v_tambah.php

1 <html>
2 <style>
3 body{
4 }
5 </style>
6 <body>
7 <h1>Tambah Program Kerja</h1>
8 <form method='post' action=''>
9 <table>
10 <tr><td>Nomor Program
11 </td><td>: <input type='text'
12 name='nomorProgram' ></td></tr>
13 <tr><td>Nama Program
14 </td><td>: <input type='text'
15 name='namaProgram' ></td></tr>
16 <tr><td>Surat Keterangan
17 </td><td>: <input type='text'
18 name='suratKeterangan'></td></tr>
19 </table>
20 <input type='submit' name='Add'
21 value='Submit'>
22 </form>
23 <table>
24 </table>
25 </body>
26 </html>

O. Penjelasan

Output dari program akan menampilkan sebuah halaman login, dimana user diminta
untuk menginputkan username dan password. Apabila username dan password benar
sesuai dengan yang telah tersimpan dalam database maka proses dilanjutkan ke dalam
halaman index.php dimana akan ditampilkan daftar program kerja yang diadakan oleh
BEM, user dapat melakukan proses CRUD (Create, Read, Update, Delete) sesuai dengan
perintah yang diinputkan oleh user, terdapat pula tombol Tambah program kerja dan
logout. Apabila user mengklik Tambah program kerja, maka user akan diminta
menginputkan Nomor program, nama program yang ingin dibuat serta surat
keterangannya.
Setelah user menambahkan program kerja yang baru maka, data tersebut akan
disimpan didalam database dan ditampilkan dalam tabel, kita dapat mengedit serta
mengapus data tersebut sesuai dengan keinginan user. Apabila kita ingin mengedit data
tersebut, user hanya perlu mengklik tulisan edit, setelah itu akan dilanjutkan ke halaman
edit lalu user dapat mengedit data sesuai keinginannya. Selain mengedit, terdapat pilihan
untuk menghapus 1 baris data apabila diklik maka baris dalam tabel tersebut akan
dihapus. User yang telah login dapat melakukan logout dan kemudian akan dilanjutkan ke
halaman login seperti semula.
Dalam program, Menteri hanya dapat melihat daftar program kerja saja, sedangkan
Kepala Departemen dapat melakukan proses CRUD. Apabila menteri berhasil login,
maka akan ditampilkan Daftar program kerja BEM dengan tabel dan data berupa no,
nama program kerja, serta surat keterangan.

Anda mungkin juga menyukai