MEMBUAT HALAMAN ADMINISTRATOR DENGAN FRAMEWORK SENDIRI Setelah kita selesai membuat halaman front end (Halaman Pengunjung) saatnya kita buat halaman administrator yang akan digunakan untuk mengelola atau memanajamen data dari website sekolah kita. Pertama, buat folder administrator pada folder website_sekolah: Kemudian kita copy semua file framework yang sudah pernah kia buat sebelumnya yaitu framework LP3I_Purwokerto ke dalam folder Administrator. Maka coba kita buka di browser http://localhost/website_sekolah/administrator maka hasilnya sebagai berikut: 1
Setelah itu saatnya kita mulai membuat halaman administrator: 1. Setting File Konfigurasi untuk Administrator Langkah pertama sebelum membuat halaman administrator adalah setting file konfigurasi config.php. Langsung saja kita rubah: $page = (isset($_get['page']) && $_GET['page'])? $_GET['page'] : ''; // this configuration path for website define('path', 'http://localhost/website_sekolah/administrator/'); // isi path dari website anda define('site_url', PATH. 'index.php'); define('position_url', PATH. '?page='. $page); // this configuration for database website define('db_host', 'localhost'); // host yang di gunakan define('db_username', 'root'); // username host define('db_password', 'root'); // password host define('db_name', 'db_schools'); // database yang di gunakan 2. Membuat Template Halaman Administrator Seperti halaman front end, kita juga sebaiknya membuat template untuk halaman administrator. Jadi, kita perlu mengulang-ulang struktur HTML yang sama pada setiap halamannya. Untuk template HTML dan CSS yang digunakan pada halaman administrator saya share di DOSEN-PC. Langsung saja copy saja semua file resources yang digunakan pada templare, baik itu css, fonts, font-awesome, images, tinymce, dan js ke folder resources halaman administrator. Lihat gambar berikut: Kemudian kita buat file baru pada folder administrator/ modules/ views dengan nama template.view.php $page = (isset($_get['page']) && $_GET['page'])? $_GET['page'] : ''; <!DOCTYPE html> <html lang="en"> 2
<head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initialscale=1"> <meta name="description" content=""> <meta name="author" content=""> <title>smk Indonesia Administrator</title> <!-- Bootstrap Core CSS --> <link href=" echo PATH; resources/css/bootstrap.min.css" rel="stylesheet"> <!-- Custom CSS --> <link href=" echo PATH; resources/css/jquery.datatables.min.css" rel="stylesheet"> <link href=" echo PATH; resources/css/sb-admin.css" rel="stylesheet"> <!-- Custom Fonts --> <link href=" echo PATH; resources/fontawesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> </head> <body> <div id="wrapper"> <!-- Navigation --> <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle" datatoggle="collapse" data-target=".navbar-ex1-collapse"> <span class="sr-only">toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="index.php">smk Indonesia Administrator</a> <!-- Top Menu Items --> <ul class="nav navbar-right top-nav"> <li class="dropdown"> <a href="#" class="dropdown-toggle" datatoggle="dropdown"><i class="fa fa-user"></i> echo $data["login"]->nama_lengkap; <b class="caret"></b></a> <ul class="dropdown-menu"> <li> 3
<a href=" echo SITE_URL;?page=user&action=detail&id= echo $data["login"]->id_user; "><i class="fa fa-fw fa-user"></i> Profile</a> </li> <li> <a href=" echo SITE_URL;?page=user&action=update&id= echo $data["login"]->id_user; "><i class="fa fa-fw fa-gear"></i> Settings</a> </li> <li class="divider"></li> <li> <a href=" echo PATH; index.php?page=login&&action=logout"><i class="fa fa-fw fapower-off"></i> Log Out</a> </li> </ul> </li> </ul> <!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens --> <div class="collapse navbar-collapse navbar-ex1- collapse"> <ul class="nav navbar-nav side-nav"> <li if($page=="" $page=="home") echo 'class="active"'; > <a href=" echo PATH; "><i class="fa fa-fw fa-dashboard"></i> Dashboard</a> </li> <li> <a href="../" target="_blank"><i class="fa fa-fw fa-paper-plane"></i> Lihat Website</a> </li> <li if($page=="bukutamu") echo 'class="active"'; > <a href=" echo PATH;?page=bukutamu"><i class="fa fa-fw fa-book"></i> Bukutamu</a> </li> <li if($page=="kategori") echo 'class="active"'; > <a href=" echo PATH;?page=kategori"><i class="fa fa-fw fa-th-large"></i> Kategori Artikel</a> </li> <li if($page=="artikel") echo 'class="active"'; > <a href=" echo PATH;?page=artikel"><i class="fa fa-fw fa-newspaper-o"></i> Artikel</a> </li> <li if($page=="jurusan") echo 'class="active"'; > <a href=" echo PATH;?page=jurusan"><i class="fa fa-fw fa-graduation-cap"></i> Jurusan</a> </li> <li if($page=="siswa") echo 'class="active"'; > 4
<a href=" echo PATH;?page=siswa"><i class="fa fa-fw fa-users"></i> Data Siswa</a> </li> <li if($page=="alumni") echo 'class="active"'; > <a href=" echo PATH;?page=alumni"><i class="fa fa-fw fa-users"></i> Data Alumni</a> </li> <li if($page=="guru") echo 'class="active"'; > <a href=" echo PATH;?page=guru"><i class="fa fa-fw fa-users"></i> Data Guru</a> </li> <li if($page=="tentang") echo 'class="active"'; > <a href=" echo PATH;?page=tentang"><i class="fa fa-fw fa-building"></i> Tentang Sekolah</a> </li> <li if($page=="kontak") echo 'class="active"'; > <a href=" echo PATH;?page=kontak"><i class="fa fa-fw fa-phone-square"></i> Kontak</a> </li> <li if($page=="user") echo 'class="active"'; > <a href=" echo PATH;?page=user"><i class="fa fa-fw fa-users"></i> Manajemen User</a> </li> </ul> <!-- /.navbar-collapse --> </nav> <div id="page-wrapper"> <div class="container-fluid"> $view = new View($viewName); $view->bind('data', $data); $view->forcerender(); <!-- /.container-fluid --> <!-- /#page-wrapper --> <!-- /#wrapper --> <!-- jquery --> <script src=" echo PATH; resources/js/jquery.js"></script> <!-- Bootstrap Core JavaScript --> 5
<script src=" echo PATH; resources/js/bootstrap.min.js"></script> <!-- Data Tables JavaScript --> <script src=" echo PATH; resources/js/jquery.datatables.min.js"></script> <!-- TinyMCE JavaScript --> <script src=" echo PATH; resources/tinymce/tinymce.min.js"></script> <script type="text/javascript"> tinymce.init({ selector: ".editor" ); </script> <script type="text/javascript"> $(document).ready(function() { $(".data-table").datatable({ ); ); </script> "language": { "emptytable": "Tidak ada data" </body> </html> Setelah file template di buat, saatnya kita membuat controller baru dengan nama MainController.php di folder administrator/modules/controller. Source code nya sebagai berikut: namespace modules\controllers; use \Controller; class MainController extends Controller { protected $login; //Pengecekan apakah sudah login atau belum public function construct() { $this->login = isset($_session["login"])? $_SESSION["login"] : ''; if(!$this->login) { $this->redirect(site_url. "?page=login"); 6
protected function template($viewname, $data = array()) { $view = $this->view('template'); $view->bind('viewname', $viewname); $view->bind('data', array_merge($data, array('login' => $this->login))); Maksud dari MainController ini adalah sebagai template controller yang akan kita extended di setiap halaman, disini juga akan dilakukan pengecekan apakah sudah login atau belum, kalau sudah login maka user bisa mengecek halaman yang dituju, sedangkan kalau belum, maka user akan langsung diarahkan ke halaman login. 3. Dashboard (Halaman Utama Administrator) Halaman dashboard ini berguna untuk user yang sudah melakukan login agar bisa melihat menu navigasi dan statistik website. Untuk membuat halaman dashboard kita edit dulu controller HomeController.php yang sudah ada, dan membuat viewnya. Kita langsung ubah HomeController.php di folder administrator/modules/controllers menjadi seperti berikut: use \modules\controllers\maincontroller; class HomeController extends MainController { public function index() { $data = $_SESSION["login"]; $this->model('bukutamu'); $this->model('artikel'); $this->model('guru'); $this->model('kontak'); $this->template('home', array('userdata' => $data, 'total' => array( 'bukutamu' => $this->bukutamu->rows(), 'artikel' => $this->artikel->rows(), 'guru' => $this->guru->rows(), 'kontak' => $this->kontak->rows() ))); Untuk model karena sama seperti model yang digunakan pada halaman front end, maka copy kan saja semua model yang ada pada folder modules/models ke administrator/modules/models: 7
Selanjutnya kita buat view dengan nama home.view.php pada folder administrator/modules/views: <!-- Page Heading --> <div class="col-lg-12"> <h1 class="page-header"> Dashboard <small>statistik Website</small> </h1> <ol class="breadcrumb"> <li class="active"> <i class="fa fa-dashboard"></i> Dashboard </li> </ol> <!-- /.row --> <div class="col-lg-3 col-md-6"> <div class="panel panel-primary"> <div class="panel-heading"> <div class="col-xs-3"> <i class="fa fa-comments fa-5x"></i> <div class="col-xs-9 text-right"> <div class="huge"> echo $data["total"]["bukutamu"]; <div>bukutamu <a href=" echo PATH;?page=bukutamu"> <div class="panel-footer"> <span class="pull-left">tampilkan Semua</span> <span class="pull-right"><i class="fa faarrow-circle-right"></i></span> <div class="clearfix"> </a> <div class="col-lg-3 col-md-6"> 8
<div class="panel panel-green"> <div class="panel-heading"> <div class="col-xs-3"> <i class="fa fa-tasks fa-5x"></i> <div class="col-xs-9 text-right"> <div class="huge"> echo $data["total"]["artikel"]; <div>artikel <a href=" echo PATH;?page=artikel"> <div class="panel-footer"> <span class="pull-left">view Details</span> <span class="pull-right"><i class="fa faarrow-circle-right"></i></span> <div class="clearfix"> </a> <div class="col-lg-3 col-md-6"> <div class="panel panel-yellow"> <div class="panel-heading"> <div class="col-xs-3"> <i class="fa fa-users fa-5x"></i> <div class="col-xs-9 text-right"> <div class="huge"> echo $data["total"]["guru"]; <div>total Guru <a href=" echo PATH;?page=guru"> <div class="panel-footer"> <span class="pull-left">view Details</span> <span class="pull-right"><i class="fa faarrow-circle-right"></i></span> <div class="clearfix"> </a> <div class="col-lg-3 col-md-6"> <div class="panel panel-red"> <div class="panel-heading"> <div class="col-xs-3"> <i class="fa fa-phone-square fa-5x"></i> <div class="col-xs-9 text-right"> 9
<div class="huge"> echo $data["total"]["kontak"]; <div>total Kontak <a href=" echo PATH;?page=kontak"> <div class="panel-footer"> <span class="pull-left">view Details</span> <span class="pull-right"><i class="fa faarrow-circle-right"></i></span> <div class="clearfix"> </a> <!-- /.row --> <div class="col-lg-12"> <div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title"><i class="fa fa-barchart-o fa-fw"></i> Info User</h3> <div class="panel-body"> <div class="col-md-6"> >nama_lengkap; >username; >email; >no_hp; <table class="table"> <tbody> <th>nama Lengkap</th> <th>:</th> echo $data["userdata"]- <th>username</th> <th>:</th> echo $data["userdata"]- <th>email</th> <th>:</th> echo $data["userdata"]- <th>no. HP</th> <th>:</th> echo $data["userdata"]- 10
>alamat; <th>alamat</th> <th>:</th> echo $data["userdata"]- </tbody> </table> <div class="col-md-6"> <table class="table"> <tbody> <th>last Login</th> <th>:</th> echo date('d-m-y'); <th>ip Address</th> <th>:</th> echo $_SERVER["REMOTE_ADDR"]; <th>server</th> <th>:</th> echo $_SERVER['SERVER_NAME']; <th>browser</th> <th>:</th> echo $_SERVER["HTTP_USER_AGENT"]; </tbody> </table> <!-- /.row --> Saat ini, kita belum bisa melihat hasil tampilan Dashboard, karena diperlukan login terlebih dahulu yang akan kita buat pada pembahasan berikutnya. 11
4. Halaman Login Saatnya kita membuat halaman login, halaman login ini berguna untuk user melakukan login pada halaman ini. Apabila user sesuai, maka login akan berhasil dan user akan bisa melakukan manajeman data, bila tidak maka user tidak bisa login untuk melakukan manajeman data. Kita buat dulu controllernya yaitu LoginController.php di folder Administrator/modules/controllers : class LoginController extends Controller { public function index() { ""; $login = isset($_session["login"])? $_SESSION["login"] : if($login) { $this->redirect("index.php"); $message = array(); if($_server["request_method"] == "POST") { $message = array( 'success' => false, 'message' => 'Maaf Username/Password Salah.' ); $username = isset($_post["username"])? $_POST["username"] : ""; $password = isset($_post["password"])? $_POST["password"] : ""; $this->model('user'); $user = $this->user->getwhere(array( 'username' => $username, 'password' => md5($password) )); if(count($user) > 0) { $message = array( 'success' => true, 'message' => 'Selamat anda berhasil login.' ); $_SESSION["login"] = $user[0]; echo '<meta http-equiv="refresh" content="1;url=index.php">'; $view = $this->view('login')->bind('message', $message); public function logout() { unset($_session["login"]); 12
$this->redirect('index.php'); Pada controller tersebut kita memanggil $this->model('user');karena model user belum ada, jadi kita akan membuat file model dengan nama UserModel.php : class UserModel extends Model{ protected $tablename = "user"; Selanjutnya, kita buat view untuk login nya dengan nama login.view.php : <!DOCTYPE html> <!--[if IE 8]> <html lang="en" class="ie8"> <![endif]--> <!--[if IE 9]> <html lang="en" class="ie9"> <![endif]--> <!--[if!ie]><!--> <html lang="en"> <!--<![endif]--> <head> <meta charset="utf-8" /> <title>smk Negeri Indonesia</title> <!-- CSS --> <link href="resources/css/bootstrap.min.css" rel="stylesheet" /> <link href="resources/css/jquery.datatables.min.css" rel="stylesheet" /> <link href="resources/css/style.css" rel="stylesheet" /> <!-- Javascript for animation --> <script type="text/javascript" src="resources/js/jquery.min.js"></script> <script type="text/javascript" src="resources/js/jquery.datatables.min.js"></script> <script type="text/javascript" src="resources/js/bootstrap.min.js"></script> <script type="text/javascript" src="resources/js/expand.js"></script> <script type="text/javascript" src="resources/js/common.js"></script> </head> <body> <div class="container"> <form class="form-signin" method="post"> 13
<div class="form-group"> <div class="text-center text-header"> <img src=" echo PATH; resources/images/logo.png" style="width:75px;" alt="logo"> <h1>smk Negeri Indonesia</h1> <h2>login Administrator</h2> <hr> if(count($message)) { <div class="alert if($message["success"] == false) echo "alert-danger"; else echo "alert-success"; "> echo $message["message"]; <div class="form-group"> <label for="input-username">username</label> <input type="text" id="input-username" name="username" class="form-control" placeholder="ex : davidnaista" required autofocus> <div class="form-group"> <label for="input-password">password</label> <input type="password" name="password" id="inputpassword" class="form-control" required> <button class="btn btn-primary btn-block" type="submit">sign in</button> </form> <!-- /container --> </body> </html> Setelah selesai, sekarng kita inputkan data user di database supaya bisa login. Contoh untuk sql insert: INSERT INTO `user` VALUES (, Administrator, admin@mail.com,, Purwokerto, admin, MD5( admin ), ); Untuk Password kita acak menggunakan enkripsi md5 (MD5( admin )) supaya orang lain tidak tahu password asli kita. Sekarang coba ketikkan alaman url halaman administrator pada browser: 14
Berikut tampilan bila berhasil dan tidak berhasil login: 5. Modul Buku Tamu Pada module buku tamu, kita akan membuat dua action, yaitu untuk melihat data dan menghapus data. Kita buat dulu controllernya dengan nama BukutamuController.php: use \modules\controllers\maincontroller; class BukutamuController extends MainController { public function index() { 15
$this->model('bukutamu'); $data = $this->bukutamu->get(); $this->template('bukutamu', array('bukutamu' => $data)); public function delete() { $id = isset($_get["id"])? $_GET["id"] : 0; $this->model('bukutamu'); $id)); $delete = $this->bukutamu->delete(array('id_bukutamu' => if($delete) { $this->back(); Pada file controller bukutamu terdapat dua fungsi yaitu index() dan delete(), dimana fungsi index secara default akan menampilkan semua data yang ada pada buku tamu, dan fungsi delete untuk menghapus data pada buku tamu berdasarkan id_bukutamu yang dikirim. Sekarang kita buat view untuk buku tamu dengan nama bukutamu.view.php : <div class="col-lg-12"> <h1>bukutamu</h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li class="active"><i class="fa fa-book"></i> Bukutamu</li> </ol> <div class="col-lg-12"> <div class="table-responsive"> <table class="table table-hover data-table tablestriped tablesorter"> <thead> <th class="header">no</th> <th class="header">nama Lengkap</th> <th class="header">email</th> <th class="header">website</th> 16
<th class="header">komentar</th> <th class="header">action</th> </thead> <tbody> $no = 1; foreach($data["bukutamu"] as $bukutamu) { echo $no; echo $bukutamu->full_name; echo $bukutamu->email; echo $bukutamu->website; echo $bukutamu->comment; <a class="btn btn-danger" onclick="return confirm('are you sure delete this data?');" href=" echo SITE_URL;?page=bukutamu&&action=delete&&id= echo $bukutamu- >id_bukutamu; ">Delete</a> $no++; </tbody> </table> Untuk mencobanya silahkan tampilkan pada browser dengan klik menu Bukutamu. 6. Modul Kategori Artikel Pada modul kategori ini, kita akan membuat empat action, yaitu untuk melihat data, menambah data, melakukan update, dan menghapus data. Langsung saja kita buat controllernya dengan nama KategoriController.php : use \modules\controllers\maincontroller; class KategoriController extends MainController { public function index() { $this->model('kategori'); $data = $this->kategori->get(); $this->template('kategori', array('kategori' => $data)); public function delete() { $id = isset($_get["id"])? $_GET["id"] : 0; $this->model('kategori'); 17
$id)); $delete = $this->kategori->delete(array('id_kategori' => if($delete) { $this->back(); public function insert() { $this->model('kategori'); $error = array(); $success = null; if($_server["request_method"] == "POST") { $kategori = isset($_post["kategori"])? $_POST["kategori"] : ""; if(empty($kategori) $kategori == "") { array_push($error, "Kategori artikel harus di isi."); if(count($error) == 0) { $insert = $this->kategori->insert( array( 'nama_kategori' => $kategori ) ); if($insert) { $success = "Data Berhasil di simpan."; $this->template('frmkategori', array('error' => $error, 'success' => $success, 'title' => 'Tambah Kategori')); public function update() { $this->model('kategori'); $error = array(); $success = null; $id = isset($_get["id"])? $_GET["id"] : ""; $data = $this->kategori->getwhere(array( 'id_kategori' => $id )); if(count($data) == 0) $this->redirect(path. '?page=kategori'); if($_server["request_method"] == "POST") { $kategori = isset($_post["kategori"])? $_POST["kategori"] : ""; if(empty($kategori) $kategori == "") { array_push($error, "Kategori artikel harus di isi."); $updatearraydata = array( 'nama_kategori' => $kategori ); 18
if(count($error) == 0) { $update = $this->kategori- >update($updatearraydata, array('id_kategori' => $id)); if($update) { $success = "Data Berhasil di simpan."; $this->template('frmkategori', array('kategori' => $data[0],'error' => $error, 'success' => $success, 'title' => 'Update Kategori')); Pada file controller kategori tersebut terdapat empat fungsi, yaitu: a. Fungsi Index() secara default akan menampilkan semua data yang ada pada kategori b. Fungsi insert() akan digunakan untuk melakukan input data kategori c. Fungsi delete() untuk menghapus data pada kategori berdasarkan id_kategori yang dikirim d. Fungsi Update() untuk melakukan edit data kategori yang sudah ada Selanjutnya, kita buat view untuk kategori dengan cara membuat file dengan nama Kategori.view.php : <div class="col-lg-12"> <h1>kategori</h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li class="active"><i class="fa fa-th-large"></i> Kategori</li> </ol> <div class="col-lg-12"> <div class="form-group"> <a href=" echo PATH;?page=kategori&&action=insert" class="btn btn-primary">+ Tambah Data Baru</a> <div class="table-responsive"> <table class="table table-hover data-table tablestriped tablesorter"> <thead> <th class="header" style="width: 40px;">No</th> <th class="header">kategori</th> 19
<th class="header" style="width:100px;">action</th> </thead> <tbody> $no = 1; foreach($data["kategori"] as $kategori) { echo $no; echo $kategori- >nama_kategori; <a class="btn btn-warning btn-sm" href=" echo SITE_URL;?page=kategori&&action=update&&id= echo $kategori- >id_kategori; ">Edit</a> <a class="btn btn-danger btn-sm" href=" echo SITE_URL;?page=kategori&&action=delete&&id= echo $kategori- >id_kategori; " onclick="return confirm('are you sure delete this data?');">delete</a> $no++; </tbody> </table> Kemudian kita buat view sebagai form untuk melakukan insert dan update data, yaitu dengan file view bernama frmkategori.view.php : <div class="col-lg-12"> <h1> echo $data["title"]; </h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li><a href=" SITE_URL;?page=kategori"><i class="fa fa-th-large"></i> Kategori</a></li> <li class="active"><i class="fa fa-pencil"></i> echo $data["title"]; </li> </ol> <div class="col-lg-12"> 20
if(isset($data["error"]) && count($data["error"]) > 0) { <div class="alert alert-danger" role="alert"> <a href="#" class="close" data-dismiss="alert" aria-label="close"> </a> <ul class="list-square"> foreach($data["error"] as $error) { <li> echo $error; </li> </ul> else if(isset($data["success"])) { <div class="alert alert-success"> <a href="#" class="close" data-dismiss="alert" aria-label="close"> </a> echo $data["success"]; <meta http-equiv="refresh" content="1;url= echo PATH;?page=kategori"> <form method="post" role="form"> <table class="table-responsive table"> <tbody> <td style="width: 200px;"><label>Nama Kategori</label> <td style="width: 1px;">: <input type="text" name="kategori" if(isset($data["kategori"])) echo 'value="'. $data["kategori"]- >nama_kategori. '"'; class="form-control"> <button type="submit" class="btn btnprimary">submit</button> <a class="btn btn-warning" href=" echo PATH;?page=kategori">Tampilkan Semua Kategori</a> </tbody> 21
</table> </form> Mari kita coba tampilkan di browser dengan klik menu Kategori Artikel, coba kita tambahkan kategori baru. 7. Modul Artikel Setelah kita membuat modul kategori artikel, saatnya kita membuat modul artikel. Sama seperti Modul sebelumnya kita akan menambahkan beberapa action. Langsung kita buat controller ArtikelController.php : use \modules\controllers\maincontroller; class ArtikelController extends MainController { public function index() { $this->model('artikel'); $data = $this->artikel->getjoin('kategori', array( 'artikel.id_kategori' => 'kategori.id_kategori' ), 'JOIN' ); $this->template('artikel', array('artikel' => $data)); public function delete() { $id = isset($_get["id"])? $_GET["id"] : 0; $this->model('artikel'); $artikel = $this->artikel->getwhere(array( 'id_artikel' => $id )); if(file_exists('../public/images/artikel/'. $artikel[0]- >images)) { unlink('../public/images/artikel/'. $artikel[0]- >images); $delete = $this->artikel->delete(array('id_artikel' => $id)); if($delete) { $this->back(); 22
public function insert() { $this->model("kategori"); $data = $this->kategori->get(); $this->model('artikel'); $error $success = array(); = null; if($_server["request_method"] == "POST") { $judul = isset($_post["judul"])? $_POST["judul"] : ""; $kategori = isset($_post["kategori"])? $_POST["kategori"] : ""; $penulis = isset($_post["penulis"])? $_POST["penulis"] : ""; $gambar = isset($_files["images"])? $_FILES["images"] : ""; $isi = isset($_post["isi"])? $_POST["isi"] : ""; if(empty($judul) $judul == "") { array_push($error, "Judul harus di isi."); if(empty($kategori) $kategori == "") { array_push($error, "Kategori harus di isi."); if(empty($penulis) $penulis == "") { array_push($error, "Penulis harus di isi."); if(empty($isi) $isi == "") { array_push($error, "Isi artikel harus di isi."); if(!empty($gambar["name"]) && $gambar["type"]!= 'image/jpg' && $gambar["type"]!= 'image/jpeg' && $gambar["type"]!= 'image/png') { array_push($error, "Gambar hanya boleh.jpg/.png"); if(count($error) == 0) { $imagename = $gambar["name"]; if($gambar["name"]) { $imagename = date("h_i_s_y_m_d_"). str_replace(" ","_", $judul). '.jpg'; move_uploaded_file($gambar["tmp_name"], '../public/images/artikel/'. $imagename); $insert = $this->artikel->insert( array( 'id_kategori' => $kategori, 'judul' => $judul, 23
'penulis' 'isi' 'tanggal' 'waktu' 'images' => $penulis, => $isi, => date('y-m-d'), => date('h:i:s'), => $imagename ) ); if($insert) { $success = "Data Berhasil di simpan."; $this->template('frmartikel', array('kategori' => $data,'error' => $error, 'success' => $success, 'title' => 'Tambah Artikel')); public function update() { $this->model("kategori"); $data = $this->kategori->get(); $this->model('artikel'); $id = isset($_get["id"])? $_GET["id"] : '0'; $artikel = $this->artikel->getwhere(array( 'id_artikel' => $id )); $error = array(); $success = null; if($_server["request_method"] == "POST") { $judul = isset($_post["judul"])? $_POST["judul"] : ""; $kategori = isset($_post["kategori"])? $_POST["kategori"] : ""; $penulis = isset($_post["penulis"])? $_POST["penulis"] : ""; $gambar = isset($_files["images"])? $_FILES["images"] : ""; $isi = isset($_post["isi"])? $_POST["isi"] : ""; if(empty($judul) $judul == "") { array_push($error, "Judul harus di isi."); if(empty($kategori) $kategori == "") { array_push($error, "Kategori harus di isi."); if(empty($penulis) $penulis == "") { array_push($error, "Penulis harus di isi."); if(empty($isi) $isi == "") { array_push($error, "Isi artikel harus di isi."); if(!empty($gambar["name"]) && $gambar["type"]!= 'image/jpg' && $gambar["type"]!= 'image/jpeg' && $gambar["type"]!= 'image/png') { array_push($error, "Gambar hanya boleh.jpg/.png"); 24
if(count($error) == 0) { $imagename = $gambar["name"]; $updatearraydata = array( 'id_kategori' => $kategori, 'judul' => $judul, 'penulis' => $penulis, 'isi' => $isi, 'tanggal' => date('y-m-d'), 'waktu' => date('h:i:s') ); if($gambar["name"]) { $imagename = date("h_i_s_y_m_d_"). str_replace(" ","_", $judul). '.jpg'; $updatearraydata = array( 'id_kategori' => $kategori, 'judul' => $judul, 'penulis' => $penulis, 'isi' => $isi, 'tanggal' => date('y-m-d'), 'waktu' => date('h:i:s'), 'images' => $imagename ); if(file_exists('../public/images/artikel/'. $artikel[0]->images)) { unlink('../public/images/artikel/'. $artikel[0]->images); move_uploaded_file($gambar["tmp_name"], '../public/images/artikel/'. $imagename); $update = $this->artikel- >update($updatearraydata, array('id_artikel' => $id)); if($update) { $success = "Data Berhasil di simpan."; $this->template('frmartikel', array('kategori' => $data, 'artikel' => $artikel[0], 'error' => $error, 'success' => $success, 'title' => 'Update Artikel')); Pada file controller artikel tersebut terdapat empat fungsi, yaitu: a. Fungsi Index() secara default akan menampilkan semua data yang ada pada artikel website kita b. Fungsi insert() akan digunakan untuk melakukan input data artikel c. Fungsi delete() untuk menghapus data pada artikel berdasarkan id_artikel yang dikirim d. Fungsi Update() untuk melakukan edit data artikel berdasarkan id_artikel yang dikirim 25
Selanjutnya, kita buat view untuk artikeli dengan cara membuat file dengan nama artikel.view.php : <div class="col-lg-12"> <h1>artikel</h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li class="active"><i class="fa fa-newspaper-o"></i> Artikel</li> </ol> <div class="col-lg-12"> <div class="form-group"> <a href=" echo PATH;?page=artikel&&action=insert" class="btn btn-primary">+ Tambah Data Baru</a> <div class="table-responsive"> <table class="table table-hover data-table tablestriped tablesorter"> <thead> <th class="header">no</th> <th class="header">tanggal</th> <th class="header">gambar</th> <th class="header">kategori</th> <th class="header">judul</th> <th class="header">penulis</th> <th class="header">isi</th> <th class="header" style="width:100px;">action</th> </thead> <tbody> $no = 1; foreach($data["artikel"] as $artikel) { echo $no; <h6> echo $artikel->waktu; </h6> <h6> echo $artikel->tanggal; </h6> if($artikel->images) { 26
<img src="../public/images/artikel/ echo $artikel->images; " style="width: 100px;" alt=" echo $artikel->judul; "> echo $artikel- >nama_kategori; echo $artikel->judul; echo $artikel->penulis; echo substr(strip_tags($artikel->isi), 0,100); <a class="btn btn-warning btn-sm" href=" echo SITE_URL;?page=artikel&&action=update&&id= echo $artikel- >id_artikel; ">Edit</a> <a class="btn btn-danger btn-sm" href=" echo SITE_URL;?page=artikel&&action=delete&&id= echo $artikel- >id_artikel; " onclick="return confirm('are you sure delete this data?');">delete</a> $no++; </tbody> </table> Kemudian kita buat view sebagai form untuk melakukan insert, update data, yaitu dengan view frmartikel.view.php : <div class="col-lg-12"> <h1> echo $data["title"]; </h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li><a href=" SITE_URL;?page=artikel"><i class="fa fa-newspaper-o"></i> Artikel</a></li> <li class="active"><i class="fa fa-pencil"></i> echo $data["title"]; </li> </ol> 27
<div class="col-lg-12"> if(isset($data["error"]) && count($data["error"]) > 0) { <div class="alert alert-danger" role="alert"> <a href="#" class="close" data-dismiss="alert" aria-label="close"> </a> <ul class="list-square"> foreach($data["error"] as $error) { <li> echo $error; </li> </ul> else if(isset($data["success"])) { <div class="alert alert-success"> <a href="#" class="close" data-dismiss="alert" aria-label="close"> </a> echo $data["success"]; <meta http-equiv="refresh" content="1;url= echo PATH;?page=artikel"> <form method="post" role="form" enctype="multipart/formdata"> <table class="table-responsive table"> <tbody> <td style="width: 200px;"><label>Judul</label> <td style="width: 1px;">: <input type="text" name="judul" if(isset($data["artikel"])) echo 'value="'. $data["artikel"]- >judul. '"'; class="form-control"> <td style="width: 200px;"><label>Kategori</label> <td style="width: 1px;">: 28
name="kategori"> $kategori) { <select class="form-control" foreach($data["kategori"] as <option if(isset($data["artikel"])){ if($data["artikel"]- >id_kategori == $kategori->id_kategori) echo 'selected'; value=" echo $kategori->id_kategori; "> echo $kategori->nama_kategori; </option> </select> <td style="width: 200px;"><label>Penulis</label> <td style="width: 1px;">: <input type="text" if(isset($data["artikel"])) echo 'value="'. $data["artikel"]- >penulis. '"'; name="penulis" class="form-control"> <td style="width: 200px;"><label>Gambar</label> <td style="width: 1px;">: <input type="file" name="images" class="form-control"> if(isset($data["artikel"])) { if($data["artikel"]->images){ <img src="../public/images/artikel/ echo $data["artikel"]- >images; " alt="images" style="width:100%; max-width: 200px;"> <td style="width: 200px;"><label>Isi</label> <td style="width: 1px;">: 29
<textarea class="form-control editor" name="isi" rows="7"> if(isset($data["artikel"])) echo $data["artikel"]->isi; </textarea> <button type="submit" class="btn btnprimary">submit</button> <a class="btn btn-warning" href=" echo PATH;?page=artikel">Tampilkan Semua Artikel</a> </tbody> </table> </form> Coba tampilkan di browser dengan klik menu artikel. 8. Modul Jurusan Modul jurusan digunakan untuk melakukan manajemen data jurusan yang ada di website kita. Pada modul jurusan, kita akan menambah empat action yang sama seperti modul sebelumnya. Untuk modul jurusan karena hampir mirip dengan modul kategori. Maka saya copy kan di DOSEN-PC. 9. Modul Siswa Modul sisea digunakan untuk memanajemen data siswa yang ada di website kita. Pada modul siswa kita akan membuat lima action yaitu, view, detail, add, update, dan delete data. Kita buat dulu controllernya yaitu SiswaController.php: use \modules\controllers\maincontroller; class SiswaController extends MainController { public function index() { $this->model('siswa'); $data = $this->siswa->getjoin('jurusan', array( 'jurusan.id_jurusan' => 'siswa.id_jurusan' ), 'JOIN', array( 'status' => "Siswa" ) ); $this->template('siswa', array('siswa' => $data, 'title' => 'Siswa')); public function detail() { $id = isset($_get["id"])? $_GET["id"] : '0'; $this->model('siswa'); $data = $this->siswa->getjoin('jurusan', array( 'jurusan.id_jurusan' => 'siswa.id_jurusan' 30
); ), 'JOIN', array( 'id_siswa' => $id ) $this->template('detailsiswa', array('siswa' => $data[0])); public function delete() { $id = isset($_get["id"])? $_GET["id"] : 0; $this->model('siswa'); $data = $this->siswa->getwhere(array( 'id_siswa' => $id )); $delete = $this->siswa->delete(array('id_siswa' => $id)); if($delete && $data[0]->images) { unlink('../public/images/siswa/'. $data[0]->images); $this->back(); public function insert() { $this->model("jurusan"); $data = $this->jurusan->get(); $this->model('siswa'); $error = array(); $success = null; if($_server["request_method"] == "POST") { $nis = isset($_post["nis"])? $_POST["nis"] : ""; $nama = isset($_post["nama_lengkap"])? $_POST["nama_lengkap"] : ""; $jurusan = isset($_post["jurusan"])? $_POST["jurusan"] : ""; $nohp = isset($_post["no_hp"])? $_POST["no_hp"] : ""; $angkatan = isset($_post["angkatan"])? $_POST["angkatan"] : ""; $alamat = isset($_post["alamat"])? $_POST["alamat"] : ""; $status = isset($_post["status"])? $_POST["status"] : ""; $jeniskelamin = isset($_post["jenis_kelamin"])? $_POST["jenis_kelamin"] : ""; $foto = isset($_files["images"])? $_FILES["images"] : ""; if(empty($nis) $nis == "") { array_push($error, "NIS harus di isi."); if(empty($nama) $nama == "") { array_push($error, "Nama harus di isi."); if(empty($jurusan) $jurusan == "") { 31
array_push($error, "Jurusan harus di isi."); if(empty($angkatan) $angkatan == "") { array_push($error, "Angkatan harus di isi."); if(!empty($foto["name"]) && $foto["type"]!= 'image/jpg' && $foto["type"]!= 'image/jpeg' && $foto["type"]!= 'image/png') { array_push($error, "Gambar hanya boleh.jpg/.png"); if(count($error) == 0) { $imagename = $foto["name"]; if($foto["name"]) { $imagename = date("h_i_s_y_m_d_"). str_replace(" ","_", $nama). '.jpg'; move_uploaded_file($foto["tmp_name"], '../public/images/siswa/'. $imagename); $insert = $this->siswa->insert( array( 'nis' => $nis, 'nama_lengkap' => $nama, 'id_jurusan' => $jurusan, 'jenis_kelamin' => $jeniskelamin, 'nomor_hp' => $nohp, 'angkatan' => $angkatan, 'status' => $status, 'alamat' => $alamat, 'images' => $imagename ) ); if($insert) { $success = "Data Berhasil di simpan."; $this->template('frmsiswa', array('jurusan' => $data,'error' => $error, 'success' => $success, 'title' => 'Tambah Siswa / Alumni')); public function update() { $id = isset($_get["id"])? $_GET["id"] : '0'; $this->model("jurusan"); $listjurusan = $this->jurusan->get(); $this->model('siswa'); $data = $this->siswa->getjoin('jurusan', array( 'jurusan.id_jurusan' => 'siswa.id_jurusan' ), 'JOIN', array( 'id_siswa' => $id ) ); 32
$error = array(); $success = null; if($_server["request_method"] == "POST") { $nis = isset($_post["nis"])? $_POST["nis"] : ""; $nama = isset($_post["nama_lengkap"])? $_POST["nama_lengkap"] : ""; $jurusan = isset($_post["jurusan"])? $_POST["jurusan"] : ""; $nohp = isset($_post["no_hp"])? $_POST["no_hp"] : ""; $angkatan = isset($_post["angkatan"])? $_POST["angkatan"] : ""; $alamat = isset($_post["alamat"])? $_POST["alamat"] : ""; $status = isset($_post["status"])? $_POST["status"] : ""; $jeniskelamin = isset($_post["jenis_kelamin"])? $_POST["jenis_kelamin"] : ""; $foto = isset($_files["images"])? $_FILES["images"] : ""; if(empty($nis) $nis == "") { array_push($error, "NIS harus di isi."); if(empty($nama) $nama == "") { array_push($error, "Nama harus di isi."); if(empty($jurusan) $jurusan == "") { array_push($error, "Jurusan harus di isi."); if(empty($angkatan) $angkatan == "") { array_push($error, "Angkatan harus di isi."); if(!empty($foto["name"]) && $foto["type"]!= 'image/jpg' && $foto["type"]!= 'image/jpeg' && $foto["type"]!= 'image/png') { array_push($error, "Gambar hanya boleh.jpg/.png"); if(count($error) == 0) { $imagename = $foto["name"]; $dataupdate = array( 'nis' => $nis, 'nama_lengkap' => $nama, 'id_jurusan' => $jurusan, 'jenis_kelamin' => $jeniskelamin, 'nomor_hp' => $nohp, 'angkatan' => $angkatan, 'status' => $status, 'alamat' => $alamat ); if($foto["name"]) { 33
$imagename = date("h_i_s_y_m_d_"). str_replace(" ","_", $nama). '.jpg'; unlink('../public/images/siswa/'. $data[0]- >images); move_uploaded_file($foto["tmp_name"], '../public/images/siswa/'. $imagename); $dataupdate = array( 'nis' => $nis, 'nama_lengkap' => $nama, 'id_jurusan' => $jurusan, 'jenis_kelamin' => $jeniskelamin, 'nomor_hp' => $nohp, 'angkatan' => $angkatan, 'status' => $status, 'alamat' => $alamat, 'images' => $imagename ); $update = $this->siswa->update($dataupdate, array('id_siswa' => $id)); if($update) { $success = "Data Berhasil di simpan."; $this->template('frmsiswa', array('jurusan' => $listjurusan, 'siswa' => $data[0], 'error' => $error, 'success' => $success, 'title' => 'Update Siswa / Alumni')); Pada file controller siswa tersebut terdapat lima fungsi, yaitu: a. Fungsi Index() secara default akan menampilkan semua data yang ada pada tabel siswa yang memiliki status siswa di database b. Fungsi insert() akan digunakan untuk melakukan input data siswa c. Fungsi delete() untuk menghapus data pada siswa berdasarkan id_siswa yang dikirim d. Fungsi Update() untuk melakukan edit data siswa berdasarkan id _siswa yang dikirim e. Fungsi detail() digunakan untuk melihat detail siswa berdasarkan id_siswa yang dikirim Selanjutnya, kita membuat file view untuk daftar siswa, dengan cara membuat file dengan nama siswa.view.php : <div class="col-lg-12"> <h1> echo $data["title"]; </h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li class="active"><i class="fa fa-users"></i> echo $data["title"]; </li> </ol> 34
<div class="col-lg-12"> <div class="form-group"> <a href=" echo PATH;?page=siswa&&action=insert" class="btn btn-primary">+ Tambah Data Baru</a> <div class="table-responsive"> <table class="table table-hover data-table tablestriped tablesorter"> <thead> <th class="header" style="width: 40px;">No</th> <th class="header">foto</th> <th class="header">nis</th> <th class="header">nama</th> <th class="header">jurusan</th> <th class="header">jenis Kelamin</th> <th class="header">angkatan</th> <th class="header" style="width:150px;">action</th> </thead> <tbody> $no = 1; foreach($data["siswa"] as $siswa) { echo $no; if($siswa->images) { <img src="../public/images/siswa/ echo $siswa->images; " style="width: 50px;" alt=" echo $siswa->images; "> else{ <img src="../resources/images/no_user.jpg" style="width: 50px;" alt=" echo $siswa->images; "> echo $siswa->nis; echo $siswa->nama_lengkap; 35
echo $siswa->nama_jurusan; echo $siswa->jenis_kelamin; echo $siswa->angkatan; <a class="btn btn-primary btn-sm" href=" echo SITE_URL;?page=siswa&&action=detail&&id= echo $siswa->id_siswa; ">Detail</a> <a class="btn btn-warning btn-sm" href=" echo SITE_URL;?page=siswa&&action=update&&id= echo $siswa->id_siswa; ">Edit</a> <a class="btn btn-danger btn-sm" href=" echo SITE_URL;?page=siswa&&action=delete&&id= echo $siswa->id_siswa; " onclick="return confirm('are you sure delete this data?');">delete</a> $no++; </tbody> </table> Selanjutnya kita buat view untuk menampilkan detail siswa yang kita pilih dengan nama detailsiswa.view.php: <div class="col-lg-12"> <h1>detail Siswa / Alumni</h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li class="active"><i class="fa fa-users"></i> Detail Siswa / Alumni</li> </ol> <div class="col-lg-12"> <table class="table-responsive table"> <tbody> <td style="width: 200px;"><b>Nama Lengkap</b> <td style="width: 1px;">: echo $data["siswa"]->nama_lengkap; 36
<b>nis</b> <td style="width: 1px;">: echo $data["siswa"]->nis; <b>jurusan</b> <td style="width: 1px;">: echo $data["siswa"]->nama_jurusan; <b>status</b> <td style="width: 1px;">: <span class="label label-primary" style="font-size:15px;"> echo $data["siswa"]->status; </span> <b>jenis Kelamin</b> <td style="width: 1px;">: echo $data["siswa"]->jenis_kelamin; <b>no. HP</b> <td style="width: 1px;">: echo $data["siswa"]->nomor_hp; <b>angkatan</b> <td style="width: 1px;">: echo $data["siswa"]->angkatan; <b>alamat</b> <td style="width: 1px;">: echo $data["siswa"]->alamat; <b>foto</b> <td style="width: 1px;">: 37
if($data["siswa"]->images) { <img src="../public/images/siswa/ echo $data["siswa"]->images; " style="max-width: 200px;" alt=" echo $data["siswa"]->nama_lengkap; "> else{ <img src="../resources/images/no_user.jpg" style="max-width: 200px;" alt=" echo $data["siswa"]->nama_lengkap; "> if($data["siswa"]->status == "Siswa") { <a class="btn btn-primary" href=" echo SITE_URL;?page=siswa">Daftar Siswa</a> else { <a class="btn btn-primary" href=" echo SITE_URL;?page=alumni">Daftar Alumni</a> <a class="btn btn-warning" href=" echo SITE_URL;?page=siswa&&action=update&&id= echo $data["siswa"]->id_siswa; ">Edit</a> <a class="btn btn-danger" href=" echo SITE_URL;?page=siswa&&action=delete&&id= echo $data["siswa"]->id_siswa; " onclick="return confirm('are you sure delete this data?');">delete</a> </tbody> </table> Kemudian kita buat view sebagai form untuk melakukan insert dan update data siswa, yaitu dengan file view bernama frmsiswa.view.php : 38
<div class="col-lg-12"> <h1> echo $data["title"]; </h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li><a href=" SITE_URL;?page=siswa"><i class="fa fa-newspaper-o"></i> Siswa / Alumni</a></li> <li class="active"><i class="fa fa-pencil"></i> echo $data["title"]; </li> </ol> <div class="col-lg-12"> if(isset($data["error"]) && count($data["error"]) > 0) { <div class="alert alert-danger" role="alert"> <a href="#" class="close" data-dismiss="alert" aria-label="close"> </a> <ul class="list-square"> foreach($data["error"] as $error) { <li> echo $error; </li> </ul> else if(isset($data["success"])) { <div class="alert alert-success"> <a href="#" class="close" data-dismiss="alert" aria-label="close"> </a> echo $data["success"]; <meta http-equiv="refresh" content="1;url= echo PATH;?page= echo strtolower($_post["status"]); "> <form method="post" role="form" enctype="multipart/formdata"> <table class="table-responsive table"> <tbody> 39
<td style="width: 200px;"><label>NIS</label> <td style="width: 1px;">: <input type="text" if(isset($data["siswa"])) echo 'value="'. $data["siswa"]->nis. '"'; name="nis" class="form-control"> <label>nama Lengkap</label> <td style="width: 1px;">: <input type="text" name="nama_lengkap" if(isset($data["siswa"])) echo 'value="'. $data["siswa"]- >nama_lengkap. '"'; class="form-control"> <label>jurusan</label> <td style="width: 1px;">: <select class="form-control" name="jurusan"> foreach($data["jurusan"] as $jurusan) { <option if(isset($data["siswa"])) { if($data["siswa"]- >id_jurusan == $jurusan->id_jurusan) echo 'selected'; value=" echo $jurusan->id_jurusan; "> echo $jurusan->nama_jurusan; </option> </select> <label>jenis Kelamin</label> <td style="width: 1px;">: <select name="jenis_kelamin" class="formcontrol"> <option value="laki-laki" if(isset($data["siswa"])) if($data["siswa"]->jenis_kelamin == 'Laki-laki') echo 'selected'; >Laki-laki</option> <option value="perempuan" if(isset($data["siswa"])) if($data["siswa"]->jenis_kelamin == 'Perempuan') echo 'selected'; >Perempuan</option> </select> 40
<label>nomor HP</label> <td style="width: 1px;">: <input type="text" name="no_hp" if(isset($data["siswa"])) echo 'value="'. $data["siswa"]- >nomor_hp. '"'; class="form-control"> <label>angkatan</label> <td style="width: 1px;">: <input type="number" min="1700" name="angkatan" if(isset($data["siswa"])) echo 'value="'. $data["siswa"]->angkatan. '"'; class="form-control"> <label>alamat</label> <td style="width: 1px;">: <textarea name="alamat" class="formcontrol" rows="5"> if(isset($data["siswa"])) echo $data["siswa"]->alamat; </textarea> <label>status</label> <td style="width: 1px;">: <select name="status" class="formcontrol"> <option value="siswa" if(isset($data["siswa"])) if($data["siswa"]->status == 'Siswa') echo 'selected'; >Siswa</option> <option value="alumni" if(isset($data["siswa"])) if($data["siswa"]->status == 'Alumni') echo 'selected'; >Alumni</option> </select> <label>foto</label> <td style="width: 1px;">: <input type="file" name="images" class="form-control"> if(isset($data["siswa"])) { if($data["siswa"]->images){ echo "a"; 41
<img src="../public/images/siswa/ echo $data["siswa"]->images; " alt="images" style="width:100%; max-width: 200px;"> <button type="submit" class="btn btnprimary">submit</button> <a class="btn btn-warning" href=" echo PATH;?page=siswa">Tampilkan Semua Siswa / Alumni</a> </tbody> </table> </form> Coba kita tampilkan di browser dengan klik menu Data Siswa. 10. Modul Alumni Modul alumni digunakan untuk memanajemen data siswa yang memiliki status Alumni di database kita. Kita tidak perlu membuat 5 fungsi seperti modul siswa sebelumnya, karena kita cukup menggunakan fungsi dari modul Siswa yang telah kita buat sebelumnya. Kita hanya perlu membuat controllernya saja. Kita buat controller AlumniController.php : use \modules\controllers\maincontroller; class AlumniController extends MainController { public function index() { $this->model('siswa'); $data = $this->siswa->getjoin('jurusan', array( 'jurusan.id_jurusan' => 'siswa.id_jurusan' ), 'JOIN', array( 'status' => "Alumni" ) ); $this->template('siswa', array('siswa' => $data, 'title' => 'Alumni')); 42
Pada modul ini kita tidak perlu membuat view karena kita menggunakan view dari siswa, disebebkan alumni dan siswa memiliki data yang sama dari tabel yang sama, suma berbeda status saja. Coba tampilkan di browser dengan klik menu alumni. 11. Modul Guru Modul guru digunakan untuk memanage data guru yang ada di website kita. Ada 5 action yang akan kita buat. Kalau kita perhatikan karakteristiknya, modul guru mirip dengan modul siswa, baik dari action yang dilakukan ada empat maupun jumlah file yang menangani modulnya ada lima, yaitu Siswa Controller.php, SiswaModel.php, detailsiswa.php, siswa.view.php, dan frmsiswa.view.php. Dan ada yang lebih penting lagi, yaitu input yang ditangani hampir sama, termasuk ada input gambar/ foto, tinggal disesuaikan label dan nama field-field nya saja sesuai dengan yang ada di tabel guru. Untuk itu maka saya tidak mencantumkan codenya lagi pada modul guru, ini bisa langsung dilihat di folder share di DOSEN-PC. Setelah semua sudah dicopy bisa kita cek melalui browser. 12. Modul Tentang Sekolah Pada modul ini, kita hanya akan melakukan update data tentang sekolah. Datanya sudah ada pada tabel tentang, kita hanya perlu menyediakan form untuk mengubah isi dari tentang sekolah. Langsung saja kita buat controller baru yaitu TentangController.php: use \modules\controllers\maincontroller; class TentangController extends MainController { public function index() { $this->model('tentang'); $data = $this->tentang->get(); $error = array(); $success = null; if($_server["request_method"] == "POST") { $isi = isset($_post["isi"])? $_POST["isi"] : ""; isi."); if(empty($isi) $isi == "") { array_push($error, "Tentang sekolah harus di if(count($error) == 0) { $update = $this->tentang->update( array( 'tentang' => $isi ) ); if($update) { $success = "Data Berhasil di simpan."; 43
$this->template('tentang', array('tentang' => $data[0],'error' => $error, 'success' => $success)); Setelah itu, kita buat view nya dengan nama tentang.view.php: <div class="col-lg-12"> <h1>tentang Sekolah</h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li class="active"><i class="fa fa-building"></i> Tentang Sekolah</li> </ol> <div class="col-lg-12"> if(isset($data["error"]) && count($data["error"]) > 0) { <div class="alert alert-danger" role="alert"> <a href="#" class="close" data-dismiss="alert" aria-label="close"> </a> <ul class="list-square"> foreach($data["error"] as $error) { <li> echo $error; </li> </ul> else if(isset($data["success"])) { <div class="alert alert-success"> <a href="#" class="close" data-dismiss="alert" aria-label="close"> </a> echo $data["success"]; <meta http-equiv="refresh" content="0;url= echo PATH;?page=tentang"> <form method="post" role="form"> <table class="table-responsive table"> <tbody> 44
<textarea class="form-control editor" name="isi" rows="8"> echo $data["tentang"]->tentang; </textarea> <button type="submit" class="btn btnprimary">update</button </tbody> </table> </form> Untuk melihatnya panggil di browser menu tentang sekolah di halaman administrator. 13. Modul Kontak Kami Pada modul kontak kami, kita akan membuat dua action, yaitu untuk melihat data dan menghapus data. Kalau kita lihat karakteristiknya, sebenarnya modul kontak kami mirip dengan modul buku tamu, baik dari action yang dilakukan ada dua maupun jumlah file yang menangani modul ada tiga. Dan ada yang lebih penting lagi, yaitu input yang ditangani juga hampir sama, dimana input data dilakukan oleh user melalui halaman pengunjung (bukan di halaman administrator). Untuk itu saya copy kan di folder DOSEN-PC untuk modul kontak kami. Bila sudah terbuat semua, silahkan cek di browser menu kontak pada halaman administrator. 14. Modul User Modul user digunakan untuk memanajemen data user yang bisa mengakses halaman administrator. Pada modul user, kita akan membuat 5 action, view, detail, insert, update dan delete data. Kita buat dulu controllernya yaitu UserController.php : use \modules\controllers\maincontroller; class UserController extends MainController { public function index() { $this->model('user'); $data = $this->user->get(); $this->template('user', array('user' => $data)); public function detail() { $id = isset($_get["id"])? $_GET["id"] : '0'; $this->model('user'); $data = $this->user->getwhere( array( 'id_user' => $id ) ); $this->template('detailuser', array('user' => $data[0])); 45
public function delete() { $id = isset($_get["id"])? $_GET["id"] : 0; $this->model('user'); $data = $this->user->getwhere(array( 'id_user' => $id )); $delete = $this->user->delete(array('id_user' => $id)); if($delete) { unlink('../public/images/user/'. $data[0]->images); $this->back(); public function insert() { $this->model('user'); $error = array(); $success = null; if($_server["request_method"] == "POST") { $nama = isset($_post["nama_lengkap"])? $_POST["nama_lengkap"] : ""; $email = isset($_post["email"])? $_POST["email"] : ""; $nohp = isset($_post["no_hp"])? $_POST["no_hp"] : ""; $alamat = isset($_post["alamat"])? $_POST["alamat"] : ""; $username = isset($_post["username"])? $_POST["username"] : ""; $password = isset($_post["password"])? $_POST["password"] : ""; $repassword = isset($_post["re_password"])? $_POST["re_password"] : ""; $foto = isset($_files["images"])? $_FILES["images"] : ""; if(empty($nama) $nama == "") { array_push($error, "Nama harus di isi."); if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { array_push($error, "Format e-mail salah."); if(empty($username) $username == "") { array_push($error, "Username harus di isi."); if(empty($password) $password == "") { array_push($error, "Password harus di isi."); if($password!= $repassword) { array_push($error, "Password dan Re-Type Password harus sama."); if(!empty($foto["name"]) && $foto["type"]!= 'image/jpg' && $foto["type"]!= 'image/jpeg' && $foto["type"]!= 'image/png') { 46
array_push($error, "Gambar hanya boleh.jpg/.png"); if(count($error) == 0) { $imagename = $foto["name"]; if($foto["name"]) { $imagename = date("h_i_s_y_m_d_"). str_replace(" ","_", $nama). '.jpg'; move_uploaded_file($foto["tmp_name"], '../public/images/user/'. $imagename); $insert = $this->user->insert( array( 'nama_lengkap' => $nama, 'email' => $email, 'no_hp' => $nohp, 'alamat' => $alamat, 'username' => $username, 'password' => md5($password), 'images' => $imagename ) ); if($insert) { $success = "Data Berhasil di simpan."; $this->template('frmuser', array('error' => $error, 'success' => $success, 'title' => 'Tambah User')); public function update() { $id = isset($_get["id"])? $_GET["id"] : '0'; $this->model('user'); $data = $this->user->getwhere( array( 'id_user' => $id ) ); $error = array(); $success = null; if($_server["request_method"] == "POST") { $nama = isset($_post["nama_lengkap"])? $_POST["nama_lengkap"] : ""; $email = isset($_post["email"])? $_POST["email"] : ""; $nohp = isset($_post["no_hp"])? $_POST["no_hp"] : ""; $alamat = isset($_post["alamat"])? $_POST["alamat"] : ""; $password = isset($_post["password"])? $_POST["password"] : ""; 47
$repassword = isset($_post["re_password"])? $_POST["re_password"] : ""; $foto = isset($_files["images"])? $_FILES["images"] : ""; if(empty($nama) $nama == "") { array_push($error, "Nama harus di isi."); if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { array_push($error, "Format e-mail salah."); if(!empty($foto["name"]) && $foto["type"]!= 'image/jpg' && $foto["type"]!= 'image/jpeg' && $foto["type"]!= 'image/png') { array_push($error, "Gambar hanya boleh.jpg/.png"); if(count($error) == 0) { $imagename = $foto["name"]; $dataupdate = array( 'nama_lengkap' => $nama, 'email' => $email, 'no_hp' => $nohp, 'alamat' => $alamat ); if($foto["name"]) { $imagename = date("h_i_s_y_m_d_"). str_replace(" ","_", $nama). '.jpg'; unlink('../public/images/user/'. $data[0]- >images); move_uploaded_file($foto["tmp_name"], '../public/images/user/'. $imagename); $dataupdate["images"] = $imagename; if(isset($password) && $password!= "") { if($repassword == "" $password!= $repassword) { array_push($error, "Password dan Re-Type Password harus sama."); else { $dataupdate["password"] = md5($password); if(count($error) == 0) { $update = $this->user->update($dataupdate, array('id_user' => $id)); if($update) { $success = "Data Berhasil di simpan."; 48
$this->template('frmuser', array('user' => $data[0], 'error' => $error, 'success' => $success, 'title' => 'Update User')); Pada file controller user tersebut terdapat lima fungsi, yaitu: a. Fungsi Index() secara default akan menampilkan semua data yang ada pada tabel user di database kita. b. Fungsi insert() akan digunakan untuk melakukan input data user c. Fungsi delete() untuk menghapus data pada user berdasarkan id_user yang dikirim d. Fungsi Update() untuk melakukan edit data user berdasarkan id _suser yang dikirim e. Fungsi detail() digunakan untuk melihat detail user berdasarkan id_user yang dikirim Setelah itu kita buat viewnya yaitu user.view.php: <div class="col-lg-12"> <h1>manajemen User</h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li class="active"><i class="fa fa-users"></i> User</li> </ol> <div class="col-lg-12"> <div class="form-group"> <a href=" echo PATH;?page=user&&action=insert" class="btn btn-primary">+ Tambah Data Baru</a> <div class="table-responsive"> <table class="table table-hover data-table tablestriped tablesorter"> <thead> <th class="header" style="width: 40px;">No</th> <th>foto</th> <th>nama</th> <th>email</th> <th>username</th> <th class="header" style="width:150px;">action</th> </thead> <tbody> $no = 1; foreach($data["user"] as $user) { 49
echo $no; if($user->images) { <img src="../public/images/user/ echo $user->images; " style="width: 50px;" alt=" echo $user->images; "> else{ <img src="../resources/images/no_user.jpg" style="width: 50px;" alt=" echo $user->images; "> echo $user->nama_lengkap; echo $user->email; echo $user->username; <a class="btn btn-primary btn-sm" href=" echo SITE_URL;?page=user&&action=detail&&id= echo $user->id_user; ">Detail</a> <a class="btn btn-warning btn-sm" href=" echo SITE_URL;?page=user&&action=update&&id= echo $user->id_user; ">Edit</a> <a class="btn btn-danger btn-sm" href=" echo SITE_URL;?page=user&&action=delete&&id= echo $user->id_user; " onclick="return confirm('are you sure delete this data?');">delete</a> $no++; </tbody> </table> Selanjutnya kita buat view untuk menampilkan detail dari user yang kita pilih, yaitu detailuser.view.php: <div class="col-lg-12"> <h1>detail User</h1> 50
<ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li class="active"><i class="fa fa-users"></i> Detail User</li> </ol> <div class="col-lg-12"> <table class="table-responsive table"> <tbody> <td style="width: 200px;"><b>Nama Lengkap</b> <td style="width: 1px;">: echo $data["user"]->nama_lengkap; <b>username</b> <td style="width: 1px;">: echo $data["user"]->username; <b>email</b> <td style="width: 1px;">: echo $data["user"]->email; <b>nomor HP</b> <td style="width: 1px;">: echo $data["user"]->no_hp; <b>alamat</b> <td style="width: 1px;">: echo $data["user"]->alamat; <b>foto</b> <td style="width: 1px;">: 51
if($data["user"]->images) { <img src="../public/images/user/ echo $data["user"]->images; " style="max-width: 200px;" alt=" echo $data["user"]->nama_lengkap; "> else{ <img src="../resources/images/no_user.jpg" style="max-width: 200px;" alt=" echo $data["user"]->nama_lengkap; "> <a class="btn btn-primary" href=" echo SITE_URL;?page=user">Daftar User</a> <a class="btn btn-warning" href=" echo SITE_URL;?page=user&&action=update&&id= echo $data["user"]->id_user; ">Edit</a> <a class="btn btn-danger" href=" echo SITE_URL;?page=user&&action=delete&&id= echo $data["user"]->id_user; " onclick="return confirm('are you sure delete this data?');">delete</a> </tbody> </table> Kemudian kita buat view form untuk melakukan insert dan update data user, yaitu dengan membuat file view benama frmuser.view.php: <div class="col-lg-12"> <h1> echo $data["title"]; </h1> <ol class="breadcrumb"> <li><a href=" SITE_URL; "><i class="fa fadashboard"></i> </a></li> <li><a href=" SITE_URL;?page=user"><i class="fa fa-users"></i> User</a></li> <li class="active"><i class="fa fa-pencil"></i> echo $data["title"]; </li> </ol> 52
<div class="col-lg-12"> if(isset($data["error"]) && count($data["error"]) > 0) { <div class="alert alert-danger" role="alert"> <a href="#" class="close" data-dismiss="alert" aria-label="close"> </a> <ul class="list-square"> foreach($data["error"] as $error) { <li> echo $error; </li> </ul> else if(isset($data["success"])) { <div class="alert alert-success"> <a href="#" class="close" data-dismiss="alert" aria-label="close"> </a> echo $data["success"]; <meta http-equiv="refresh" content="1;url= echo PATH;?page=user"> saja <div class="alert alert-info"> Password dan Gambar jika tidak di ganti Kosongkan <form method="post" role="form" enctype="multipart/formdata"> <table class="table-responsive table"> <tbody> <td style="width: 200px;"><label>Nama Lengkap</label> <td style="width: 1px;">: <input type="text" name="nama_lengkap" if(isset($data["user"])) echo 'value="'. $data["user"]- >nama_lengkap. '"'; class="form-control"> <label>email</label> 53
<td style="width: 1px;">: <input type="email" name="email" if(isset($data["user"])) echo 'value="'. $data["user"]->email. '"'; class="form-control"> <label>nomor HP</label> <td style="width: 1px;">: <input type="text" name="no_hp" if(isset($data["user"])) echo 'value="'. $data["user"]->no_hp. '"'; class="form-control"> <label>alamat</label> <td style="width: 1px;">: <textarea name="alamat" class="formcontrol" rows="5"> if(isset($data["user"])) echo $data["user"]->alamat; </textarea> <td style="width: 200px;"><label>Username</label> <td style="width: 1px;">: <input type="text" name="username" if(isset($data["user"])) echo 'value="'. $data["user"]->username. '" disabled'; class="form-control"> <td style="width: 200px;"><label>Password</label> <td style="width: 1px;">: <input type="password" name="password" class="form-control"> <td style="width: 200px;"><label>Re-Type Password</label> <td style="width: 1px;">: <input type="password" name="re_password" class="form-control"> <label>foto</label> <td style="width: 1px;">: 54
<input type="file" name="images" class="form-control"> if(isset($data["user"])) { if($data["user"]->images){ <img src="../public/images/user/ echo $data["user"]->images; " alt="images" style="width:100%; max-width: 200px;"> if(isset($data["user"])) { <button type="submit" class="btn btnprimary">submit</button> <a class="btn btn-warning" href=" echo PATH;?page=user">Tampilkan Semua User</a> </tbody> </table> </form> Setelah sudah selesai semua, coba kita tampilkan pada browser dengan klik menu Manajemen User. 55