Rabu, 12 Desember 2018

EAS PWEB C - PPDB

Nama: Ayu Mutiara Sari
NRP: 05111740000149
Kelas: PWEB C
Link (masih dalam proses) :still on process

1. Database:





2. Interface









3. Source Code:

- awal.php
 <!DOCTYPE html>   
  <html>   
  <head>   
  </head>   
  <style type="text/css">    
   ul{    
   display:table; margin:0 auto;    
   }    
   body {    
   background-color: LightPink;    
   }    
  </style>    
  <body>    
   <header>   
    <h1 align="center">Pendaftaran Siswa Baru Kabupaten Sukamaju</h3>   
    <h3 align="center">Tingkat Sekolah Menengah Atas</h1>    
   </header>   
   <h4 align="center">Menu</h4>   
   <nav>   
    <ul>   
     <li><a href="form-daftar.php">Isi Formulir</a></li>   
     <li><a href="list-siswa.php">Edit/Hapus</a></li>   
     <li><a href="view.php">Lihat Formulir</a></li>   
    </ul>   
   </nav>   
   </body>   
  </html>   


- cek_login.php
 <?php   
  session_start();   
  // initializing variables   
  $username = "";   
  $email = "";   
  $errors = array();    
  // connect to the database   
  $db = mysqli_connect('localhost', 'root', '', 'ppdb');    
  // REGISTER USER   
  if (isset($_POST['daftar'])) {   
  // receive all input values from the form   
  $username = mysqli_real_escape_string($db, $_POST['username']);   
  $email = mysqli_real_escape_string($db, $_POST['email']);   
  $password1 = mysqli_real_escape_string($db, $_POST['password1']);   
  $password2 = mysqli_real_escape_string($db, $_POST['password2']);   
  // form validation: ensure that the form is correctly filled ...   
  // by adding (array_push()) corresponding error unto $errors array   
  if (empty($username)) { array_push($errors, "Username is required"); }   
  if (empty($email)) { array_push($errors, "Email is required"); }   
  if (empty($password1)) { array_push($errors, "Password is required"); }   
  if ($password1 != $password2) {   
    array_push($errors, "The two passwords do not match");   
  }   
  $user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1";   
  $result = mysqli_query($db, $user_check_query);   
  $user = mysqli_fetch_assoc($result);   
  if ($user) {   
   if ($user['username'] === $username) {   
   array_push($errors, "Username already exists");   
   }   
   if ($user['email'] === $email) {   
   array_push($errors, "email already exists");   
   }   
  }   
  if (count($errors) == 0) {   
     $password = md5($password1);  
     $query = "INSERT INTO users (username, email, password)    
          VALUES('$username', '$email', '$password')";   
     mysqli_query($db, $query);   
     $_SESSION['username'] = $username;   
     $_SESSION['success'] = "You are now logged in";   
     header('location: index.php');   
  }   
  }   
  // ...    
  if (isset($_POST['submit'])) {   
  $username = mysqli_real_escape_string($db, $_POST['username']);   
  $password = mysqli_real_escape_string($db, $_POST['password']);   
  if (empty($username)) {   
     array_push($errors, "Username is required");   
  }   
  if (empty($password)) {   
     array_push($errors, "Password is required");   
  }   
  if (count($errors) == 0) {   
     $password = md5($password);   
     $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";   
     $results = mysqli_query($db, $query);   
     if (mysqli_num_rows($results) == 1) {   
     $_SESSION['username'] = $username;   
     $_SESSION['success'] = "You are now logged in";   
     header('location: index.php');   
     }else {   
       array_push($errors, "Wrong username/password combination");   
     }   
  }   
  }   
  ?>   


- daftar.php
 <?php include('cek_login.php') ?>   
  <!DOCTYPE html>   
  <html>   
  <head>   
  <title>Formulir Pendaftaran Siswa Baru 2019 Kabupaten Sukamaju</title>   
 <link rel="stylesheet" type="text/css" href="style.css">    
  </head>   
  <body>   
  <div class="header">   
     <h2>Register</h2>   
  </div>   
  <form method="post" action="daftar.php">   
     <?php include('errors.php'); ?>   
     <div class="input-group">   
     <label>Username</label>   
     <input type="text" name="username" value="<?php echo $username; ?>">   
     </div>   
     <div class="input-group">   
     <label>Email</label>   
     <input type="email" name="email" value="<?php echo $email; ?>">   
     </div>   
     <div class="input-group">   
     <label>Password</label>   
     <input type="password" name="password1">   
     </div>   
     <div class="input-group">   
     <label>Confirm password</label>   
     <input type="password" name="password2">   
     </div>   
     <div class="input-group">   
     <button type="submit" class="btn" name="daftar">Register</button>   
     </div>   
     <p>   
       Already a member? <a href="login.php">Sign in</a>   
     </p>   
  </form>   
  </body>   
  </html>   



- download.php
 <?php    
  //export.php    
  $connect = mysqli_connect("localhost", "root", "", "ppdb");   
  $output = '';   
  if(isset($_POST["download"]))   
  {   
  $query = "SELECT * FROM calon_siswa";   
  $result = mysqli_query($connect, $query);   
  if(mysqli_num_rows($result) > 0)   
  {   
  $output .= '   
   <table class="table" bordered="1">    
       <tr>    
        <th>id</th>  
                 <th>nik</th>   
        <th>nama</th>  
                 <th>tempat_lahir</th>  
                 <th>tanggal_lahir</th>                  
        <th>alamat</th>   
        <th>jenis_kelamin</th>   
        <th>agama</th>   
        <th>sekolah_asal</th>   
        <th>pilihan1</th>   
                 <th>pilihan2</th>   
       </tr>   
  ';   
  while($row = mysqli_fetch_array($result))   
  {   
   $output .= '   
   <tr>    
        <td>'.$row["id"].'</td>  
                 <td>'.$row["nik"].'</td>  
        <td>'.$row["nama"].'</td>  
                 <td>'.$row["tempat_lahir"].'</td>  
                 <td>'.$row["tanggal_lahir"].'</td>  
        <td>'.$row["alamat"].'</td>    
        <td>'.$row["jenis_kelamin"].'</td>   
        <td>'.$row["agama"].'</td>   
        <td>'.$row["sekolah_asal"].'</td>   
        <td>'.$row["pilihan1"].'</td>  
                 <td>'.$row["pilihan2"].'</td>  
       </tr>   
   ';   
  }   
  $output .= '</table>';   
  header('Content-Type: application/xls');   
  header('Content-Disposition: attachment; filename=download.xls');   
  echo $output;   
  }   
  }   
  ?>   



- errors.php
 <?php if (count($errors) > 0) : ?>   
  <div class="error">   
     <?php foreach ($errors as $error) : ?>   
     <p><?php echo $error ?></p>   
     <?php endforeach ?>   
  </div>   
  <?php endif ?>   



- form-daftar.php
 <!DOCTYPE html>   
  <html>   
  <head>   
   <title>Formulir Pendaftaran Siswa Kabupaten Sukamaju</title>  
 <style type="text/css">    
    body {    
   background-color: LightPink;    
   }    
   fieldset{    
   background-color: #FFF0F5;    
   }    
   </style>     
  </head>   
  <body>   
   <header>   
    <h3>Formulir Pendaftaran Siswa Baru</h3>   
   </header>   
   <form action="proses-pendaftaran.php" method="POST">   
    <fieldset>  
      <p>   
     <label for="nik">NIK: </label>   
     <input type="text" name="nik" placeholder="NIK" />   
    </p> `        
    <p>   
     <label for="nama">Nama: </label>   
     <input type="text" name="nama" placeholder="nama lengkap" />   
    </p>   
       <p>   
     <label for="tempat_lahir">Tempat Lahir: </label>   
     <input type="text" name="tempat_lahir" placeholder="tempat lahir" />   
    </p>   
       <p>   
     <label for="tanggal_lahir">Tanggal Lahir(dd/mm/yyyy): </label>   
     <input type="text" name="tanggal_lahir" placeholder="tanggal_lahir" />   
       </p>  
    <p>   
     <label for="alamat">Alamat: </label>   
     <textarea name="alamat"></textarea>   
    </p>   
    <p>   
     <label for="jenis_kelamin">Jenis Kelamin: </label>   
     <label><input type="radio" name="jenis_kelamin" value="laki-laki"> Laki-laki</label>   
     <label><input type="radio" name="jenis_kelamin" value="perempuan"> Perempuan</label>   
    </p>   
    <p>   
     <label for="agama">Agama: </label>   
     <select name="agama">   
      <option>Islam</option>   
      <option>Kristen</option>   
      <option>Hindu</option>   
      <option>Budha</option>   
      <option>Katolik</option>   
     </select>   
    </p>   
    <p>   
     <label for="sekolah_asal">Sekolah Asal: </label>   
     <input type="text" name="sekolah_asal" placeholder="nama sekolah" />   
    </p>   
       <p>   
     <label for="pilihan1">Pilihan 1: </label>   
     <select name="pilihan1">   
      <option>SMA 1 Sukamaju</option>   
      <option>SMA 2 Sukamaju</option>   
      <option>SMA 3 Sukamaju</option>   
      <option>SMA 4 Sukamaju</option>   
      <option>SMA 5 Sukamaju</option>   
     </select>   
    </p>  
       <p>   
     <label for="pilihan2">Pilihan 2: </label>   
     <select name="pilihan2">   
      <option>SMA 1 Sukamaju</option>   
      <option>SMA 2 Sukamaju</option>   
      <option>SMA 3 Sukamaju</option>   
      <option>SMA 4 Sukamaju</option>   
      <option>SMA 5 Sukamaju</option>   
     </select>   
    </p>   
    <p>   
     <input type="submit" value="Daftar" name="daftar" />   
    </p>   
    </fieldset>   
   </form>   
   </body>   
  </html>   



- form-edit.php
 <?php   
  include("koneksi.php");   
  // kalau tidak ada id di query string   
  if( !isset($_GET['id']) ){   
   header('Location: list-siswa.php');   
  }   
  //ambil id dari query string   
  $id = $_GET['id'];   
  // buat query untuk ambil data dari database   
  $sql = "SELECT * FROM calon_siswa WHERE id=$id";   
  $query = mysqli_query($db, $sql);   
  $siswa = mysqli_fetch_assoc($query);   
  // jika data yang di-edit tidak ditemukan   
  if( mysqli_num_rows($query) < 1 ){   
   die("data tidak ditemukan...");   
  }   
  ?>   
  <!DOCTYPE html>   
  <html>   
  <head>   
   <title>Formulir Pendaftaran Siswa Kabupaten Sukamaju</title>  
 <style type="text/css">    
    body {    
   background-color: LightPink;    
   }    
   fieldset{    
   background-color: #FFF0F5;    
   }    
   </style>      
  </head>   
  <body>   
   <header>   
    <h3>Formulir Pendaftaran Siswa Baru</h3>   
   </header>   
   <form action="proses-edit.php" method="POST">   
    <fieldset>   
     <input type="hidden" name="id" value="<?php echo $siswa['id'] ?>" />   
    <p>   
     <label for="nama">Nama: </label>   
     <input type="text" name="nama" placeholder="nama lengkap" value="<?php echo $siswa['nama'] ?>" />   
    </p>   
      <p>   
     <label for="tempat_lahir">Tempat Lahir: </label>   
     <input type="text" name="tempat_lahir" placeholder="tempat lahir" value="<?php echo $siswa['tempat_lahir'] ?>"/>   
    </p>   
       <p>   
     <label for="tanggal_lahir">Tanggal Lahir(dd/mm/yyyy): </label>   
     <input type="text" name="tanggal_lahir" placeholder="tanggal_lahir" value="<?php echo $siswa['tanggal_lahir'] ?>"/>   
       </p>        
    <p>   
     <label for="alamat">Alamat: </label>   
     <textarea name="alamat"><?php echo $siswa['alamat'] ?></textarea>   
    </p>   
    <p>   
     <label for="jenis_kelamin">Jenis Kelamin: </label>   
     <?php $jk = $siswa['jenis_kelamin']; ?>   
     <label><input type="radio" name="jenis_kelamin" value="laki-laki" <?php echo ($jk == 'laki-laki') ? "checked": "" ?>> Laki-laki</label>   
     <label><input type="radio" name="jenis_kelamin" value="perempuan" <?php echo ($jk == 'perempuan') ? "checked": "" ?>> Perempuan</label>   
    </p>   
    <p>   
     <label for="agama">Agama: </label>   
     <?php $agama = $siswa['agama']; ?>   
     <select name="agama">   
      <option <?php echo ($agama == 'Islam') ? "selected": "" ?>>Islam</option>   
      <option <?php echo ($agama == 'Kristen') ? "selected": "" ?>>Kristen</option>   
      <option <?php echo ($agama == 'Hindu') ? "selected": "" ?>>Hindu</option>   
      <option <?php echo ($agama == 'Budha') ? "selected": "" ?>>Budha</option>   
      <option <?php echo ($agama == 'Katolik') ? "selected": "" ?>>Katolik</option>   
     </select>   
    </p>   
    <p>   
     <label for="sekolah_asal">Sekolah Asal: </label>   
     <input type="text" name="sekolah_asal" placeholder="nama sekolah" value="<?php echo $siswa['sekolah_asal'] ?>" />   
    </p>  
 <p>   
     <label for="pilihan1">Pilihan 1: </label>   
     <select name="pilihan1">  
           <option>SMA 1 Sukamaju</option>   
      <option>SMA 2 Sukamaju</option>   
      <option>SMA 3 Sukamaju</option>   
      <option>SMA 4 Sukamaju</option>   
      <option>SMA 5 Sukamaju</option>          
     </select>   
    </p>  
       <p>   
     <label for="pilihan2">Pilihan 2: </label>   
     <select name="pilihan2">   
      <option>SMA 1 Sukamaju</option>   
      <option>SMA 2 Sukamaju</option>   
      <option>SMA 3 Sukamaju</option>   
      <option>SMA 4 Sukamaju</option>   
      <option>SMA 5 Sukamaju</option>          
     </select>   
    </p>   
    <p>         
    <p>   
     <input type="submit" value="Simpan" name="simpan" />   
    </p>   
    </fieldset>   
   </form>   
   </body>   
  </html>   



- hapus.php
 <?php   
  include("koneksi.php");   
  if( isset($_GET['id']) ){   
   // ambil id dari query string   
   $id = $_GET['id'];   
   // buat query hapus   
   $sql = "DELETE FROM calon_siswa WHERE id=$id";   
   $query = mysqli_query($db, $sql);   
   // apakah query hapus berhasil?   
   if( $query ){   
    header('Location: list-siswa.php');   
   } else {   
    die("gagal menghapus...");   
   }   
  } else {   
   die("akses dilarang...");   
  }   
  ?>   



- index.php
 <?php    
  session_start();    
  if (!isset($_SESSION['username'])) {   
     $_SESSION['msg'] = "You must log in first";   
     header('location: login.php');   
  }   
  if (isset($_GET['logout'])) {   
     session_destroy();   
     unset($_SESSION['username']);   
     header("location: login.php");   
  }   
  ?>   
  <!DOCTYPE html>   
  <html>   
  <head>   
    <title>Home</title>   
 <link rel="stylesheet" type="text/css" href="style.css">        
  </head>   
  <body>   
  <div class="header">   
    <h2>Home Page</h2>   
  </div>   
  <div class="content">   
     <!-- notification message -->   
     <?php if (isset($_SESSION['success'])) : ?>   
   <div class="error success" >   
      <h3>   
    <?php    
       echo $_SESSION['success'];    
       unset($_SESSION['success']);   
    ?>   
      </h3>   
   </div>   
     <?php endif ?>   
   <!-- logged in user information -->   
   <?php if (isset($_SESSION['username'])) : ?>   
     <p>Welcome <strong><?php echo $_SESSION['username']; ?></strong></p>   
   <p> <a href="awal.php" style="color: red;">Fill The Formulir</a> </p>   
     <p> <a href="index.php?logout='1'" style="color: red;">Logout</a> </p>   
   <?php endif ?>   
  </div>   
  </body>   
  </html>   


- koneksi.php
 <?php  
 $server = "localhost";  
 $user = "root";  
 $password = "";  
 $nama_database = "ppdb";  
 $db = mysqli_connect($server, $user, $password , $nama_database);  
 if( !$db ){  
   die("Gagal terhubung dengan database: " . mysqli_connect_error());  
 }  
 ?>  


- list-siswa.php
 <?php include("koneksi.php"); ?>   
  <!DOCTYPE html>   
  <html>   
  <head>   
   <title>Formulir Pendaftaran Siswa Baru Kabupaten Sukamaju</title>   
 <style type="text/css">    
    body {    
   background-color: LightPink;    
   }    
   fieldset{    
   background-color: #FFF0F5;    
   }    
   </style>      
  </head>   
  </style>   
  <body>   
    <header>   
    <h2 align="center">FORMULIR PENDAFTARAN SISWA BARU KABUPATEN SUKAMAJU</h2>   
    <h3 align="center">TINGKAT SEKOLAH MENENGAH ATAS</h3>   
    </header>    
    <fieldset>   
    <p>   
    <?php   
    $sql = "SELECT * FROM calon_siswa";   
    $query = mysqli_query($db, $sql);   
    $siswa = mysqli_fetch_array($query);   
    echo "<p align='center'> FORMULIR PENDAFTARAN SISWA BARU KABUPATEN SUKAMAJU</p>";   
    echo " <p align='center'> SEKOLAH MENENGAH ATAS </p>";    
    echo "<br />";   
    echo "<br />";   
    echo "<strong>ID</strong><br>";   
    echo $siswa['id']; echo "<br>";   
    echo "<br />";   
       echo "<strong>NIK</strong><br>";   
    echo $siswa['nik']; echo "<br>";   
    echo "<br />";  
    echo "<strong>Nama</strong><br>";   
    echo $siswa['nama']; echo "<br>";   
    echo "<br />";  
       echo "<strong>Tempat Lahir</strong><br>";   
    echo $siswa['tempat_lahir']; echo "<br>";   
    echo "<br />";  
       echo "<strong>Tanggal Lahir</strong><br>";   
    echo $siswa['tanggal_lahir']; echo "<br>";   
    echo "<br />";  
    echo "<strong>Alamat</strong><br>";   
    echo $siswa['alamat']; echo "<br>";   
    echo "<br />";   
    echo "<strong>Jenis Kelamin</strong><br>";   
    echo $siswa['jenis_kelamin']; echo "<br>";   
    echo "<br />";   
    echo "<strong>Agama</strong><br>";   
    echo $siswa['agama']; echo "<br>";   
    echo "<br />";   
    echo "<strong>Sekolah Asal</strong><br>";   
    echo $siswa['sekolah_asal']; echo "<br>";   
    echo "<br />";   
    echo "<strong>Sekolah Pilihan 1</strong><br>";   
    echo $siswa['pilihan1']; echo "<br>";  
       echo "<strong>Sekolah Pilihan 2</strong><br>";   
    echo $siswa['pilihan2']; echo "<br>";         
    echo "<br /></br>";   
    echo "<td>";   
    echo "<a href='form-edit.php?id=".$siswa['id']."'>Edit</a> | ";   
    echo "<a href='hapus.php?id=".$siswa['id']."'>Hapus</a>";   
    echo "</td>";   
    ?>   
    </p>   
  </html>    
  </body>   



- login.php
 <?php  
 include "koneksi.php";  
 session_start();  
 if (isset($_SESSION['username'])){  
 header ("location:index.php");  
 }  
 ?>  
 <html>  
 <head>  
 <title>PENDAFTARAN SISWA BARU KABUPATEN SUKAMAJU</title>   
 <link rel="stylesheet" type="text/css" href="style.css">   
 </head>  
 <body style="text-align: center;">  
 <form method="post" name="login" action="cek_login.php">  
 <table border=0 align="center" cellpadding=5 cellspacing=0>  
 <tr>  
 <h1>Pendaftaran Siswa Baru Kabupaten Sukamaju</h1>  
 <div class="header">  
 <td colspan=3><center><font size=5>LOGIN</font></center></td>  
 </div>  
 </tr>  
 <tr>  
 <td>Username</td>  
 <td>:</td>  
 <td><input type="text" name="username"></td>  
 </tr>  
 <tr>  
 <td>Password</td>  
 <td>:</td>  
 <td><input type="password" name="password"></td>  
 </tr>  
 <tr>  
 <td colspan=2></td>  
 <td><input type="submit" name="submit" value="LOGIN"></td>  
 </tr>  
 <tr>  
 <td> Belum Mendaftar? Klik </td>  
 <td colspan=3><a href="daftar.php">DAFTAR</a></td>  
 </tr>  
 </table>  
 </form>  
 </body>  
 </html>  



- proses-edit.php
 <?php   
  include("koneksi.php");   
  // cek apakah tombol simpan sudah diklik atau blum?   
  if(isset($_POST['simpan'])){   
   // ambil data dari formulir   
   $id = $_POST['id'];   
   $nik = $_POST['nik'];  
   $nama = $_POST['nama'];   
   $tempat_lahir = $_POST['tempat_lahir'];  
   $tanggal_lahir = $_POST['tanggal_lahir'];  
   $alamat = $_POST['alamat'];   
   $jk = $_POST['jenis_kelamin'];   
   $agama = $_POST['agama'];   
   $sekolah = $_POST['sekolah_asal'];  
   $pilihan1 = $_POST['pilihan1'];   
   $pilihan2 = $_POST['pilihan2'];   
   // buat query update   
   $sql = "UPDATE calon_siswa SET nik='$nik',nama='$nama', tempat_lahir='$tempat_lahir', tanggal_lahir='$tanggal_lahir', alamat='$alamat', jenis_kelamin='$jk', agama='$agama', sekolah_asal='$sekolah', pilihan1='$pilihan1', pilihan2='$pilihan2' WHERE id=$id";   
   $query = mysqli_query($db, $sql);   
   // apakah query update berhasil?   
   if( $query ) {   
    // kalau berhasil alihkan ke halaman list-siswa.php   
    header('Location: list-siswa.php');   
   } else {   
    // kalau gagal tampilkan pesan   
    die("Gagal menyimpan perubahan...");   
   }   
  } else {   
   die("Akses dilarang...");   
  }   
  ?>   



- proses-pendaftaran.php
 <?php   
  include("koneksi.php");   
  // cek apakah tombol daftar sudah diklik atau blum?   
  if(isset($_POST['daftar'])){   
   // ambil data dari formulir   
   $nik = $_POST['nik'];  
   $nama = $_POST['nama'];   
   $tempat_lahir = $_POST['tempat_lahir'];  
   $tanggal_lahir = $_POST['tanggal_lahir'];  
   $alamat = $_POST['alamat'];   
   $jk = $_POST['jenis_kelamin'];   
   $agama = $_POST['agama'];   
   $sekolah = $_POST['sekolah_asal'];  
      $pilihan1 = $_POST['pilihan1'];   
      $pilihan2 = $_POST['pilihan2'];   
   // buat query   
   $sql = "INSERT INTO calon_siswa (nik, nama, tempat_lahir, tanggal_lahir, alamat, jenis_kelamin, agama, sekolah_asal, pilihan1, pilihan2) VALUE ('$nik', '$nama', '$tempat_lahir', '$tanggal_lahir', '$alamat', '$jk', '$agama', '$sekolah', '$pilihan1', '$pilihan2')";   
   $query = mysqli_query($db, $sql);   
   // apakah query simpan berhasil?   
   if( $query ) {   
    // kalau berhasil alihkan ke halaman index.php dengan status=sukses   
    header('Location: index.php?status=sukses');   
   } else {   
    // kalau gagal alihkan ke halaman indek.php dengan status=gagal   
    header('Location: index.php?status=gagal');   
   }   
  } else {   
   die("Akses dilarang...");   
  }   
  ?>   



- style.css
 * {   
  margin: 1px;   
  padding: 1px;   
  }   
  body {   
  font-size: 120%;   
  background:#FFB6C1;   
  }   
  .header {   
  width: 20%;   
  margin: 50px auto 0px;   
  color: black;   
  background: #FFF8DC;   
  text-align: center;   
  border: 1px solid #B0C4DE;   
  border-bottom: none;   
  border-radius: 10px 10px 0px 0px;   
  padding: 20px;   
  }   
  form, .content {   
  width: 30%;   
  margin: 0px auto;   
  padding: 20px;   
  border: 1px solid #FFF8DC;   
  background: white;   
  border-radius: 0px 0px 10px 10px;   
  }   
  .input-group {   
  margin: 10px 0px 10px 0px;   
  }   
  .input-group label {   
  display: block;   
  text-align: left;   
  margin: 3px;   
  }   
  .input-group input {   
  height: 30px;   
  width: 93%;   
  padding: 5px 10px;   
  font-size: 16px;   
  border-radius: 5px;   
  border: 1px solid gray;   
  }   
  .btn {   
  padding: 10px;   
  font-size: 15px;   
  color: black;   
  background: #FFF8DC;   
  border: none;   
  border-radius: 5px;   
  }   
  .error {   
  width: 92%;    
  margin: 0px auto;    
  padding: 10px;    
  border: 1px solid #FFF8DC;    
  color: #a94442;    
  background: #f2dede;    
  border-radius: 5px;    
  text-align: left;   
  }   
  }   



-view.php
 <?php include("koneksi.php"); ?>   
  <!DOCTYPE html>   
  <html>   
  <head>   
   <title>Formulir Pendaftaran Siswa Baru Kabupaten Sukamaju</title>  
 <style type="text/css">    
    body {    
   background-color: LightPink;    
   }    
   fieldset{    
   background-color: #FFF0F5;    
   }    
   </style>     
  </head>   
  </style>   
  <body>   
    <header>   
    <h2 align="center">FORMULIR PENDAFTARAN SISWA BARU KABUPATEN SUKAMAJU</h2>   
    <h3 align="center">SEKOLAH MENENGAH ATAS</h3>   
    </header>   
    <div class="login">   
    <fieldset>   
    <p>   
    <?php   
    $sql = "SELECT * FROM calon_siswa";   
    $query = mysqli_query($db, $sql);   
    $siswa = mysqli_fetch_array($query);   
    echo "<p align='center'> FORMULIR PENDAFTARAN SISWA BARU 2019 KABUPATEN SUKAMAJU</p>";   
    echo " <p align='center'> SEKOLAH MENENGAH ATAS</p>";   
    echo "<br />";   
    echo "<br />";   
    echo "<strong>ID</strong><br>";   
    echo $siswa['id']; echo "<br>";   
       echo "<strong>NIK</strong><br>";   
    echo $siswa['nik']; echo "<br>";        
    echo "<br />";   
    echo "<strong>Nama</strong><br>";   
    echo $siswa['nama']; echo "<br>";   
    echo "<br />";   
       echo "<strong>Tempat Lahir</strong><br>";   
    echo $siswa['tempat_lahir']; echo "<br>";   
    echo "<br />";       
       echo "<strong>Tanggal Lahir</strong><br>";   
    echo $siswa['tanggal_lahir']; echo "<br>";   
    echo "<br />";        
    echo "<strong>Alamat</strong><br>";   
    echo $siswa['alamat']; echo "<br>";   
    echo "<br />";   
    echo "<strong>Jenis Kelamin</strong><br>";   
    echo $siswa['jenis_kelamin']; echo "<br>";   
    echo "<br />";   
    echo "<strong>Agama</strong><br>";   
    echo $siswa['agama']; echo "<br>";   
    echo "<br />";   
    echo "<strong>Sekolah Asal</strong><br>";   
    echo $siswa['sekolah_asal']; echo "<br>";   
    echo "<br />";   
    echo "<strong>Sekolah Pilihan 1</strong><br>";   
    echo $siswa['pilihan1']; echo "<br>";   
    echo "<br />";  
       echo "<strong>Sekolah Pilihan 2</strong><br>";   
    echo $siswa['pilihan2']; echo "<br>";   
    ?>   
    </p>   
    <form method="post" action="download.php">   
    <input type="submit" name="download" class="btn btn-success" value="Download" />   
  </html>    
  </body>   



Senin, 10 Desember 2018

EAS PBO A- Image Editor

Nama: Ayu Mutiara Sari
NRP: 05111740000149
Kelas: PBOA

1. Interfaces:
2. Terdapat 11 class:
Image Panel                  : komponen swing yang dapat menampilkan OFImage
Image Viewer               : main class dari program imageviewer, mengatur keseluruhan class
OFImage                      : mendefinisikan sebuah gambar dalam format OF
Image File Manager     : class untuk membuka dan menyimpan gambar
Fish Eye Filter             : memberikan efek "fish eye" pada gambar
Darker Filter                : memberikan efek gelap pada gambar
Edge Filter                   : memberikan efek edge pada gambar
Invert Filter                  : memberikan efek invert pada gambar
Mirror Filter                 : memberikan efek mirror pada gambar
Gray Scale Filter          : memberikan efek hitam dan putih pada gambar
Filter                             : class utama untuk filter

3. Hasil:

- Image Panel

 /**  
  * Write a description of class ImagePanel here.  
  *  
  * @author Ayu Mutiara Sari  
  * @version 01.01  
  */  
 import java.awt.*;  
 import javax.swing.*;  
 import java.awt.image.*;  
 public class ImagePanel extends JComponent   
  {   
   // The current width and height of this panel   
   private int width, height;   
   // An internal image buffer that is used for painting. For   
   // actual display, this image buffer is then copied to screen.   
   private OFImage panelImage;   
   /**   
   * Create a new, empty ImagePanel.   
   */   
   public ImagePanel()   
   {   
    width = 360; // arbitrary size for empty panel   
    height = 240;   
    panelImage = null;   
   }   
   /**   
   * Set the image that this panel should show.   
   *    
   * @param image The image to be displayed.   
   */   
   public void setImage(OFImage image)   
   {   
    if(image != null) {   
     width = image.getWidth();   
     height = image.getHeight();   
     panelImage = image;   
     repaint();   
    }   
   }   
   /**   
   * Clear the image on this panel.   
   */   
   public void clearImage()   
   {   
    Graphics imageGraphics = panelImage.getGraphics();   
    imageGraphics.setColor(Color.LIGHT_GRAY);   
    imageGraphics.fillRect(0, 0, width, height);   
    repaint();   
   }   
   // The following methods are redefinitions of methods   
   // inherited from superclasses.   
   /**   
   * Tell the layout manager how big we would like to be.   
   * (This method gets called by layout managers for placing   
   * the components.)   
   *    
   * @return The preferred dimension for this component.   
   */   
   public Dimension getPreferredSize()   
   {   
    return new Dimension(width, height);   
   }   
   /**   
   * This component needs to be redisplayed. Copy the internal image    
   * to screen. (This method gets called by the Swing screen painter    
   * every time it want this component displayed.)   
   *    
   * @param g The graphics context that can be used to draw on this component.   
   */   
   public void paintComponent(Graphics g)   
   {   
    Dimension size = getSize();   
    g.clearRect(0, 0, size.width, size.height);   
    if(panelImage != null) {   
     g.drawImage(panelImage, 0, 0, null);   
    }   
   }   
  }   


- Image Viewer

  import java.awt.*;   
  import java.awt.event.*;   
  import java.awt.image.*;   
  import javax.swing.*;   
  import javax.swing.border.*;   
  import java.io.File;   
  import java.util.List;   
  import java.util.ArrayList;   
  import java.util.Iterator;   
  import java.awt.Graphics;   
  import java.awt.Image;   
  import java.awt.image.BufferedImage;   
  /**   
  * ImageViewer is the main class of the image viewer application. It builds and   
  * displays the application GUI and initialises all other components.   
  *    
  * To start the application, create an object of this class.   
  *    
  * @author Ayu Mutiara Sari   
  * @version 01.01   
  */   
  public class ImageViewer   
  {   
   private static final String VERSION = "Version 3.1";   
   private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));   
   private JFrame frame;   
   private ImagePanel imagePanel;   
   private JLabel filenameLabel;   
   private JLabel statusLabel;   
   private JButton smallerButton;   
   private JButton textButton;   
   private JButton largerButton;   
   private JButton cropButton;   
   private JButton rotButton;   
   private JButton rotaButton;   
   private JButton rotateButton;   
   private OFImage currentImage;    
   private List<Filter> filters;   
   public ImageViewer()   
   {   
    currentImage = null;   
    filters = createFilters();   
    makeFrame();   
   }   
   private void makeText()   
   {   
    if(currentImage != null) {   
     int width = currentImage.getWidth();   
     int height = currentImage.getHeight();   
     int xPosition = Integer.parseInt(JOptionPane.showInputDialog("Posisi X"));   
     int yPosition = Integer.parseInt(JOptionPane.showInputDialog("Posisi Y"));   
     float fontSize = Float.parseFloat(JOptionPane.showInputDialog("Besar Font"));   
     String addText = JOptionPane.showInputDialog("Ketik sesuatu..");   
     OFImage newImage = new OFImage(width, height);   
     // copy pixel data into new image   
     for(int y = 0; y < height; y++) {   
      for(int x = 0; x < width; x++) {   
       Color col = currentImage.getPixel(x, y);   
       newImage.setPixel(x, y, col);   
      }   
     }   
     Graphics g = newImage.getGraphics();   
     g.setFont(g.getFont().deriveFont(fontSize));   
     g.drawString(addText, xPosition, yPosition);   
     g.dispose();   
     currentImage = newImage;   
     imagePanel.setImage(currentImage);   
    }   
   }   
   private void openFile()   
   {   
    int returnVal = fileChooser.showOpenDialog(frame);   
    if(returnVal != JFileChooser.APPROVE_OPTION) {   
     return;    
    }   
    File selectedFile = fileChooser.getSelectedFile();   
    currentImage = ImageFileManager.loadImage(selectedFile);   
    if(currentImage == null) {    
     JOptionPane.showMessageDialog(frame,   
       "The file was not in a recognized image file format.",   
       "Image Load Error",   
       JOptionPane.ERROR_MESSAGE);   
     return;   
    }   
    imagePanel.setImage(currentImage);   
    setButtonsEnabled(true);   
    showFilename(selectedFile.getPath());   
    showStatus("File loaded.");   
    frame.pack();   
   }   
   private void close()   
   {   
    currentImage = null;   
    imagePanel.clearImage();   
    showFilename(null);   
    setButtonsEnabled(false);   
   }   
   private void saveAs()   
   {   
    if(currentImage != null) {   
     int returnVal = fileChooser.showSaveDialog(frame);   
     if(returnVal != JFileChooser.APPROVE_OPTION) {   
      return;    
     }   
     File selectedFile = fileChooser.getSelectedFile();   
     ImageFileManager.saveImage(currentImage, selectedFile);   
     showFilename(selectedFile.getPath());   
    }   
   }   
   private void quit()   
   {   
    System.exit(0);   
   }   
   private void applyFilter(Filter filter)   
   {   
    if(currentImage != null) {   
     filter.apply(currentImage);   
     frame.repaint();   
     showStatus("Applied: " + filter.getName());   
    }   
    else {   
     showStatus("No image loaded.");   
    }   
   }   
   private void showAbout()   
   {   
    JOptionPane.showMessageDialog(frame,    
       "ImageViewer\n" + VERSION,   
       "About ImageViewer",    
       JOptionPane.INFORMATION_MESSAGE);   
   }   
   private void makeLarger()   
   {   
    if(currentImage != null) {   
     int width = currentImage.getWidth();   
     int height = currentImage.getHeight();   
     OFImage newImage = new OFImage(width * 2, height * 2);   
     for(int y = 0; y < height; y++) {   
      for(int x = 0; x < width; x++) {   
       Color col = currentImage.getPixel(x, y);   
       newImage.setPixel(x * 2, y * 2, col);   
       newImage.setPixel(x * 2 + 1, y * 2, col);   
       newImage.setPixel(x * 2, y * 2 + 1, col);   
       newImage.setPixel(x * 2+1, y * 2 + 1, col);   
      }   
     }   
     currentImage = newImage;   
     imagePanel.setImage(currentImage);   
     frame.pack();   
    }   
   }   
   private void makeSmaller()   
   {   
    if(currentImage != null) {   
     int width = currentImage.getWidth() / 2;   
     int height = currentImage.getHeight() / 2;   
     OFImage newImage = new OFImage(width, height);   
     for(int y = 0; y < height; y++) {   
      for(int x = 0; x < width; x++) {   
       newImage.setPixel(x, y, currentImage.getPixel(x * 2, y * 2));   
      }   
     }   
     currentImage = newImage;   
     imagePanel.setImage(currentImage);   
     frame.pack();   
    }   
   }   
   private void crop()   
   {   
    if (currentImage != null)   
    {   
     int width = currentImage.getWidth();   
     int height = currentImage.getWidth();   
     int xAwal = Integer.parseInt(JOptionPane.showInputDialog("x.akhir"));   
     int yAwal = Integer.parseInt(JOptionPane.showInputDialog("y.akhir"));   
     int xAkhir = Integer.parseInt(JOptionPane.showInputDialog("x.awal"));   
     int yAkhir = Integer.parseInt(JOptionPane.showInputDialog("y.awal"));   
     OFImage newImage = new OFImage(xAkhir - xAwal, yAkhir - yAwal);   
     for (int y = 0; y < yAkhir - yAwal; y++)   
     {   
      for (int x = 0; x < xAkhir - xAwal; x++)   
      {   
       newImage.setPixel(x, y, currentImage.getPixel(x + xAwal, y + yAwal));   
      }   
     }   
     currentImage = newImage;   
     imagePanel.setImage(currentImage);   
     frame.pack();   
    }   
   }   
   private void showFilename(String filename)   
   {   
    if(filename == null) {   
     filenameLabel.setText("No file displayed.");   
    }   
    else {   
     filenameLabel.setText("File: " + filename);   
    }   
   }   
   private void showStatus(String text)   
   {   
    statusLabel.setText(text);   
   }   
   private void setButtonsEnabled(boolean status)   
   {   
    smallerButton.setEnabled(status);   
    largerButton.setEnabled(status);   
    cropButton.setEnabled(status);   
    rotButton.setEnabled(status);   
    rotaButton.setEnabled(status);   
    rotateButton.setEnabled(status);   
   }   
   private List<Filter> createFilters()   
   {   
    List<Filter> filterList = new ArrayList<Filter>();   
    filterList.add(new DarkerFilter("Darker"));    
    filterList.add(new InvertFilter("Invert"));   
    filterList.add(new MirrorFilter("Mirror"));   
    filterList.add(new GrayScaleFilter("Grayscale"));   
    filterList.add(new EdgeFilter("Edge Detection"));   
    filterList.add(new FishEyeFilter("Fish Eye"));   
    return filterList;   
   }   
   private void makeFrame()   
   {   
    frame = new JFrame("ImageViewer");   
    JPanel contentPane = (JPanel)frame.getContentPane();   
    contentPane.setBorder(new EmptyBorder(6, 6, 6, 6));   
    makeMenuBar(frame);   
    contentPane.setLayout(new BorderLayout(6, 6));   
    imagePanel = new ImagePanel();   
    imagePanel.setBorder(new EtchedBorder());   
    contentPane.add(imagePanel, BorderLayout.CENTER);   
    filenameLabel = new JLabel();   
    contentPane.add(filenameLabel, BorderLayout.NORTH);   
    statusLabel = new JLabel(VERSION);   
    contentPane.add(statusLabel, BorderLayout.SOUTH);   
    JPanel toolbar = new JPanel();   
    toolbar.setLayout(new GridLayout(0, 1));   
    textButton = new JButton("Add Text");   
    textButton.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { makeText();}   
         });   
    toolbar.add(textButton);   
    smallerButton = new JButton("Smaller");   
    smallerButton.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { makeSmaller(); }   
         });   
    toolbar.add(smallerButton);   
    largerButton = new JButton("Larger");   
    largerButton.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { makeLarger(); }   
         });   
    toolbar.add(largerButton);   
    cropButton = new JButton("Crop");   
    cropButton.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { crop(); }   
         });   
    toolbar.add(cropButton);   
    rotateButton = new JButton("Rotate 180");   
    rotateButton.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { Rotate180(); }   
         });   
    toolbar.add(rotateButton);   
    rotButton = new JButton("Rotate 90 Left");   
    rotButton.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { Rotate90left(); }   
         });   
    toolbar.add(rotButton);   
    rotaButton = new JButton("Rotate 90 Right");   
    rotaButton.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { Rotate90right(); }   
         });   
    toolbar.add(rotaButton);   
    JPanel flow = new JPanel();   
    flow.add(toolbar);   
    contentPane.add(flow, BorderLayout.WEST);    
    showFilename(null);   
    setButtonsEnabled(false);   
    frame.pack();     
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();   
    frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);   
    frame.setVisible(true);   
   }   
   private void Rotate180() {   
    if(currentImage != null) {   
     // create new image with double size   
     int width = currentImage.getWidth();   
     int height = currentImage.getHeight();   
     OFImage newImage = new OFImage(width, height);   
     //copy pixel data into new image   
     for(int y = 0; y < height; y++) {   
      for(int x = 0; x < width; x++) {   
       Color col = currentImage.getPixel(width-x-1, height-y-1);   
       newImage.setPixel(x, y, col);   
      }   
     }   
     currentImage = newImage;   
     imagePanel.setImage(currentImage);   
     frame.pack();   
    }   
   }   
   private void Rotate90left() {   
    if(currentImage != null) {   
     // create new image with double size   
     int width = currentImage.getWidth();   
     int height = currentImage.getHeight();   
     OFImage newImage = new OFImage(height, width);   
     //copy pixel data into new image   
     for(int y = 0; y < height; y++) {   
      for(int x = 0; x < width; x++) {   
       Color col = currentImage.getPixel(x, y);   
       newImage.setPixel(y, width-x-1, col);   
      }   
     }   
     currentImage = newImage;   
     imagePanel.setImage(currentImage);   
     frame.pack();   
    }   
   }   
   private void Rotate90right() {   
    if(currentImage != null) {   
     // create new image with double size   
     int width = currentImage.getWidth();   
     int height = currentImage.getHeight();   
     OFImage newImage = new OFImage(height, width);   
     //copy pixel data into new image   
     for(int y = 0; y < height; y++) {   
      for(int x = 0; x < width; x++) {   
       Color col = currentImage.getPixel(x, y);   
       newImage.setPixel(height-y-1, x, col);   
      }   
     }   
     currentImage = newImage;   
     imagePanel.setImage(currentImage);   
     frame.pack();   
    }   
   }   
   private void makeMenuBar(JFrame frame)   
   {   
    final int SHORTCUT_MASK =   
     Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();   
    JMenuBar menubar = new JMenuBar();   
    frame.setJMenuBar(menubar);   
    JMenu menu;   
    JMenuItem item;   
    // create the File menu   
    menu = new JMenu("File");   
    menubar.add(menu);   
    item = new JMenuItem("Open...");   
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_MASK));   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { openFile(); }   
         });   
    menu.add(item);   
    item = new JMenuItem("Close");   
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, SHORTCUT_MASK));   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { close(); }   
         });   
    menu.add(item);   
    menu.addSeparator();   
    item = new JMenuItem("Save As...");   
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, SHORTCUT_MASK));   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { saveAs(); }   
         });   
    menu.add(item);   
    menu.addSeparator();   
    item = new JMenuItem("Quit");   
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { quit(); }   
         });   
    menu.add(item);   
    // create the Filter menu   
    menu = new JMenu("Effect");   
    menubar.add(menu);   
    for(final Filter filter : filters) {   
     item = new JMenuItem(filter.getName());   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) {    
           applyFilter(filter);   
          }   
         });   
     menu.add(item);   
    }   
    // create the Help menu   
    menu = new JMenu("Help");   
    menubar.add(menu);   
    item = new JMenuItem("About ImageViewer...");   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { showAbout(); }   
         });   
    menu.add(item);   
   }   
  }   

- OFImage

 /**  
  * Write a description of class OFImage here.  
  *  
  * @author Ayu Mutiara Sari  
  * @version 01.01  
  */  
 import java.awt.*;  
 import java.awt.image.*;  
 import javax.swing.*;  
 public class OFImage extends BufferedImage   
  {   
   /**   
   * Create an OFImage copied from a BufferedImage.   
   * @param image The image to copy.   
   */   
   public OFImage(BufferedImage image)   
   {   
    super(image.getColorModel(), image.copyData(null),    
      image.isAlphaPremultiplied(), null);   
   }   
   /**   
   * Create an OFImage with specified size and unspecified content.   
   * @param width The width of the image.   
   * @param height The height of the image.   
   */   
   public OFImage(int width, int height)   
   {   
    super(width, height, TYPE_INT_RGB);   
   }   
   /**   
   * Set a given pixel of this image to a specified color. The   
   * color is represented as an (r,g,b) value.   
   * @param x The x position of the pixel.   
   * @param y The y position of the pixel.   
   * @param col The color of the pixel.   
   */   
   public void setPixel(int x, int y, Color col)   
   {   
    int pixel = col.getRGB();   
    setRGB(x, y, pixel);   
   }   
   /**   
   * Get the color value at a specified pixel position.   
   * @param x The x position of the pixel.   
   * @param y The y position of the pixel.   
   * @return The color of the pixel at the given position.   
   */   
   public Color getPixel(int x, int y)   
   {   
    int pixel = getRGB(x, y);   
    return new Color(pixel);   
   }   
   /**   
   * Make this image a bit darker.   
   */   
   public void darker()   
   {   
    int height = getHeight();   
    int width = getWidth();   
    for(int y = 0; y < height; y++) {   
     for(int x = 0; x < width; x++) {   
      setPixel(x, y, getPixel(x, y).darker());   
     }   
    }   
   }   
   /**   
   * Make this image a bit lighter.   
   */   
   public void lighter()   
   {   
    int height = getHeight();   
    int width = getWidth();   
    for(int y = 0; y < height; y++) {   
     for(int x = 0; x < width; x++) {   
      setPixel(x, y, getPixel(x, y).brighter());   
     }   
    }   
   }   
   /**   
   * Perform a three level threshold operation.   
   * That is: repaint the image with only three color values:   
   *   white, gray, and black.   
   */   
   public void threshold()   
   {   
    int height = getHeight();   
    int width = getWidth();   
    for(int y = 0; y < height; y++) {   
     for(int x = 0; x < width; x++) {   
      Color pixel = getPixel(x, y);   
      int brightness = (pixel.getRed() + pixel.getBlue() + pixel.getGreen()) / 3;   
      if(brightness <= 85) {   
       setPixel(x, y, Color.BLACK);   
      }   
      else if(brightness <= 170) {   
       setPixel(x, y, Color.GRAY);   
      }   
      else {   
       setPixel(x, y, Color.WHITE);   
      }   
     }   
    }   
   }   
  }   

- ImageFileManager

 /**  
  * Write a description of class imageFileManager here.  
  *  
  * @author Ayu Mutiara Sari  
  * @version 01.01  
  */  
 import java.awt.image.*;  
 import javax.imageio.*;  
 import java.io.*;  
 public class ImageFileManager   
  {   
   // A constant for the image format that this writer uses for writing.   
   // Available formats are "jpg" and "png".   
   private static final String IMAGE_FORMAT = "jpg";   
   /**   
   * Read an image file from disk and return it as an image. This method   
   * can read JPG and PNG file formats. In case of any problem (e.g the file    
   * does not exist, is in an undecodable format, or any other read error)    
   * this method returns null.   
   *    
   * @param imageFile The image file to be loaded.   
   * @return   The image object or null is it could not be read.   
   */   
   public static OFImage loadImage(File imageFile)   
   {   
    try {   
     BufferedImage image = ImageIO.read(imageFile);   
     if(image == null || (image.getWidth(null) < 0)) {   
      // we could not load the image - probably invalid file format   
      return null;   
     }   
     return new OFImage(image);   
    }   
    catch(IOException exc) {   
     return null;   
    }   
   }   
   /**   
   * Write an image file to disk. The file format is JPG. In case of any    
   * problem the method just silently returns.   
   *    
   * @param image The image to be saved.   
   * @param file The file to save to.   
   */   
   public static void saveImage(OFImage image, File file)   
   {   
    try {   
     ImageIO.write(image, IMAGE_FORMAT, file);   
    }   
    catch(IOException exc) {   
     return;   
    }   
   }   
  }   

- Fish Eye Filter

 /**  
  * Write a description of class FishEyeFilter here.  
  *  
  * @author Ayu Mutiara Sari  
  * @version 01.01  
  */  
 import java.awt.Color;  
 public class FishEyeFilter extends Filter  
 {  
   // constants:  
   private final static int SCALE = 20;  // this defines the strenght of the filter  
   private final static double TWO_PI = 2 * Math.PI;  
   /**  
    * Constructor for objects of class LensFilter.  
    * @param name The name of the filter.  
    */  
   public FishEyeFilter(String name)  
   {  
     super(name);  
   }  
   /**  
    * Apply this filter to an image.  
    *   
    * @param image The image to be changed by this filter.  
    */  
   public void apply(OFImage image)  
   {  
     int height = image.getHeight();  
     int width = image.getWidth();  
     OFImage original = new OFImage(image);  
     int[] xa = computeXArray(width);  
     int[] ya = computeYArray(height);  
     for(int y = 0; y < height; y++) {  
       for(int x = 0; x < width; x++) {  
         image.setPixel(x, y, original.getPixel(x + xa[x], y + ya[y]));  
       }  
     }  
   }  
   /**  
    * Compute and return an array of horizontal offsets for each pixel column.  
    * These can then be applied as the horizontal offset for each pixel.  
    */  
   private int[] computeXArray(int width)  
   {  
     int[] xArray = new int[width];  
     for(int i=0; i < width; i++) {  
       xArray[i] = (int)(Math.sin( ((double)i / width) * TWO_PI) * SCALE);  
     }  
     return xArray;  
   }  
   /**  
    * Compute and return an array of vertical offsets for each pixel row.  
    * These can then be applied as the vertical offset for each pixel.  
    */  
   private int[] computeYArray(int height)  
   {  
     int[] yArray = new int[height];  
     for(int i=0; i < height; i++) {  
       yArray[i] = (int)(Math.sin( ((double)i / height) * TWO_PI) * SCALE);  
     }  
     return yArray;  
   }  
 }  

- Darker Filter

 /**  
  * Write a description of class DarkerFilter here.  
  *  
  * @author Ayu Mutiara Sari  
  * @version 01.01  
  */  
 public class DarkerFilter extends Filter  
 {  
   /**  
    * Constructor for objects of class DarkerFilter.  
    * @param name The name of the filter.  
    */  
   public DarkerFilter(String name)  
   {  
     super(name);  
   }  
   /**  
    * Apply this filter to an image.  
    *   
    * @param image The image to be changed by this filter.  
    */  
   public void apply(OFImage image)  
   {  
     int height = image.getHeight();  
     int width = image.getWidth();  
     for(int y = 0; y < height; y++) {  
       for(int x = 0; x < width; x++) {  
         image.setPixel(x, y, image.getPixel(x, y).darker());  
       }  
     }  
   }  
 }  

- Edge Filter

 /**  
  * Write a description of class EdgeFilter here.  
  *  
  * @author Ayu Mutiara Sari  
  * @version 01.01  
  */  
 import java.awt.Color;  
 import java.util.List;  
 import java.util.ArrayList;  
 public class EdgeFilter extends Filter  
 {  
   private static final int TOLERANCE = 20;  
   private OFImage original;  
   private int width;  
   private int height;  
   /**  
    * Constructor for objects of class EdgeFilter.  
    * @param name The name of the filter.  
    */  
   public EdgeFilter(String name)  
   {  
     super(name);  
   }  
   /**  
    * Apply this filter to an image.  
    *   
    * @param image The image to be changed by this filter.  
    */  
   public void apply(OFImage image)  
   {  
     original = new OFImage(image);  
     width = original.getWidth();  
     height = original.getHeight();  
     for(int y = 0; y < height; y++) {  
       for(int x = 0; x < width; x++) {  
         image.setPixel(x, y, edge(x, y));  
       }  
     }  
   }  
   /**  
    * Return a new color that is the smoothed color of a given  
    * position. The "smoothed color" is the color value that is the  
    * average of this pixel and all the adjacent pixels.  
    * @param xpos The x position of the pixel.  
    * @param ypos The y position of the pixel.  
    * @return The smoothed color.  
    */  
   private Color edge(int xpos, int ypos)  
   {  
     List<Color> pixels = new ArrayList<Color>(9);  
     for(int y = ypos-1; y <= ypos+1; y++) {  
       for(int x = xpos-1; x <= xpos+1; x++) {  
         if( x >= 0 && x < width && y >= 0 && y < height ) {  
           pixels.add(original.getPixel(x, y));  
         }  
       }  
     }  
     return new Color(255 - diffRed(pixels), 255 - diffGreen(pixels), 255 - diffBlue(pixels));  
   }  
   /**  
    * @param pixels The list of pixels to be averaged.  
    * @return The average of all the red values in the given list of pixels.  
    */  
   private int diffRed(List<Color> pixels)  
   {  
     int max = 0;  
     int min = 255;  
     for(Color color : pixels) {  
       int val = color.getRed();  
       if(val > max) {  
         max = val;  
       }  
       if(val < min) {  
         min = val;  
       }  
     }  
     int difference = max - min - TOLERANCE;  
     if(difference < 0) {  
       difference = 0;  
     }  
     return difference;  
   }  
   /**  
    * @param pixels The list of pixels to be averaged.  
    * @return The average of all the green values in the given list of pixels.  
    */  
   private int diffGreen(List<Color> pixels)  
   {  
     int max = 0;  
     int min = 255;  
     for(Color color : pixels) {  
       int val = color.getGreen();  
       if(val > max) {  
         max = val;  
       }  
       if(val < min) {  
         min = val;  
       }  
     }  
     int difference = max - min - TOLERANCE;  
     if(difference < 0) {  
       difference = 0;  
     }  
     return difference;  
   }  
   /**  
    * @param pixels The list of pixels to be averaged.  
    * @return The average of all the blue values in the given list of pixels.  
    */  
   private int diffBlue(List<Color> pixels)  
   {  
     int max = 0;  
     int min = 255;  
     for(Color color : pixels) {  
       int val = color.getBlue();  
       if(val > max) {  
         max = val;  
       }  
       if(val < min) {  
         min = val;  
       }  
     }  
     int difference = max - min - TOLERANCE;  
     if(difference < 0) {  
       difference = 0;  
     }  
     return difference;  
   }  
 }  

- Invert Filter

 /**  
  * Write a description of class InvertFilter here.  
  *  
  * @author Ayu Mutiara Sari  
  * @version 01.01  
  */  
 import java.awt.Color;  
 public class InvertFilter extends Filter  
 {  
   /**  
    * Constructor for objects of class InvertFilter.  
    * @param name The name of the filter.  
    */  
   public InvertFilter(String name)  
   {  
     super(name);  
   }  
   /**  
    * Apply this filter to an image.  
    *   
    * @param image The image to be changed by this filter.  
    */  
   public void apply(OFImage image)  
   {  
     int height = image.getHeight();  
     int width = image.getWidth();  
     for(int y = 0; y < height; y++) {  
       for(int x = 0; x < width; x++) {  
         Color pix = image.getPixel(x, y);  
         image.setPixel(x, y, new Color(255 - pix.getRed(),  
                         255 - pix.getGreen(),  
                         255 - pix.getBlue()));  
       }  
     }  
   }  
 }  

- Mirror Filter

 /**  
  * Write a description of class MirrorFilter here.  
  *  
  * @author Ayu Mutiara Sari  
  * @version 01.01  
  */  
 import java.awt.Color;  
 public class MirrorFilter extends Filter  
 {  
   /**  
     * Constructor for objects of class MirrorFilter.  
    * @param name The name of the filter.  
    */  
   public MirrorFilter(String name)  
   {  
     super(name);  
   }  
   /**  
    * Apply this filter to an image.  
    *   
    * @param image The image to be changed by this filter.  
    */  
   public void apply(OFImage image)  
   {  
     int height = image.getHeight();  
     int width = image.getWidth();  
     for(int y = 0; y < height; y++) {  
       for(int x = 0; x < width / 2; x++) {  
         Color left = image.getPixel(x, y);  
         image.setPixel(x, y, image.getPixel(width - 1 - x, y));  
         image.setPixel(width - 1 - x, y, left);  
       }  
     }  
   }  
 }  

- Greyscale Filter

 /**  
  * Write a description of class GrayScaleFilter here.  
  *  
  * @author Ayu Mutiara Sari  
  * @version 01.01  
  */  
 import java.awt.Color;  
 public class GrayScaleFilter extends Filter  
 {  
      /**  
       * Constructor for objects of class GrayScaleFilter.  
       * @param name The name of the filter.  
       */  
      public GrayScaleFilter(String name)  
   {  
     super(name);  
      }  
   /**  
    * Apply this filter to an image.  
    *   
    * @param image The image to be changed by this filter.  
    */  
   public void apply(OFImage image)  
   {  
     int height = image.getHeight();  
     int width = image.getWidth();  
     for(int y = 0; y < height; y++) {  
       for(int x = 0; x < width; x++) {  
         Color pix = image.getPixel(x, y);  
         int avg = (pix.getRed() + pix.getGreen() + pix.getBlue()) / 3;  
         image.setPixel(x, y, new Color(avg, avg, avg));  
       }  
     }  
   }  
 }  

- Filter

 /**  
  * Write a description of class filter here.  
  *  
  * @author Ayu Mutiara Sari  
  * @version 01.01  
  */  
 public abstract class Filter  
 {  
   private String name;  
   /**  
    * Create a new filter with a given name.  
    * @param name The name of the filter.  
    */  
   public Filter(String name)  
   {  
     this.name = name;  
   }  
   /**  
    * Return the name of this filter.  
    *   
    * @return The name of this filter.  
    */  
   public String getName()  
   {  
     return name;  
   }  
   /**  
    * Apply this filter to an image.  
    *   
    * @param image The image to be changed by this filter.  
    */  
   public abstract void apply(OFImage image);  
 }  






Minggu, 09 Desember 2018

PBO A- Image Viewer

Nama: Ayu Mutiara Sari
NRP: 05111740000149
Kelas: PBO A

1. OFImage

  import java.awt.*;   
  import java.awt.image.*;   
  import javax.swing.*;   
 public class OFImage extends BufferedImage   
  {   
   /**   
   * Create an OFImage copied from a BufferedImage.   
   * @param image The image to copy.   
   */   
   public OFImage(BufferedImage image)   
   {   
    super(image.getColorModel(), image.copyData(null),    
      image.isAlphaPremultiplied(), null);   
   }   
   /**   
   * Create an OFImage with specified size and unspecified content.   
   * @param width The width of the image.   
   * @param height The height of the image.   
   */   
   public OFImage(int width, int height)   
   {   
    super(width, height, TYPE_INT_RGB);   
   }   
   /**   
   * Set a given pixel of this image to a specified color. The   
   * color is represented as an (r,g,b) value.   
   * @param x The x position of the pixel.   
   * @param y The y position of the pixel.   
   * @param col The color of the pixel.   
   */   
   public void setPixel(int x, int y, Color col)   
   {   
    int pixel = col.getRGB();   
    setRGB(x, y, pixel);   
   }   
   /**   
   * Get the color value at a specified pixel position.   
   * @param x The x position of the pixel.   
   * @param y The y position of the pixel.   
   * @return The color of the pixel at the given position.   
   */   
   public Color getPixel(int x, int y)   
   {   
    int pixel = getRGB(x, y);   
    return new Color(pixel);   
   }   
   /**   
   * Make this image a bit darker.   
   */   
   public void darker()   
   {   
    int height = getHeight();   
    int width = getWidth();   
    for(int y = 0; y < height; y++) {   
     for(int x = 0; x < width; x++) {   
      setPixel(x, y, getPixel(x, y).darker());   
     }   
    }   
   }   
   /**   
   * Make this image a bit lighter.   
   */   
   public void lighter()   
   {   
    int height = getHeight();   
    int width = getWidth();   
    for(int y = 0; y < height; y++) {   
     for(int x = 0; x < width; x++) {   
      setPixel(x, y, getPixel(x, y).brighter());   
     }   
    }   
   }   
   /**   
   * Perform a three level threshold operation.   
   * That is: repaint the image with only three color values:   
   *   white, gray, and black.   
   */   
   public void threshold()   
   {   
    int height = getHeight();   
    int width = getWidth();   
    for(int y = 0; y < height; y++) {   
     for(int x = 0; x < width; x++) {   
      Color pixel = getPixel(x, y);   
      int brightness = (pixel.getRed() + pixel.getBlue() + pixel.getGreen()) / 3;   
      if(brightness <= 85) {   
       setPixel(x, y, Color.BLACK);   
      }   
      else if(brightness <= 170) {   
       setPixel(x, y, Color.GRAY);   
      }   
      else {   
       setPixel(x, y, Color.WHITE);   
      }   
     }   
    }   
   }   
  }   

2. ImageViewer

  import java.awt.*;   
  import java.awt.event.*;   
  import java.awt.image.*;   
  import javax.swing.*;   
  import java.io.File;   
 public class ImageViewer   
  {   
   // static fields:   
   private static final String VERSION = "Version 1.0";   
   private static JFileChooser fileChooser = new JFileChooser(System.getProperty("user.dir"));   
   // fields:   
   private JFrame frame;   
   private ImagePanel imagePanel;   
   private JLabel filenameLabel;   
   private JLabel statusLabel;   
   private OFImage currentImage;   
   /**   
   * Create an ImageViewer show it on screen.   
   */   
   public ImageViewer()   
   {   
    currentImage = null;   
    makeFrame();   
   }   
   // ---- implementation of menu functions ----   
   /**   
   * Open function: open a file chooser to select a new image file.   
   */   
   private void openFile()   
   {   
    int returnVal = fileChooser.showOpenDialog(frame);   
    if(returnVal != JFileChooser.APPROVE_OPTION) {   
     return; // cancelled   
    }   
    File selectedFile = fileChooser.getSelectedFile();   
    currentImage = ImageFileManager.loadImage(selectedFile);   
    if(currentImage == null) { // image file was not a valid image   
     JOptionPane.showMessageDialog(frame,   
       "The file was not in a recognized image file format.",   
       "Image Load Error",   
       JOptionPane.ERROR_MESSAGE);   
     return;   
    }   
    imagePanel.setImage(currentImage);   
    showFilename(selectedFile.getPath());   
    showStatus("File loaded.");   
    frame.pack();   
   }   
   /**   
   * Close function: close the current image.   
   */   
   private void close()   
   {   
    currentImage = null;   
    imagePanel.clearImage();   
    showFilename(null);   
   }   
   /**   
   * Quit function: quit the application.   
   */   
   private void quit()   
   {   
    System.exit(0);   
   }   
   /**   
   * 'Darker' function: make the picture darker.   
   */   
   private void makeDarker()   
   {   
    if(currentImage != null) {   
     currentImage.darker();   
     frame.repaint();   
     showStatus("Applied: darker");   
    }   
    else {   
     showStatus("No image loaded.");   
    }   
   }   
   /**   
   * 'Lighter' function: make the picture lighter   
   */   
   private void makeLighter()   
   {   
    if(currentImage != null) {   
     currentImage.lighter();   
     frame.repaint();   
     showStatus("Applied: lighter");   
    }   
    else {   
     showStatus("No image loaded.");   
    }   
   }   
   /**   
   * 'threshold' function: apply the threshold filter   
   */   
   private void threshold()   
   {   
    if(currentImage != null) {   
     currentImage.threshold();   
     frame.repaint();   
     showStatus("Applied: threshold");   
    }   
    else {   
     showStatus("No image loaded.");   
    }   
   }   
   /**   
   * 'Lighter' function: make the picture lighter   
   */   
   private void showAbout()   
   {   
    JOptionPane.showMessageDialog(frame,    
       "ImageViewer\n" + VERSION,   
       "About ImageViewer",    
       JOptionPane.INFORMATION_MESSAGE);   
   }   
   // ---- support methods ----   
   /**   
   * Display a file name on the appropriate label.   
   * @param filename The file name to be displayed.   
   */   
   private void showFilename(String filename)   
   {   
    if(filename == null) {   
     filenameLabel.setText("No file displayed.");   
    }   
    else {   
     filenameLabel.setText("File: " + filename);   
    }   
   }   
   /**   
   * Display a status message in the frame's status bar.   
   * @param text The status message to be displayed.   
   */   
   private void showStatus(String text)   
   {   
    statusLabel.setText(text);   
   }   
   // ---- swing stuff to build the frame and all its components ----   
   /**   
   * Create the Swing frame and its content.   
   */   
   private void makeFrame()   
   {   
    frame = new JFrame("ImageViewer");   
    makeMenuBar(frame);   
    Container contentPane = frame.getContentPane();   
    // Specify the layout manager with nice spacing   
    contentPane.setLayout(new BorderLayout(6, 6));   
    filenameLabel = new JLabel();   
    contentPane.add(filenameLabel, BorderLayout.NORTH);   
    imagePanel = new ImagePanel();   
    contentPane.add(imagePanel, BorderLayout.CENTER);   
    statusLabel = new JLabel(VERSION);   
    contentPane.add(statusLabel, BorderLayout.SOUTH);   
    // building is done - arrange the components and show     
    showFilename(null);   
    frame.pack();   
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();   
    frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2);   
    frame.setVisible(true);   
   }   
   /**   
   * Create the main frame's menu bar.   
   * @param frame The frame that the menu bar should be added to.   
   */   
   private void makeMenuBar(JFrame frame)   
   {   
    final int SHORTCUT_MASK =   
     Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();   
    JMenuBar menubar = new JMenuBar();   
    frame.setJMenuBar(menubar);   
    JMenu menu;   
    JMenuItem item;   
    // create the File menu   
    menu = new JMenu("File");   
    menubar.add(menu);   
    item = new JMenuItem("Open");   
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, SHORTCUT_MASK));   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { openFile(); }   
         });   
    menu.add(item);   
    item = new JMenuItem("Close");   
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, SHORTCUT_MASK));   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { close(); }   
         });   
    menu.add(item);   
    menu.addSeparator();   
    item = new JMenuItem("Quit");   
     item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, SHORTCUT_MASK));   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { quit(); }   
         });   
    menu.add(item);   
    // create the Filter menu   
    menu = new JMenu("Filter");   
    menubar.add(menu);   
    item = new JMenuItem("Darker");   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { makeDarker(); }   
         });   
    menu.add(item);   
    item = new JMenuItem("Lighter");   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { makeLighter(); }   
         });   
    menu.add(item);   
    item = new JMenuItem("Threshold");   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { threshold(); }   
         });   
    menu.add(item);   
    // create the Help menu   
    menu = new JMenu("Help");   
    menubar.add(menu);   
    item = new JMenuItem("About ImageViewer...");   
     item.addActionListener(new ActionListener() {   
          public void actionPerformed(ActionEvent e) { showAbout(); }   
         });   
    menu.add(item);   
   }   
  }   

3. ImageFileManager

  import java.awt.image.*;   
  import javax.imageio.*;   
  import java.io.*;   
 public class ImageFileManager   
  {   
   // A constant for the image format that this writer uses for writing.   
   // Available formats are "jpg" and "png".   
   private static final String IMAGE_FORMAT = "jpg";   
   /**   
   * Read an image file from disk and return it as an image. This method   
   * can read JPG and PNG file formats. In case of any problem (e.g the file    
   * does not exist, is in an undecodable format, or any other read error)    
   * this method returns null.   
   *    
   * @param imageFile The image file to be loaded.   
   * @return   The image object or null is it could not be read.   
   */   
   public static OFImage loadImage(File imageFile)   
   {   
    try {   
     BufferedImage image = ImageIO.read(imageFile);   
     if(image == null || (image.getWidth(null) < 0)) {   
      // we could not load the image - probably invalid file format   
      return null;   
     }   
     return new OFImage(image);   
    }   
    catch(IOException exc) {   
     return null;   
    }   
   }   
   /**   
   * Write an image file to disk. The file format is JPG. In case of any    
   * problem the method just silently returns.   
   *    
   * @param image The image to be saved.   
   * @param file The file to save to.   
   */   
   public static void saveImage(OFImage image, File file)   
   {   
    try {   
     ImageIO.write(image, IMAGE_FORMAT, file);   
    }   
    catch(IOException exc) {   
     return;   
    }   
   }   
  }   

4. ImagePanel

  import java.awt.*;   
  import javax.swing.*;   
  import java.awt.image.*;  
 public class ImagePanel extends JComponent   
  {   
   // The current width and height of this panel   
   private int width, height;   
   // An internal image buffer that is used for painting. For   
   // actual display, this image buffer is then copied to screen.   
   private OFImage panelImage;   
   /**   
   * Create a new, empty ImagePanel.   
   */   
   public ImagePanel()   
   {   
    width = 360; // arbitrary size for empty panel   
    height = 240;   
    panelImage = null;   
   }   
   /**   
   * Set the image that this panel should show.   
   *    
   * @param image The image to be displayed.   
   */   
   public void setImage(OFImage image)   
   {   
    if(image != null) {   
     width = image.getWidth();   
     height = image.getHeight();   
     panelImage = image;   
     repaint();   
    }   
   }   
   /**   
   * Clear the image on this panel.   
   */   
   public void clearImage()   
   {   
    Graphics imageGraphics = panelImage.getGraphics();   
    imageGraphics.setColor(Color.LIGHT_GRAY);   
    imageGraphics.fillRect(0, 0, width, height);   
    repaint();   
   }   
   // The following methods are redefinitions of methods   
   // inherited from superclasses.   
   /**   
   * Tell the layout manager how big we would like to be.   
   * (This method gets called by layout managers for placing   
   * the components.)   
   *    
   * @return The preferred dimension for this component.   
   */   
   public Dimension getPreferredSize()   
   {   
    return new Dimension(width, height);   
   }   
   /**   
   * This component needs to be redisplayed. Copy the internal image    
   * to screen. (This method gets called by the Swing screen painter    
   * every time it want this component displayed.)   
   *    
   * @param g The graphics context that can be used to draw on this component.   
   */   
   public void paintComponent(Graphics g)   
   {   
    Dimension size = getSize();   
    g.clearRect(0, 0, size.width, size.height);   
    if(panelImage != null) {   
     g.drawImage(panelImage, 0, 0, null);   
    }   
   }   
  }   

Hasil:



PWEB C- Framework

Nama: Ayu Mutiara Sari
NRP: 05111740000149
Kelas: PWEB C
Sumber: PetaniKode



/config/database.php
 <?php  
 defined('BASEPATH') OR exit('No direct script access allowed');  
 /*  
 | -------------------------------------------------------------------  
 | DATABASE CONNECTIVITY SETTINGS  
 | -------------------------------------------------------------------  
 | This file will contain the settings needed to access your database.  
 |  
 | For complete instructions please consult the 'Database Connection'  
 | page of the User Guide.  
 |  
 | -------------------------------------------------------------------  
 | EXPLANATION OF VARIABLES  
 | -------------------------------------------------------------------  
 |  
 |     ['dsn']   The full DSN string describe a connection to the database.  
 |     ['hostname'] The hostname of your database server.  
 |     ['username'] The username used to connect to the database  
 |     ['password'] The password used to connect to the database  
 |     ['database'] The name of the database you want to connect to  
 |     ['dbdriver'] The database driver. e.g.: mysqli.  
 |               Currently supported:  
 |                     cubrid, ibase, mssql, mysql, mysqli, oci8,  
 |                     odbc, pdo, postgre, sqlite, sqlite3, sqlsrv  
 |     ['dbprefix'] You can add an optional prefix, which will be added  
 |                     to the table name when using the Query Builder class  
 |     ['pconnect'] TRUE/FALSE - Whether to use a persistent connection  
 |     ['db_debug'] TRUE/FALSE - Whether database errors should be displayed.  
 |     ['cache_on'] TRUE/FALSE - Enables/disables query caching  
 |     ['cachedir'] The path to the folder where cache files should be stored  
 |     ['char_set'] The character set used in communicating with the database  
 |     ['dbcollat'] The character collation used in communicating with the database  
 |                     NOTE: For MySQL and MySQLi databases, this setting is only used  
 |                      as a backup if your server is running PHP < 5.2.3 or MySQL < 5.0.7  
 |                     (and in table creation queries made with DB Forge).  
 |                      There is an incompatibility in PHP with mysql_real_escape_string() which  
 |                      can make your site vulnerable to SQL injection if you are using a  
 |                      multi-byte character set and are running versions lower than these.  
 |                      Sites using Latin-1 or UTF-8 database character set and collation are unaffected.  
 |     ['swap_pre'] A default table prefix that should be swapped with the dbprefix  
 |     ['encrypt'] Whether or not to use an encrypted connection.  
 |  
 |               'mysql' (deprecated), 'sqlsrv' and 'pdo/sqlsrv' drivers accept TRUE/FALSE  
 |               'mysqli' and 'pdo/mysql' drivers accept an array with the following options:  
 |  
 |                    'ssl_key'  - Path to the private key file  
 |                    'ssl_cert'  - Path to the public key certificate file  
 |                    'ssl_ca'   - Path to the certificate authority file  
 |                    'ssl_capath' - Path to a directory containing trusted CA certificates in PEM format  
 |                    'ssl_cipher' - List of *allowed* ciphers to be used for the encryption, separated by colons (':')  
 |                    'ssl_verify' - TRUE/FALSE; Whether verify the server certificate or not ('mysqli' only)  
 |  
 |     ['compress'] Whether or not to use client compression (MySQL only)  
 |     ['stricton'] TRUE/FALSE - forces 'Strict Mode' connections  
 |                                   - good for ensuring strict SQL while developing  
 |     ['ssl_options']     Used to set various SSL options that can be used when making SSL connections.  
 |     ['failover'] array - A array with 0 or more data for connections if the main should fail.  
 |     ['save_queries'] TRUE/FALSE - Whether to "save" all executed queries.  
 |                     NOTE: Disabling this will also effectively disable both  
 |                     $this->db->last_query() and profiling of DB queries.  
 |                     When you run a query, with this setting set to TRUE (default),  
 |                     CodeIgniter will store the SQL statement for debugging purposes.  
 |                     However, this may cause high memory usage, especially if you run  
 |                     a lot of SQL queries ... disable this to avoid that problem.  
 |  
 | The $active_group variable lets you choose which connection group to  
 | make active. By default there is only one group (the 'default' group).  
 |  
 | The $query_builder variables lets you determine whether or not to load  
 | the query builder class.  
 */  
 $active_group = 'default';  
 $query_builder = TRUE;  
 $db['default'] = array(  
      'dsn'     => '',  
      'hostname' => 'localhost',  
      'username' => 'root',  
      'password' => '',  
      'database' => 'tokobuah',  
      'dbdriver' => 'mysqli',  
      'dbprefix' => '',  
      'pconnect' => FALSE,  
      'db_debug' => (ENVIRONMENT !== 'production'),  
      'cache_on' => FALSE,  
      'cachedir' => '',  
      'char_set' => 'utf8',  
      'dbcollat' => 'utf8_general_ci',  
      'swap_pre' => '',  
      'encrypt' => FALSE,  
      'compress' => FALSE,  
      'stricton' => FALSE,  
      'failover' => array(),  
      'save_queries' => TRUE  
 );  


-head.php
 <meta charset="utf-8">  
 <meta http-equiv="X-UA-Compatible" content="IE=edge">  
 <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">  
 <title><?php echo SITE_NAME .": ". ucfirst($this->uri->segment(1)) ." - ". ucfirst($this->uri->segment(2)) ?></title>  
 <!-- Bootstrap core CSS-->  
 <link href="<?php echo base_url('assets/bootstrap/css/bootstrap.min.css') ?>" rel="stylesheet">  
 <!-- Custom fonts for this template-->  
 <link href="<?php echo base_url('assets/fontawesome-free/css/all.min.css') ?>" rel="stylesheet" type="text/css">  
 <!-- Page level plugin CSS-->  
 <link href="<?php echo base_url('assets/datatables/dataTables.bootstrap4.css') ?>" rel="stylesheet">  
 <!-- Custom styles for this template-->  
 <link href="<?php echo base_url('css/sb-admin.css') ?>" rel="stylesheet">  

-navbar.php
1
 <nav class="navbar navbar-expand navbar-dark bg-success static-top">  
   <a class="navbar-brand mr-1" href="<?php echo site_url('admin') ?>"><?php echo SITE_NAME ?></a>  
   <button class="btn btn-link btn-sm text-white order-1 order-sm-0" id="sidebarToggle" href="#">  
     <i class="fas fa-bars"></i>  
   </button>  
   <!-- Navbar Search -->  
   <form class="d-none d-md-inline-block form-inline ml-auto mr-0 mr-md-3 my-2 my-md-0">  
     <div class="input-group">  
       <input type="text" class="form-control" placeholder="Search for..." aria-label="Search" aria-describedby="basic-addon2">  
       <div class="input-group-append">  
         <button class="btn btn-light" type="button">  
           <i class="fas fa-search"></i>  
         </button>  
       </div>  
     </div>  
   </form>  
   <!-- Navbar -->  
   <ul class="navbar-nav ml-auto ml-md-0">  
     <li class="nav-item dropdown no-arrow mx-1">  
       <a class="nav-link dropdown-toggle" href="#" id="alertsDropdown" role="button" data-toggle="dropdown" aria-haspopup="true"  
         aria-expanded="false">  
         <i class="fas fa-bell fa-fw"></i>  
         <span class="badge badge-danger">9+</span>  
       </a>  
       <div class="dropdown-menu dropdown-menu-right" aria-labelledby="alertsDropdown">  
         <a class="dropdown-item" href="#">Action</a>  
         <a class="dropdown-item" href="#">Another action</a>  
         <div class="dropdown-divider"></div>  
         <a class="dropdown-item" href="#">Something else here</a>  
       </div>  
     </li>  
     <li class="nav-item dropdown no-arrow mx-1">  
       <a class="nav-link dropdown-toggle" href="#" id="messagesDropdown" role="button" data-toggle="dropdown" aria-haspopup="true"  
         aria-expanded="false">  
         <i class="fas fa-envelope fa-fw"></i>  
         <span class="badge badge-danger">7</span>  
       </a>  
       <div class="dropdown-menu dropdown-menu-right" aria-labelledby="messagesDropdown">  
         <a class="dropdown-item" href="#">Action</a>  
         <a class="dropdown-item" href="#">Another action</a>  
         <div class="dropdown-divider"></div>  
         <a class="dropdown-item" href="#">Something else here</a>  
       </div>  
     </li>  
     <li class="nav-item dropdown no-arrow">  
       <a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" aria-haspopup="true"  
         aria-expanded="false">  
         <i class="fas fa-user-circle fa-fw"></i> Admin  
       </a>  
       <div class="dropdown-menu dropdown-menu-right" aria-labelledby="userDropdown">  
         <a class="dropdown-item" href="#">Settings</a>  
         <a class="dropdown-item" href="#">Activity Log</a>  
         <div class="dropdown-divider"></div>  
         <a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal">Logout</a>  
       </div>  
     </li>  
   </ul>  
 </nav>  


-sidebar.php
 <!-- Sidebar -->  
 <ul class="sidebar navbar-nav">  
   <li class="nav-item <?php echo $this->uri->segment(2) == '' ? 'active': '' ?>">  
     <a class="nav-link" href="<?php echo site_url('admin') ?>">  
       <i class="fas fa-fw fa-tachometer-alt"></i>  
       <span>Overview</span>  
     </a>  
   </li>  
   <li class="nav-item dropdown <?php echo $this->uri->segment(2) == 'products' ? 'active': '' ?>">  
     <a class="nav-link dropdown-toggle" href="#" id="pagesDropdown" role="button" data-toggle="dropdown" aria-haspopup="true"  
       aria-expanded="false">  
       <i class="fas fa-fw fa-boxes"></i>  
       <span>Products</span>  
     </a>  
     <div class="dropdown-menu" aria-labelledby="pagesDropdown">  
       <a class="dropdown-item" href="<?php echo site_url('admin/products/add') ?>">New Product</a>  
       <a class="dropdown-item" href="<?php echo site_url('admin/products') ?>">List Product</a>  
     </div>  
   </li>  
   <li class="nav-item">  
     <a class="nav-link" href="#">  
       <i class="fas fa-fw fa-users"></i>  
       <span>Users</span></a>  
   </li>  
   <li class="nav-item">  
     <a class="nav-link" href="#">  
       <i class="fas fa-fw fa-cog"></i>  
       <span>Settings</span></a>  
   </li>  
 </ul>  


-breadcrumb.php

 <!-- Breadcrumbs-->  
 <ol class="breadcrumb">  
 <?php foreach ($this->uri->segments as $segment): ?>  
      <?php   
           $url = substr($this->uri->uri_string, 0, strpos($this->uri->uri_string, $segment)) . $segment;  
           $is_active = $url == $this->uri->uri_string;  
      ?>  
      <li class="breadcrumb-item <?php echo $is_active ? 'active': '' ?>">  
           <?php if($is_active): ?>  
                <?php echo ucfirst($segment) ?>  
           <?php else: ?>  
                <a href="<?php echo site_url($url) ?>"><?php echo ucfirst($segment) ?></a>  
           <?php endif; ?>  
      </li>  
 <?php endforeach; ?>  
 </ol>  
 Partial   

-footer.php

 <!-- Sticky Footer -->  
 <footer class="sticky-footer">  
  <div class="container my-auto">  
   <div class="copyright text-center my-auto">  
    <span>Copyright <?php echo SITE_NAME ." ". Date('Y') ?></span>  
   </div>  
  </div>  
 </footer>  

-scrollup.php
 <!-- Scroll to Top Button-->  
 <a class="scroll-to-top rounded" href="#page-top">  
      <i class="fas fa-angle-up"></i>  
 </a>  



-modal,php
 <!-- Logout Modal-->  
 <div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">  
  <div class="modal-dialog" role="document">  
   <div class="modal-content">  
    <div class="modal-header">  
     <h5 class="modal-title" id="exampleModalLabel">Ready to Leave?</h5>  
     <button class="close" type="button" data-dismiss="modal" aria-label="Close">  
      <span aria-hidden="true">×</span>  
     </button>  
    </div>  
    <div class="modal-body">Select "Logout" below if you are ready to end your current session.</div>  
    <div class="modal-footer">  
     <button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>  
     <a class="btn btn-primary" href="login.html">Logout</a>  
    </div>  
   </div>  
  </div>  
 </div>  
 <!-- Logout Delete Confirmation-->  
 <div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">  
  <div class="modal-dialog" role="document">  
   <div class="modal-content">  
    <div class="modal-header">  
     <h5 class="modal-title" id="exampleModalLabel">Are you sure?</h5>  
     <button class="close" type="button" data-dismiss="modal" aria-label="Close">  
      <span aria-hidden="true">×</span>  
     </button>  
    </div>  
    <div class="modal-body">Data yang dihapus tidak akan bisa dikembalikan.</div>  
    <div class="modal-footer">  
     <button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>  
     <a id="btn-delete" class="btn btn-danger" href="#">Delete</a>  
    </div>  
   </div>  
  </div>  
 </div>  


-js.php

 <!-- Bootstrap core JavaScript-->  
 <script src="<?php echo base_url('assets/jquery/jquery.min.js') ?>"></script>  
 <script src="<?php echo base_url('assets/bootstrap/js/bootstrap.bundle.min.js') ?>"></script>  
 <!-- Core plugin JavaScript-->  
 <script src="<?php echo base_url('assets/jquery-easing/jquery.easing.min.js') ?>"></script>  
 <!-- Page level plugin JavaScript-->  
 <script src="<?php echo base_url('assets/chart.js/Chart.min.js') ?>"></script>  
 <script src="<?php echo base_url('assets/datatables/jquery.dataTables.js') ?>"></script>  
 <script src="<?php echo base_url('assets/datatables/dataTables.bootstrap4.js') ?>"></script>  
 <!-- Custom scripts for all pages-->  
 <script src="<?php echo base_url('js/sb-admin.min.js') ?>"></script>  
 <!-- Demo scripts for this page-->  
 <script src="<?php echo base_url('js/demo/datatables-demo.js') ?>"></script>  
 <script src="<?php echo base_url('js/demo/chart-area-demo.js') ?>"></script>  


-overview.php

 <!DOCTYPE html>  
 <html lang="en">  
 <head>  
      <?php $this->load->view("admin/_partials/head.php") ?>  
 </head>  
 <body id="page-top">  
 <?php $this->load->view("admin/_partials/navbar.php") ?>  
 <div id="wrapper">  
      <?php $this->load->view("admin/_partials/sidebar.php") ?>  
      <div id="content-wrapper">  
           <div class="container-fluid">  
     <!--   
     karena ini halaman overview (home), kita matikan partial breadcrumb.  
     Jika anda ingin mengampilkan breadcrumb di halaman overview,  
     silahkan hilangkan komentar (//) di tag PHP di bawah.  
     -->  
           <?php //$this->load->view("admin/_partials/breadcrumb.php") ?>  
           <!-- Icon Cards-->  
           <div class="row">  
                <div class="col-xl-3 col-sm-6 mb-3">  
                <div class="card text-white bg-primary o-hidden h-100">  
                     <div class="card-body">  
                     <div class="card-body-icon">  
                          <i class="fas fa-fw fa-comments"></i>  
                     </div>  
                     <div class="mr-5">26 New Messages!</div>  
                     </div>  
                     <a class="card-footer text-white clearfix small z-1" href="#">  
                     <span class="float-left">View Details</span>  
                     <span class="float-right">  
                          <i class="fas fa-angle-right"></i>  
                     </span>  
                     </a>  
                </div>  
                </div>  
                <div class="col-xl-3 col-sm-6 mb-3">  
                <div class="card text-white bg-warning o-hidden h-100">  
                     <div class="card-body">  
                     <div class="card-body-icon">  
                          <i class="fas fa-fw fa-list"></i>  
                     </div>  
                     <div class="mr-5">11 New Tasks!</div>  
                     </div>  
                     <a class="card-footer text-white clearfix small z-1" href="#">  
                     <span class="float-left">View Details</span>  
                     <span class="float-right">  
                          <i class="fas fa-angle-right"></i>  
                     </span>  
                     </a>  
                </div>  
                </div>  
                <div class="col-xl-3 col-sm-6 mb-3">  
                <div class="card text-white bg-success o-hidden h-100">  
                     <div class="card-body">  
                     <div class="card-body-icon">  
                          <i class="fas fa-fw fa-shopping-cart"></i>  
                     </div>  
                     <div class="mr-5">123 New Orders!</div>  
                     </div>  
                     <a class="card-footer text-white clearfix small z-1" href="#">  
                     <span class="float-left">View Details</span>  
                     <span class="float-right">  
                          <i class="fas fa-angle-right"></i>  
                     </span>  
                     </a>  
                </div>  
                </div>  
                <div class="col-xl-3 col-sm-6 mb-3">  
                <div class="card text-white bg-danger o-hidden h-100">  
                     <div class="card-body">  
                     <div class="card-body-icon">  
                          <i class="fas fa-fw fa-life-ring"></i>  
                     </div>  
                     <div class="mr-5">13 New Tickets!</div>  
                     </div>  
                     <a class="card-footer text-white clearfix small z-1" href="#">  
                     <span class="float-left">View Details</span>  
                     <span class="float-right">  
                          <i class="fas fa-angle-right"></i>  
                     </span>  
                     </a>  
                </div>  
                </div>  
           </div>  
           <!-- Area Chart Example-->  
           <div class="card mb-3">  
                <div class="card-header">  
                <i class="fas fa-chart-area"></i>  
                Visitor Stats</div>  
                <div class="card-body">  
                <canvas id="myAreaChart" width="100%" height="30"></canvas>  
                </div>  
                <div class="card-footer small text-muted">Updated yesterday at 11:59 PM</div>  
           </div>  
           </div>  
           <!-- /.container-fluid -->  
           <!-- Sticky Footer -->  
           <?php $this->load->view("admin/_partials/footer.php") ?>  
      </div>  
      <!-- /.content-wrapper -->  
 </div>  
 <!-- /#wrapper -->  
 <?php $this->load->view("admin/_partials/scrolltop.php") ?>  
 <?php $this->load->view("admin/_partials/modal.php") ?>  
 <?php $this->load->view("admin/_partials/js.php") ?>  
 </body>  
 </html>  

/application/controllers/admin/products.php

 <?php  
 defined('BASEPATH') OR exit('No direct script access allowed');  
 class Products extends CI_Controller  
 {  
   public function __construct()  
   {  
     parent::__construct();  
     $this->load->model("product_model");  
     $this->load->library('form_validation');  
   }  
   public function index()  
   {  
     $data["products"] = $this->product_model->getAll();  
     $this->load->view("admin/product/list", $data);  
   }  
   public function add()  
   {  
     $product = $this->product_model;  
     $validation = $this->form_validation;  
     $validation->set_rules($product->rules());  
     if ($validation->run()) {  
       $product->save();  
       $this->session->set_flashdata('success', 'Berhasil disimpan');  
     }  
     $this->load->view("admin/product/new_form");  
   }  
   public function edit($id = null)  
   {  
     if (!isset($id)) redirect('admin/products');  
     $product = $this->product_model;  
     $validation = $this->form_validation;  
     $validation->set_rules($product->rules());  
     if ($validation->run()) {  
       $product->update();  
       $this->session->set_flashdata('success', 'Berhasil disimpan');  
     }  
     $data["product"] = $product->getById($id);  
     if (!$data["product"]) show_404();  
     $this->load->view("admin/product/edit_form", $data);  
   }  
   public function delete($id=null)  
   {  
     if (!isset($id)) show_404();  
     if ($this->product_model->delete($id)) {  
       redirect(site_url('admin/products'));  
     }  
   }  
 }  


views/admin/product/list.php

 <!DOCTYPE html>  
 <html lang="en">  
 <head>  
      <?php $this->load->view("admin/_partials/head.php") ?>  
 </head>  
 <body id="page-top">  
      <?php $this->load->view("admin/_partials/navbar.php") ?>  
      <div id="wrapper">  
           <?php $this->load->view("admin/_partials/sidebar.php") ?>  
           <div id="content-wrapper">  
                <div class="container-fluid">  
                     <?php $this->load->view("admin/_partials/breadcrumb.php") ?>  
                     <!-- DataTables -->  
                     <div class="card mb-3">  
                          <div class="card-header">  
                               <a href="<?php echo site_url('admin/products/add') ?>"><i class="fas fa-plus"></i> Add New</a>  
                          </div>  
                          <div class="card-body">  
                               <div class="table-responsive">  
                                    <table class="table table-hover" id="dataTable" width="100%" cellspacing="0">  
                                         <thead>  
                                              <tr>  
                                                   <th>Name</th>  
                                                   <th>Price</th>  
                                                   <th>Photo</th>  
                                                   <th>Description</th>  
                                                   <th>Action</th>  
                                              </tr>  
                                         </thead>  
                                         <tbody>  
                                              <?php foreach ($products as $product): ?>  
                                              <tr>  
                                                   <td width="150">  
                                                        <?php echo $product->name ?>  
                                                   </td>  
                                                   <td>  
                                                        <?php echo $product->price ?>  
                                                   </td>  
                                                   <td>  
                                                        <img src="<?php echo base_url('upload/product/'.$product->image) ?>" width="64" />  
                                                   </td>  
                                                   <td class="small">  
                                                        <?php echo substr($product->description, 0, 120) ?>...</td>  
                                                   <td width="250">  
                                                        <a href="<?php echo site_url('admin/products/edit/'.$product->product_id) ?>"  
                                                         class="btn btn-small"><i class="fas fa-edit"></i> Edit</a>  
                                                        <a onclick="deleteConfirm('<?php echo site_url('admin/products/delete/'.$product->product_id) ?>')"  
                                                         href="#!" class="btn btn-small text-danger"><i class="fas fa-trash"></i> Hapus</a>  
                                                   </td>  
                                              </tr>  
                                              <?php endforeach; ?>  
                                         </tbody>  
                                    </table>  
                               </div>  
                          </div>  
                     </div>  
                </div>  
                <!-- /.container-fluid -->  
                <!-- Sticky Footer -->  
                <?php $this->load->view("admin/_partials/footer.php") ?>  
           </div>  
           <!-- /.content-wrapper -->  
      </div>  
      <!-- /#wrapper -->  
      <?php $this->load->view("admin/_partials/scrolltop.php") ?>  
      <?php $this->load->view("admin/_partials/modal.php") ?>  
      <?php $this->load->view("admin/_partials/js.php") ?>  
 </body>  
 </html>  

views/admin/product/new_form.php

 <!DOCTYPE html>  
 <html lang="en">  
 <head>  
      <?php $this->load->view("admin/_partials/head.php") ?>  
 </head>  
 <body id="page-top">  
      <?php $this->load->view("admin/_partials/navbar.php") ?>  
      <div id="wrapper">  
           <?php $this->load->view("admin/_partials/sidebar.php") ?>  
           <div id="content-wrapper">  
                <div class="container-fluid">  
                     <?php $this->load->view("admin/_partials/breadcrumb.php") ?>  
                     <?php if ($this->session->flashdata('success')): ?>  
                     <div class="alert alert-success" role="alert">  
                          <?php echo $this->session->flashdata('success'); ?>  
                     </div>  
                     <?php endif; ?>  
                     <div class="card mb-3">  
                          <div class="card-header">  
                               <a href="<?php echo site_url('admin/products/') ?>"><i class="fas fa-arrow-left"></i> Back</a>  
                          </div>  
                          <div class="card-body">  
                               <form action="<?php base_url('admin/product/add') ?>" method="post" enctype="multipart/form-data" >  
                                    <div class="form-group">  
                                         <label for="name">Name*</label>  
                                         <input class="form-control <?php echo form_error('name') ? 'is-invalid':'' ?>"  
                                          type="text" name="name" placeholder="Product name" />  
                                         <div class="invalid-feedback">  
                                              <?php echo form_error('name') ?>  
                                         </div>  
                                    </div>  
                                    <div class="form-group">  
                                         <label for="price">Price*</label>  
                                         <input class="form-control <?php echo form_error('price') ? 'is-invalid':'' ?>"  
                                          type="number" name="price" min="0" placeholder="Product price" />  
                                         <div class="invalid-feedback">  
                                              <?php echo form_error('price') ?>  
                                         </div>  
                                    </div>  
                                    <div class="form-group">  
                                         <label for="name">Photo</label>  
                                         <input class="form-control-file <?php echo form_error('price') ? 'is-invalid':'' ?>"  
                                          type="file" name="image" />  
                                         <div class="invalid-feedback">  
                                              <?php echo form_error('image') ?>  
                                         </div>  
                                    </div>  
                                    <div class="form-group">  
                                         <label for="name">Description*</label>  
                                         <textarea class="form-control <?php echo form_error('description') ? 'is-invalid':'' ?>"  
                                          name="description" placeholder="Product description..."></textarea>  
                                         <div class="invalid-feedback">  
                                              <?php echo form_error('description') ?>  
                                         </div>  
                                    </div>  
                                    <input class="btn btn-success" type="submit" name="btn" value="Save" />  
                               </form>  
                          </div>  
                          <div class="card-footer small text-muted">  
                               * required fields  
                          </div>  
                     </div>  
                     <!-- /.container-fluid -->  
                     <!-- Sticky Footer -->  
                     <?php $this->load->view("admin/_partials/footer.php") ?>  
                </div>  
                <!-- /.content-wrapper -->  
           </div>  
           <!-- /#wrapper -->  
           <?php $this->load->view("admin/_partials/scrolltop.php") ?>  
           <?php $this->load->view("admin/_partials/js.php") ?>  
 </body>  
 </html>  


views/admin/product/edit.form.php

 <!DOCTYPE html>  
 <html lang="en">  
 <head>  
      <?php $this->load->view("admin/_partials/head.php") ?>  
 </head>  
 <body id="page-top">  
      <?php $this->load->view("admin/_partials/navbar.php") ?>  
      <div id="wrapper">  
           <?php $this->load->view("admin/_partials/sidebar.php") ?>  
           <div id="content-wrapper">  
                <div class="container-fluid">  
                     <?php $this->load->view("admin/_partials/breadcrumb.php") ?>  
                     <?php if ($this->session->flashdata('success')): ?>  
                     <div class="alert alert-success" role="alert">  
                          <?php echo $this->session->flashdata('success'); ?>  
                     </div>  
                     <?php endif; ?>  
                     <!-- Card -->  
                     <div class="card mb-3">  
                          <div class="card-header">  
                               <a href="<?php echo site_url('admin/products/') ?>"><i class="fas fa-arrow-left"></i>  
                                    Back</a>  
                          </div>  
                          <div class="card-body">  
                               <form action="<?php base_url('admin/product/edit') ?>" method="post" enctype="multipart/form-data">  
                                    <input type="hidden" name="id" value="<?php echo $product->product_id?>" />  
                                    <div class="form-group">  
                                         <label for="name">Name*</label>  
                                         <input class="form-control <?php echo form_error('name') ? 'is-invalid':'' ?>"  
                                          type="text" name="name" placeholder="Product name" value="<?php echo $product->name ?>" />  
                                         <div class="invalid-feedback">  
                                              <?php echo form_error('name') ?>  
                                         </div>  
                                    </div>  
                                    <div class="form-group">  
                                         <label for="price">Price</label>  
                                         <input class="form-control <?php echo form_error('price') ? 'is-invalid':'' ?>"  
                                          type="number" name="price" min="0" placeholder="Product price" value="<?php echo $product->price ?>" />  
                                         <div class="invalid-feedback">  
                                              <?php echo form_error('price') ?>  
                                         </div>  
                                    </div>  
                                    <div class="form-group">  
                                         <label for="name">Photo</label>  
                                         <input class="form-control-file <?php echo form_error('image') ? 'is-invalid':'' ?>"  
                                          type="file" name="image" />  
                                         <input type="hidden" name="old_image" value="<?php echo $product->image ?>" />  
                                         <div class="invalid-feedback">  
                                              <?php echo form_error('image') ?>  
                                         </div>  
                                    </div>  
                                    <div class="form-group">  
                                         <label for="name">Description*</label>  
                                         <textarea class="form-control <?php echo form_error('description') ? 'is-invalid':'' ?>"  
                                          name="description" placeholder="Product description..."><?php echo $product->description ?></textarea>  
                                         <div class="invalid-feedback">  
                                              <?php echo form_error('description') ?>  
                                         </div>  
                                    </div>  
                                    <input class="btn btn-success" type="submit" name="btn" value="Save" />  
                               </form>  
                          </div>  
                          <div class="card-footer small text-muted">  
                               * required fields  
                          </div>  
                     </div>  
                     <!-- /.container-fluid -->  
                     <!-- Sticky Footer -->  
                     <?php $this->load->view("admin/_partials/footer.php") ?>  
                </div>  
                <!-- /.content-wrapper -->  
           </div>  
           <!-- /#wrapper -->  
           <?php $this->load->view("admin/_partials/scrolltop.php") ?>  
           <?php $this->load->view("admin/_partials/js.php") ?>  
 </body>  
 </html>