Anda di halaman 1dari 24

TUGAS MATA KULIAH PEMROGRAMAN WEB

Judul : Konsep MVC pada PHP

Nama :
- Yuliana (5180411035)
- Anggita Dian Berlianti (5180411037)
- Randi Fajar Wicaksono (5180411047)
- Merliana Choerunnisa (5180411048)
- Moh. Dedi Rizqi (5180411057)
- Adi Nugroho (5180411061)
- Ilham Setyamuhti (5180411065)

Kelas : Pemrograman Web A

PROGRAM STUDI INFORMATIKA


FAKULTAS TEKNOLOGI INFORMASI DAN ELEKTRO
UNIVERSITAS TEKNOLOGI YOGYAKARTA
2019
KATA PENGANTAR
Segala puji dan syukur kami panjatkan kepada Tuhan Yang Maha Esa karena atas kasih
karunia-Nya kami dapat menyelesaikan makalah PHP MVC yang sebagaimana diajukan
guna memenuhi tugas mata kuliah Pemrograman Web oleh dosen Adam Sekti Aji,S.kom,
M.Kom.
Kami mengucapkan terima kasih kepada semua pihak yang telah membantu sehingga
makalah ini dapat diselesaikan sesuai dengan waktunya. Harapan kami semoga makalah
dapat berguna untuk setiap pembacanya, sehingga visi kita semua untuk membangun dan
mengembangkan ilmu pengetahuan di Indonesia ini dapat terlaksana dengan baik.
Kami menyadari ini masih jauh dari sempurna. Oleh karena itu, kami mengharapkan
kritik atau saran yang bersifat membangun demi kesempurnaan makalah ini. Semoga
makalah ini bermanfaat bagi kita semua, memberikan informasi bagi masyarakat dan
bermanfaat untuk pengembang ilmu pengetahuan dibidang IT.
DAFTAR ISI

Judul : Konsep MVC pada PHP................................................................................................................i


KATA PENGANTAR.................................................................................................................................ii
DAFTAR ISI............................................................................................................................................iii
BAB I PENDAHULUAN............................................................................................................................1
1.1. Latar Belakang.......................................................................................................................1
1.2. Rumusan Masalah.................................................................................................................2
1.3. Tujuan Penulisan...................................................................................................................2
BAB II PEMBAHASAN.............................................................................................................................3
2.1. Sejarah singkat MVC PHP Framework...................................................................................3
2.2. Arsitektur MVC (Model View Controller)..............................................................................3
2.3. Jenis-jenis PHP MVC pada website........................................................................................4
2.4. Hasil CRUD menggunakan konsep MVC................................................................................5
2.4.1. Struktur Direktori File.....................................................................................................5
2.4.2. App/config/config.php....................................................................................................6
2.4.3. App/controllers/mahasiswa.php....................................................................................6
2.4.4. App/core/App.php..........................................................................................................8
2.4.5. App/core/Controller.php................................................................................................9
2.4.6. App/core/Database.php.................................................................................................9
2.4.7. App/core/Flasher.php...................................................................................................10
2.4.8. App/Models/Mahasiswa_model.php...........................................................................11
2.4.9. App/View/Mahasiswa/index.php.................................................................................12
2.4.10. App/View/Mahasiswa/edit.php....................................................................................14
2.4.11. App/View/templates/header.php................................................................................15
2.4.12. App/views/templates/footer.php.................................................................................16
2.4.13. App/init.php.................................................................................................................16
2.4.14. App/.htaccess...............................................................................................................17
2.4.15. Public/index.php...........................................................................................................17
2.4.16. Public/.htaccess............................................................................................................17
2.5. Screenshoot aplikasi MVC...................................................................................................17
BAB III PENUTUP..................................................................................................................................19
3.1. Kesimpulan..........................................................................................................................19

iii
DAFTAR PUSTAKA................................................................................................................................20

iv
BAB I PENDAHULUAN
1.1. Latar Belakang
Perkembangan Teknologi Informasi saat ini sangatlah cepat. Teknologi informasi
memegang peranan yang sangat penting dalam kehidupan manusia. Batas-batas yang
ada karena perbedaan ruang dan waktu dapat ditembus dengan keberadaan teknologi
khususnya internet. Dengan media internet dapat dilakukan banyak hal seperti belanja,
membaca berita, ujian, dan lain-lain. Tentu pembuat system seperti itu tidaklah mudah.
Semakin bagus sebuah system maka semakin rumut dalam proses pembuatan dan
perawatannya.
Dalam sebuah aplikasi yang sedang dibuat, pemrogram akan dihadapkan dengan
tingkat kerumitan yang tinggi, dari membangun seluruh proses yang ada, sampai
dengan menyelesaikan masalah. Seperti data yang sama, seringkali ditampilkan dalam
format berbeda, struktur sumber data related jarang berubah. Maka solusi yang
diberikan adalah menggunakan MVC (Model, View, Controller).
Suatu perangkat lunak agar lebih berguna, tentu saja harus berinteraksi dengan
sesuatu, kadang-kadang berinteraksi dengan perangkat lain, dan yang lebih sering
dengan manusia. Perangkat lunak memerlukan beberapa antarmuka untuk membuat
interaksi lebih efisien. Beberapa aplikasi berbasis web membutuhkan lebih banyak
sumber daya untuk membangun sebuah antarmuka yang efektif dan terstruktur secara
modular dan itu lebih baik dari pada hanya sekedar logika proses(Deacon, 2009).
Sistem berbasis web konvensional, masih mencampur kode program antara logika
proses dan antarmuka. Antarmuka dalam sistem berbasis web konvensional hanya dapat
digunakan dalam satu proses logika, hal ini akan mengurangi modularitas aplikasi,
membuat pemeliharaan sistem lebih sulit, dan juga membuat antarmuka sulit untuk
dimodifikasi ketika akan digunakan untuk aplikasi lain (Deacon, 2009). Misalnya,
script server (PHP, JSP, ASP, dan lain-lain) masih dicampur dengan script tampilan
(HTML, WML, JavaScript, dan lain-lain).
Permasalahan tersebut telah menimbulkan gagasan untuk memisahkan logika
aplikasi dengan antarmuka, sehingga aplikasi yang dibangun dengan mudah dapat
diganti antarmukanya setiap saat. Pada tahun 1970-an penemu smalltalk, Trygve
Reenskaug, mendefinisikan sebuah arsitektur untuk menyelesaikan masalah tersebut,
yang disebut arsitektur Model-View-Controller (MVC) yang memisahkan logika bisnis
dan presentasi(tampilan) aplikasi. Sistem berbasis web telah banyak diterapkan di

1
berbagai bidang, khususnya bagi yang membutuhkan system bersifat online dengan
segala kelebihannya, termasuk dibidang pendidikan. Institusi pendidikan banyak yang
memanfaatkan system berbasis web, dari mulai sekedar menampilkan berita atau
informasi, pendaftaran online, pembelajaran online, sampai dengan penilaian online.
Permasalahan tersebut telah menimbulkan gagasan untuk memisahkan logika
aplikasi dengan antarmuka, sehingga aplikasi yang dibangun dengan mudah dapat
diganti antarmukanya setiap saat. Pada tahun 1970-an penemu smalltalk, Trygve
Reenskaug, mendefinisikan sebuah arsitektur untuk menyelesaikan masalah tersebut,
yang disebut arsitektur model-view-controller (MVC) yang memisahkan logika bisnis
dan presentasi (tampilan) aplikasi. Sistem berbasis web telah banyak diterapkan di
berbagai bidang, khususnya bagi yang membutuhkan suatu sistem yang bersifat online
dengan segala kelebihannya, termasuk bidang pendidikan. Institusi pendidikan banyak
yang memanfaatkan sistem berbasis web, dari mulai sekedar menampilkan berita atau
informasi, pendaftaran online, pembelajaran online, sampai pada penilaian online.
1.2. Rumusan Masalah
Bagaimana membuat Create, Read, Update, Delete menggunakan MVC?
1.3. Tujuan Penulisan
Tujuan yang ingin dicapai dari pebahasan tentang MVC adalah kita dapat
memahami arsitektur serta konsep dalam membangun aplikasi berbasis web, dimana
menggunakan MVC pada aplikasi web dibagi menjadi tiga bagian. Yang mana setiap
bagian memiliki tugas dan fungsi masing-masing.

2
BAB II PEMBAHASAN

2.1. Sejarah singkat MVC PHP Framework


OOP( Object Oriented Programming) atau Pemrograman Berbasis Objek telah
berkembang pesat selaras dengan perkembangan PHP di versi 5. Sekarang ini banyak
aplikasi perusahaan swasta maupun perusahaan pemerintah lebih memilih
menggunakan aplikasi website PHP dikarenakan memang aplikasi website sekarang ini
sangat kompleks.
Hal itu juga didukung dengan script pemrograman lainnya seperti AJAX, jquery,
css, html yang digabungkan menjadi satu aplikasi website dengan PHP sebagai script
utama websitenya. Mulai dari aplikasi yang menggunakan API berbentuk SOAP, API
WDSL, maupun aplikasi website yang membutuhkan formulir yang kompleks.
Dari situlah perusahaan besar yang focus di PHP development, yaitu ElissLab
mulai mengembangkan framework PHP dengan nama CodeIgniter yang merupakan
opensource. Eliss Lab mempunyai produk berbayar yang bernama Expression Engine
dan Mojo Motor.. Mereka telah berdiri sejak 2001.

2.2. Arsitektur MVC (Model View Controller)


Model-View-Controller (MVC) adalah sebuah konsep yang diperkenalkan onelh
penemu smalltalk (Trygve Reenskaug) untuk meng-enkapsuasi data bersama dengan
pemrosesan (model), mengisolasi dari proses manipulasi (controller) dan tampilan
(view) untuk direpresentasikan pada sebuah user interface (Deacon, 2009). MVC
mengikuti pendekatan yang paling umum dari Layering. Layering hanyalah sebuah
logika yang membagi kode kita ke dalam fungsi di kelas yang berbeda. Pendekatan ini
mudah dikenal dan yang paling banyak diterima. Keuntungan utama dalam pendekatan
ini adalah penggunaan ulang(reusability) kode (Satish, 2004).

Definisi teknis dari arsitektur MVC dibagi menjadi tiga lapisan (Burbeck, 1992), yaitu :
a. Model, digunakan untuk mengelola informasi dan memberitahu pengamat ketika
ada perubahan informasi. Hanya model yang mengandung data dan fungsi yang
berhubungan dengan pemrosesan data.. Sebuah model meringkas lebih dari sekedar
data dan fungsi yang beroperasi di dalamnya. Pendekatan model yang digunaka
untuk computer mode atau abstraksi dari beberapa proses dunia nyata. Hal ini tidak
hanya menangkap kedaan proses atau system, tetapi bagaimana system bekerja.

3
Sebagai contoh, programmer dapat menentukan model yang menjembatani
komputasi back-end dengan front-end GUI (Graphical User Interface).
b. View, bertanggung jawab untuk pemetaan grafis ke sebuah perangkat. View
biasanya memiliki hubungan 1-1 dengan sebuah permukaan layar dan tahu
bagaimana untuk membuatnya. View melekat pada model dan me-render isinya ke
permukaan layar. Selain itu, ketika model berubah, view secara otomatis
menggambar ulang bagian layar yang terkena perubahan untuk menunjukkan
perubahan tersebut. Terdapat kemungkinan beberapa view tersebut daoat me-render
isi model untuk permukaan tampilan yang berbeda..
c. Controller, menerima input dari pengguna dan menginstruksikan model dan view
untuk melakukan aksi bedasarkan masukan tersebut. Sehingga, controller
bertanggung jawab untuk pemetaan aksi pengguna akhir terhadap respon aplikasi.
Sebagai contoh, ketika pengguna mengklik tombola tau memilih item menu,
controller bertanggung jawab untuk menentukan bagaimana aplikasi seharusnya
merespon.

Model, View dan Controller sangat erat terkait, oleh karena itu, mereka harus
merujuk satu sama lain. Gambar 2.1. mengilustrasikan hubungan dasar Model-
View-Controller.

Gambar 2. 1. Hubungan antara model, view, dan controller (Gulzar, 2002)

2.3. Jenis-jenis PHP MVC pada website


a. Server Side MVC, Server side MVC biasa terjadi pada aplikasi web tradisional yang
tidak melibatkan client side seperti Javascript, Java applet, Flash, dan lain-lain.
Server Side MVC menyerahkan keseluruhan proses bisnis pada server aplikasi pada
4
sisi pengguna hanya dapat menerima. MVC jenis ini kadang-kadang disebut juga
dengan nama Thin Client.
b. Mixed Client Side and Server Side MVC. Pada Mixed Client Side and Server Side
MVC 1 client tidak menggunakan model sebagai jembatan untuk melakukan
komunikasi pada server, dibandingkan dengan Server Side MVC, arsitektur ini
memiliki tingkat kekompleksitas yang lebih tinggi karena lebih banyak komponen
yang terlibat. Untuk selanjutnya arsitektur ini disebut dengan Mixed MVC 1. Pada
mixed Client Side and Server Side MVC 2, client menggunakan model sebagai
jembatan untuk melakukan komunikasi pada server, dibandingkan dengan arsitektur
MVC yang lain, arsitektur ini memiliki tingkat kompleksitas yang paling tinggi
karena lebih banyak komponen yang terlibat, sehingga membutuhkan sumber daya
yang lebih besar pula. Untuk selanjutnya arsitektur ini disebut dengan Mixed MVC
2.
c. Rich Internet Application MVC, Application MVC Rich Internet Application (RIA)
disebut juga dengan nama Fat Client, merupakan aplikasi web yang memiliki
kemampuan dan fungsi hamper seperti aplikasi desktop. RIA pada sisi client,
memiliki mesin untuk mengambil data yang berada pada server, sehingga pada
client terdapat bagian MVC sendiri dan hanya membutuhkan bagian model pada sisi
server.

2.4. Hasil CRUD menggunakan konsep MVC


2.4.1. Struktur Direktori File
Dibawah ini merupakan struktur direktori file yang digunakan pada konsep
MVC.

5
Gambar 2.4.1. 1. Direktori 1 dan Direktori 2

2.4.2. App/config/config.php
File ini berisi data-data dari database berupa konstanta.
<?php
define('BASEURL', 'http://localhost/phpmvc/public');
//DB
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'phpmvc');
?>

2.4.3. App/controllers/mahasiswa.php
Pada file controller mahasiswa.php ini berfungsi untuk menghubungkan fungsi
CRUD yang akan yang akan dikirimkan ke Model.
<?php
class Mahasiswa extends Controller{
public function index(){
$data['judul'] = 'Data Mahasiswa';

6
$data['mhs'] = $this->model('Mahasiswa_model')-
>getAllMahasiswa();
$this->view('templates/header', $data);
$this->view('mahasiswa/index', $data);
$this->view('templates/footer');
}

public function tambah(){


if($this->model('Mahasiswa_model')->tambahDataMahasiswa($_POST)
> 0){
Flasher::setFlash('berhasil', 'ditambahkan', 'success');
header('Location: '. BASEURL . '/mahasiswa');
exit;
} else {
Flasher::setFlash('gagal', 'ditambahkan', 'danger');
header('Location: '. BASEURL . '/mahasiswa');
exit;
}
}

public function hapus($id){


if($this->model('Mahasiswa_model')->hapusDataMahasiswa($id) > 0){
Flasher::setFlash('berhasil', ' dihapus ', 'success');
header('Location: '. BASEURL . '/mahasiswa');
exit;
} else {
Flasher::setFlash('gagal', ' dihapus ', 'danger');
header('Location: '. BASEURL . '/mahasiswa');
exit;
}
}

public function edit($id){


$data['mhs'] = $this->model('Mahasiswa_model')-
>getAllMahasiswaById($id);
$this->view('templates/header', $data);
$this->view('mahasiswa/edit', $data);
$this->view('templates/footer');
}

public function updateMahasiswa(){


$nim = $_POST['nim'];
$nama = $_POST['nama'];
$email = $_POST['email'];
$jurusan = $_POST['jurusan'];
$data['mhs'] = $this->model('Mahasiswa_model')-
>updateMahasiswa($nim,$nama,$email,$jurusan);
header('location:../mahasiswa');
}
}

7
?>

2.4.4. App/core/App.php
Digunakan untuk cek url apakah ada parameter home,about, mahasiswa, jika ada
maka data akan tampil.
<?php
class App{
protected $controller = 'mahasiswa';
protected $method = 'index';
protected $params = [];

public function __construct(){


$url = $this->parseURL();

if(file_exists('../app/controllers/' . $url[0] . '.php')){


$this->controller = $url[0];
unset($url[0]);
}

require_once '../app/controllers/' . $this->controller . '.php';


$this->controller = new $this->controller;

// Method
if(isset($url[1])){
if(method_exists($this->controller, $url[1])){
$this->method = $url[1];
unset($url[1]);
}
}

//params
if(!empty($url)){
$this->params = array_values($url);
}

//jalankan controller &method kirimkan params jika ada


call_user_func_array([$this->controller, $this->method], $this->params);

public function parseURL(){


if(isset($_GET['url'])){
$url = rtrim($_GET['url'], '/');
$url = filter_var($url, FILTER_SANITIZE_URL);
$url = explode('/', $url);
return $url;
}
}

8
}
?>
2.4.5. App/core/Controller.php
File controller.php sebagai Kelas utama yang nanti akan diwariskan ke kelas
anak atau child-class.
<?php
class Controller{
public function view($view, $data = []){
require_once '../app/views/' . $view . '.php';
}

public function model($model){


require_once '../app/models/' . $model . '.php';
return new $model;
}
}
?>

2.4.6. App/core/Database.php
File Database.php ini digunakan untuk konfigurasi database menggunakan PDO
sehingga mempermudah ketikan akan memindah ke jenis database lain.
<?php

class Database{
private $host = DB_HOST;
private $user = DB_USER;
private $pass = DB_PASS;
private $db_name = DB_NAME;
private $dbh, $stmt;

public function __construct(){


$dsn = 'mysql:host='.$this->host.';dbname='.$this->db_name;'';
$option = [
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];

try{
$this->dbh = new PDO($dsn, $this->user, $this->pass, $option);
} catch(PDOException $e){
die($e->getMessage());
}
}

public function query($query){


$this->stmt = $this->dbh->prepare($query);

9
}

public function bind($param, $value, $type = null){


if(is_null($type)){
switch (true) {
case is_int($value):
$type = PDO::PARAM_INT;
break;

case is_bool($value) :
$type = PDO::PARAM_BOOL;
break;

case is_null($value) :
$type = PDO::PARAM_NULL;
break;

default :
$type = PDO::PARAM_STR;
}
}
$this->stmt->bindValue($param, $value, $type);
}

public function execute(){


$this->stmt->execute();
}

public function resultSet(){


$this->execute();
return $this->stmt->fetchAll(PDO::FETCH_ASSOC);
}

public function single(){


$this->execute();
return $this->stmt->fetch(PDO::FETCH_ASSOC);
}

public function rowCount(){


return $this->stmt->rowCount();
}
}
?>

2.4.7. App/core/Flasher.php
File Flasher.php ini digunakan untuk memberikan pesan apakah fungsi CRUD
berhasil.
<?php

10
class Flasher{
public static function setFlash($pesan, $aksi, $tipe){
$_SESSION['flash'] = [
'pesan' => $pesan,
'aksi' => $aksi,
'tipe' => $tipe
];
}

public static function flash(){


if(isset($_SESSION['flash'])){
echo '<div class="alert alert-'.$_SESSION['flash']['tipe'].' alert-
dismissible fade show" role="alert"> Data Mahasiswa <strong>'.
$_SESSION['flash']['pesan'].'</strong>'.$_SESSION['flash']['aksi'].' <button
type="button" class="close" data-dismiss="alert" aria label="Close"><span
aria-hidden="true">&times;</span>
</button>
</div>';
unset($_SESSION['flash']);
}
}
}
?>

2.4.8. App/Models/Mahasiswa_model.php
File Mahasiswa_model.php ini berisi query yang digunakan untuk CRUD yang
mana saat fungsi controller dijalankan.
<?php

class Mahasiswa_model{
private $table = 'mahasiswa';
private $db;

public function __construct(){


$this->db = new Database;
}

public function getAllMahasiswa(){


$this->db->query('SELECT * FROM ' . $this->table);
return $this->db->resultSet();
}

public function tambahDataMahasiswa($data){


$query = "INSERT INTO mahasiswa
VALUES
('', :nama, :nim, :email, :jurusan)";

11
$this->db->query($query);
$this->db->bind('nama', $data['nama']);
$this->db->bind('nim', $data['nim']);
$this->db->bind('email', $data['email']);
$this->db->bind('jurusan', $data['jurusan']);

$this->db->execute();
return $this->db->rowCount();

public function hapusDataMahasiswa($id){


$query = "DELETE FROM mahasiswa WHERE id = :id";
$this->db->query($query);
$this->db->bind('id', $id);

$this->db->execute();

return $this->db->rowCount();
}

public function getAllMhasiswaById($id){


$this->db->query('SELECT * FROM ' . $this->table . ' WHERE
id=:id');
$this->db->bind('id',$id);
return $this->db->single();
}

public function updateMahasiswa($nim,$nama,$email,$jurusan){


$this->db->query('UPDATE ' . $this->table . ' SET nama=:nama,
email=:email, jurusan=:jurusan WHERE nim=:nim');
$this->db->bind('nim',$nim);
$this->db->bind('nama',$nama);
$this->db->bind('email',$email);
$this->db->bind('jurusan',$jurusan);
$this->db->execute();

return $this->db->rowCount();
}
}
?>

2.4.9. App/View/Mahasiswa/index.php
File.index.php pada direktori Mahasiswa ini adalah struktur tampilan data yang
akan ditampilkan pada website.
<div class="container mt-3">

12
<div class="row">
<div class="col-lg-6">
<?php Flasher::flash() ?>
</div>
</div>

<div class="row">
<div class="col-12">
<h4>Daftar Mahasiswa</h4>
<button type="button" class="btn btn-primary" data-toggle="modal"
data-target="#formModalTambah">Tambah Data Mahasiswa
</button>
<br><br>
<table class="table table-bordered">
<thead class="thead-dark">
<tr class="text-center">
<th scope="col">Nama</th>
<th scope="col">NIM</th>
<th scope="col">E-Mail</th>
<th scope="col">Jurusan</th>
<th scope="col">Aksi</th>
</tr>
</thead>
<tbody>
<?php foreach($data['mhs'] as $mhs): ?>
<tr>
<td><?= $mhs['nama'];?></td>
<td><?= $mhs['nim'];?></td>
<td><?= $mhs['email'];?></td>
<td><?= $mhs['jurusan'];?></td>
<td class="text-center">
<a href="<?= BASEURL; ?>/mahasiswa/edit/<?=
$mhs['id'] ?>" class="btn btn-success">Update</a>
<a href="<?= BASEURL; ?>/mahasiswa/hapus/<?=
$mhs['id']; ?>" class="btn btn-danger" onclick="return
confirm('Yakin ?');">Delete</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>

<!-- Modal tambah-->


<div class="modal fade" id="formModalTambah" tabindex="-1" role="dialog"
aria-labelledby="formModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">

13
<div class="modal-header">
<h5 class="modal-title" id="formModalLabel">Tambah Data
Mahasiswa</h5>
<button type="button" class="close" data-dismiss="modal" aria-
label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form action="<?= BASEURL; ?>/mahasiswa/tambah" method="POST">
<div class="form-group">
<label for="nama">Nama</label>
<input type="text" class="form-control" id="nama"
name="nama">
</div>

<div class="form-group">
<label for="nim">NIM</label>
<input type="text" class="form-control" id="nim" name="nim">
</div>

<div class="form-group">
<label for="email">E-Mail</label>
<input type="text" class="form-control" id="email"
name="email">
</div>

<div class="form-group">
<label for="jurusan">Jurusan</label>
<select class="form-control" id="jurusan" name="jurusan">
<option>Informatika</option>
<option>Sistem Informasi</option>
<option>Teknik Elektro</option>
<option>Teknik Komputer</option>
</select>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-
dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Tambah Data</button>
</div>
</div>
</div>
</div>
</div>

2.4.10. App/View/Mahasiswa/edit.php
File edit.php ini berisi tampilan form pada update data.

14
<div class="container mt-3">
<form action="<?= BASEURL; ?>/mahasiswa/updateMahasiswa"
method="POST" enctype="multipart/form-data">
<div class="form-group">
<label for="nim">NIM</label>
<input type="text" class="form-control" readonly="true" name="nim"
placeholder="NIM" value="<?= $data['mhs']['nim']; ?>">
</div>

<div class="form-group">
<label for="nama">Nama</label>
<input type="text" class="form-control" id="nama" name="nama"
value="<?= $data['mhs']['nama']; ?>">
</div>

<div class="form-group">
<label for="email">E-Mail</label>
<input type="text" class="form-control" id="email" name="email"
value="<?= $data['mhs']['email']; ?>">
</div>

<div class="form-group">
<label for="jurusan">Jurusan</label>
<select class="form-control" id="jurusan" name="jurusan" value="<?=
$data['mhs']['jurusan']; ?>">
<option>Informatika</option>
<option>Sistem Informasi</option>
<option>Teknik Elektro</option>
<option>Teknik Komputer</option>
</select>
</div>
<input type="submit" value="simpan" class="btn btn-success mt-2">
<a href="<?= BASEURL; ?>/mahasiswa" class="btn btn-primary mt-
2">Kembali</a>
</form>
</div>

2.4.11. App/View/templates/header.php
File header.php berisi bagian pembuka tag html dan juga untuk memanggil CSS.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Halaman <?= $data['judul'] ?></title>
<link rel="stylesheet" href="<?= BASEURL; ?>/css/bootstrap.min.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">

15
<div class="container">
<a class="navbar-brand" href="<?= BASEURL; ?>">PHP MVC</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-
target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-
label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="<?= BASEURL; ?
>/mahasiswa">Mahasiswa</a>
</li>
</ul>
</div>
</div>
</nav>

2.4.12. App/views/templates/footer.php
File Footer.php berisi javascript dan bagian penutup HTML.
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
integrity="sha384-
J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJ
oZ+n" crossorigin="anonymous"></script>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-
Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfo
oAo" crossorigin="anonymous"></script>
<script src="<?= BASEURL; ?>/js/bootstrap.min.js"></script>

</body>
</html>

2.4.13. App/init.php
Inisiasi atau bootsraping.
<?php

require_once 'core/App.php';
require_once 'core/Controller.php';
require_once 'core/Database.php';
require_once 'core/flasher.php';

require_once 'config/config.php';
?>

16
2.4.14. App/.htaccess
Digunakan untuk melarang user masuk ke folder app.
Options -Indexes

2.4.15. Public/index.php
File index.php ini sebagai file utama yang dijalan yg mana berada di folder
public.
<?php
if(!session_id()) session_start();
require_once '../app/init.php';

$app = new App;

2.4.16. Public/.htaccess
Digunakan untuk membaca url.
Options -Multiviews

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [L]

2.5. Screenshoot aplikasi MVC

Gambar 2.5 1. Tampil Data Mahasiswa

17
Gambar 2.5 2. Tambah Data Mahasiswa

Gambar 2.5 3. Update Data Mahasiswa

18
BAB III PENUTUP
3.1. Kesimpulan
Penggunaan PHP MVC ini sebuah program akan lebih mudah, mengingat semua
bagian dari program, telah dipetakan dalam struktur yang jelas, sehingga perubahan
desain tidak mengubah logic maupun data. Juga meminimalisir terjadinya perubahan
data secara tidak sengaja.

19
DAFTAR PUSTAKA
1. Arief Hidayat dan Bayu Surarso. 2012.
https://fti.uajy.ac.id/sentika/publikasi/makalah/2012/2012-5.pdf, 28 November 2019, Jam
19.56.

2. RU Rachmatyani. 2012.
https://repository.widyatama.ac.id/xmlui/bitstream/handle/123456789/7442/Bab
%202.pdf?sequence=10, 24 November 2019, Jam 11.02.

20

Anda mungkin juga menyukai