TUGAS PRAKTIKUM PEMROGRAMAN WEB BAB NAMA
: PEMROGRAMAN BERORIENTASI OBJEK DAN MODEL VIEW CONTROLLER : YUDISTIRA S SASTRA GINATA NIM : 145150200111094 145150200111094 145150200111097 ASISTEN : LENI ISTIKOMAH LABIB IMAM HIDAYAT TGL PRAKTIKUM : 11 MEI 2016
TUGAS 1 A. Soal
Modifikasilah Latihan 3 sehingga dapat dibuat program dengan kemampuan CRUD secara lengkap ! B. Screenshoot
C. Syntax koneksiMVC.php
1 2 3 4 5 6 7 8
Index.php
1 2 3 4 5 6 7 8 9 10
viewEdit($kode); }else if(isset($_GET['d'])){ //kondisi untuk menghapus data (mengakses fungsi delete)
11 12 13 14 15 16 17 18 19
$kode = $_GET['d']; $controller->delete($kode); }else if(isset($_GET['i'])){ $controller->viewInsert(); //kondisi untuk mengakses halaman add }else{ $controller->invoke(); } ?>
c_programKerja.php 1 model = new m_programKerja(1,'Jalan10 Jalan','SK1.docx'); 11 } 12 public function invoke() { 13 14 $pro =$this->model->getSemuaPogramKerja(); 15 16 Include 'v_programKerja.php'; 17 18 } 19 function viewEdit($kode){ 20 $data = $this->model->selectMhs($kode); 21 //select data mahasiswa dengan nim ... 22 $row = $this->model->fetch($data); 23 //fetch hasil select 24 include "v_programKerjaEdit.php"; 25 //menampilkan halaman untuk mengedit data 26 } 27 function update(){ 28 $nomorProgram = $_POST['no']; 29 $namaProgram = $_POST['nama']; 30 $suratKeterangan = $_POST['surat']; 31 $update = $this->model32 >updateMhs($nomorProgram,$namaProgram, 33 $suratKeterangan); 34 header("location:index.php"); 35 } 36 function delete($kode){ 37 $delete = $this->model38 >deleteMhs($kode); 39 header("location:index.php"); 40 } 41 function viewInsert(){ 42 include "v_programKerjaAdd.php"; 43 //menampilkan halaman add data 44 }
45 46 47 48 49 50 51 52 53 54 55
function insert(){ $nomor = $_POST['nomor']; $nama = $_POST['namaProg']; $surat = $_POST['suratKet']; $insert = $this->model>insertMhs($nomor,$nama,$surat); header("location:index.php"); } } ?>
m_programKerja.php 1 nomorProgram = $nomorProgram; 14 $this->namaProgram = $namaProgram; 15 $this->suratKeterangan = $suratKeterangan; 16 17 } 18 public function setPogramKerja($nomorProgram, 19 $namaProgram, $suratKeterangan) 20 { 21 $rs = $mysqli->query("INSERT INTO proker VALUES 22 ('$this->nomorProgram’, 23 '$this->namaProgram’, 24 '$this25 >suratKeterangan')"); 26 } 27 public function getSemuaPogramKerja() 28 { 29 $mysqli = new mysqli('localhost', 'root', 30 'yud1st1r4', 'test'); 31 $rs = $mysqli->query("SELECT * FROM proker"); 32 $rows = array(); 33 34 while($row = $rs->fetch_assoc()) 35 { 36 $rows[] = $row; 37 } 38 39 $this->hasil = $rows; 40 41 return $this->hasil; 42
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
} function execute($query){ $connect = mysqli_connect("localhost", "root", "yud1st1r4","test"); return mysqli_query($connect,$query); } function selectMhs($kode){ $query = "select * from proker where nomorProgram='$kode'"; return $this->execute($query); } function fetch($var){ return mysqli_fetch_array($var); } function updateMhs($nomorProgram,$namaProgram,$surat){ $query = "update proker set namaProgram='$nomorProgram', namaProgram='$namaProgram', suratKeterangan='$surat' where nomorProgram='$nomorProgram'"; return $this->execute($query); } function deleteMhs($kode){ $query = "delete from proker where nomorProgram='$kode'"; return $this->execute($query); } function insertMhs($nomor,$nama,$surat){ $query = "insert into proker values ('$nomor','$nama','$surat')"; return $this->execute($query); }
} ?>
V_programKerja.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
No Program | Nama Program Kerja | Surat Keterangan |
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
$proker[nomorProgram] | $proker[namaProgram] | $proker[suratKeterangan] | Edit | Delete | "; } ?>
Tambah Data
V_programKerjaAdd.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
MVC insert(); } ?>
V_programKerjaEdit.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
MVC
40 41 42 43 44
diklik maka panggil fungsi update pada controller $main = new c_programKerja(); $main->update(); } ?>
D. Penjelasan
A. Tujuannya dari m_program kerja adalah sebagai representasi dari model di dalam konsep MVC. Model mewakili struktur data. Biasanya model berisi fungsi-fungsi yang membantu seseorang dalam pengelolaan basis data seperti memasukkan data ke basis data, pembaruan data dan lain-lain. Biasanya didalam model akan berisi class dan fungsi untuk mengambil, melakukan update dan menghapus data website. Karena sebuah website biasanya menggunakan basis data dalam menyimpan data maka bagian Model biasanya akan berhubungan dengan perintah-perintah query SQL. Model bisa dibilang khusus digunakan untuk melakukan koneksi ke basis data oleh karena itu logika-logika pemrograman yang berada didalam model juga harus yang berhubungan dengan basis data. B. Tujuann dari c_programKerja adalah representasi dari controller dalam konsep MVC. Controller merupakan penghubung antara Model dan View. Didalam Controller inilah terdapat class dan fungsi-fungsi yang memproses permintaan dari View kedalam struktur data didalam Model. Controller juga tidak boleh berisi kode untuk mengakses basis data. Tugas controller adalah menyediakan berbagai variabel yang akan ditampilkan di view, memanggil model untuk melakukan akses ke basis data, menyediakan penanganan error, mengerjakan proses logika dari aplikasi serta melakukan validasi atau cek terhadap input. C. V_programKerja adalah repsresentasi dari view dalam konsep MVC. View merupakan informasi yang ditampilkan kepada pengunjung website. Sebisa mungkin didalam View tidak berisi logika-logika kode tetapi hanya berisi variabel-variabel yang berisi data yang siap ditampilkan. View bisa dibilang adalah halaman website yang dibuat menggunakan HTML dengan bantuan CSS atau JavaScript. D. Dalam file index.php terdapat code dari c_programKerja.php yang disertakan ke dalam file index.php dengan perintah include_once. Dan disini terdapat instansiasi objek controller yang nantinya akan digunakan untuk memanggil method invoke pada file c_programKerja. E. Dan terdapat file koneksiMVC.php untuk membangun koneksi dengan database yang telah kita buat.
TUGAS 2 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
Admin
User
C. Syntax Login.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<script> console.log('aaaaa'); var a=document.forms['form']['user'].value; var b=document.forms['form']['pwd'].value; function hasil(){ if(a=="admin" && b=="admin"){ return true; }
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
else if(a=="user" && b=="user"){ return true; } }
Redic.php
1 2 3 4 5 6 7 8 9 10 11 12
Admin koneksiMVC.php
1 2 3 4 5 6 7 8
Index.php
1 2 3 4 5 6
7 8 9 10 11 12 13 14 15 16 17 18 19
$kode = $_GET['e']; $controller->viewEdit($kode); }else if(isset($_GET['d'])){ //kondisi untuk menghapus data (mengakses fungsi delete) $kode = $_GET['d']; $controller->delete($kode); }else if(isset($_GET['i'])){ $controller->viewInsert(); //kondisi untuk mengakses halaman add }else{ $controller->invoke(); } ?>
c_programKerja.php 1 model = new m_programKerja(1,'Jalan10 Jalan','SK1.docx'); 11 } 12 public function invoke() { 13 14 $pro =$this->model->getSemuaPogramKerja(); 15 16 Include 'v_programKerja.php'; 17 18 } 19 function viewEdit($kode){ 20 $data = $this->model->selectMhs($kode); 21 //select data mahasiswa dengan nim ... 22 $row = $this->model->fetch($data); 23 //fetch hasil select 24 include "v_programKerjaEdit.php"; 25 //menampilkan halaman untuk mengedit data 26 } 27 function update(){ 28 $nomorProgram = $_POST['no']; 29 $namaProgram = $_POST['nama']; 30 $suratKeterangan = $_POST['surat']; 31 $update = $this->model32 >updateMhs($nomorProgram,$namaProgram, 33 $suratKeterangan); 34 header("location:index.php"); 35 } 36 function delete($kode){ 37 $delete = $this->model38 >deleteMhs($kode); 39 header("location:index.php"); 40 }
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
function viewInsert(){ include "v_programKerjaAdd.php"; //menampilkan halaman add data } function insert(){ $nomor = $_POST['nomor']; $nama = $_POST['namaProg']; $surat = $_POST['suratKet']; $insert = $this->model>insertMhs($nomor,$nama,$surat); header("location:index.php"); } } ?>
m_programKerja.php 1 nomorProgram = $nomorProgram; 14 $this->namaProgram = $namaProgram; 15 $this->suratKeterangan = $suratKeterangan; 16 17 } 18 public function setPogramKerja($nomorProgram, 19 $namaProgram, $suratKeterangan) 20 { 21 $rs = $mysqli->query("INSERT INTO proker VALUES 22 ('$this->nomorProgram’, 23 '$this->namaProgram’, 24 '$this25 >suratKeterangan')"); 26 } 27 public function getSemuaPogramKerja() 28 { 29 $mysqli = new mysqli('localhost', 'root', 30 'yud1st1r4', 'test'); 31 $rs = $mysqli->query("SELECT * FROM proker"); 32 $rows = array(); 33 34 while($row = $rs->fetch_assoc()) 35 { 36 $rows[] = $row; 37 } 38
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
$this->hasil = $rows; return $this->hasil; } function execute($query){ $connect = mysqli_connect("localhost", "root", "yud1st1r4","test"); return mysqli_query($connect,$query); } function selectMhs($kode){ $query = "select * from proker where nomorProgram='$kode'"; return $this->execute($query); } function fetch($var){ return mysqli_fetch_array($var); } function updateMhs($nomorProgram,$namaProgram,$surat){ $query = "update proker set namaProgram='$nomorProgram', namaProgram='$namaProgram', suratKeterangan='$surat' where nomorProgram='$nomorProgram'"; return $this->execute($query); } function deleteMhs($kode){ $query = "delete from proker where nomorProgram='$kode'"; return $this->execute($query); } function insertMhs($nomor,$nama,$surat){ $query = "insert into proker values ('$nomor','$nama','$surat')"; return $this->execute($query); }
} ?>
V_programKerja.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
No Program | Nama Program Kerja | Surat Keterangan |
$proker[nomorProgram] | $proker[namaProgram] | $proker[suratKeterangan] | Edit | Delete | "; } ?>
Tambah Data
V_programKerjaAdd.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
MVC insert(); } ?>
V_programKerjaEdit.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
MVC
36 37 38 39 40 41 42 43 44
update(); } ?>
User
koneksiMVC.php
1 2 3 4 5 6 7 8
User.php
1 2 3 4 5 6
invoke(); ?>
controlUser.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
model->getSemuaPogramKerja(); Include 'v_programKerja1.php'; } public function __construct(){ $this->model = new modelUser(1,'JalanJalan','SK1.docx'); } } ?>
modelUser.php
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
require "koneksiMVC.php"; class modelUser { 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 getSemuaPogramKerja() { $mysqli = new mysqli('localhost', 'root', 'yud1st1r4', 'test'); $rs = $mysqli->query("SELECT * FROM proker"); $rows = array(); while($row = $rs->fetch_assoc()) { $rows[] = $row; } $this->hasil = $rows; return $this->hasil; } } ?>
V_programKerja1.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
No Program | Nama Program Kerja | Surat Keterangan |
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
$proker[nomorProgram] | $proker[namaProgram] | $proker[suratKeterangan] | "; } ?>
D. Penjelasan
Terdapat form login yang nantinya akan membedakan ke halaman mana akan menuju, jika login di login.php menggunakan username dan password “admin”, maka akan di
redictering ke halaman administrasi dimana terdapat perintah CRUD, jadi admin bisa memanipulasi data seperti delete, insert dan sebagainya. Namun jika tidak login menuju admin, maka akan diredic ke halaman user biasa yang mana hanya bisa melihat data saja tanpa dapat memanipulasinya. Pertama, kita melakukan login, missal kita login dengan username dan password admin, maka kita akan dialihkan ke halaman index.php, dan pada file tersebut terdapat beberapa kondisi, dank arena kita belum ada data yang ada(data yang dapat di GET), maka akan masuk ke else yang mana akan memanggil method invoke pada class c_programkerja. Pada file c_programKerja.php ini adalah sebagia controller, yaitu penghubung antara view dan model dan disini tidak ada syntax database sama sekali. Karena tadi memanggil method invoke, maka akan masuk ke method invoke, dan didalam method invoke terdapat pemanggilan method getSemuaProgramKerja dapa class model. Pada file m_programKerja.php inilah berisikan query-query database yang nantinya akan memanipulasi database seperti perintah update dan sebagainya.selanjutnya masuk ke method getSemuaProgramKerja, dan terdapat $mysqli variabel yang akan melakukan pengkoneksian ke database. Dan pada method ini akan mengembalikan nilai $this->hasil yang merupakan hasil perintah dari “SELECT * FROM proker”.
Lalu kembali lagi menuju class c+programKerja bersama return value tadi, dan terdapat include “v_programKerja.php” yang nantinya pada file view ini akan ditampilkan dalam
bentuk table.