Source Code Aplikasi Peminjaman Barang Berbasis Web Dengan PHP dan MySQL Part 5 - CRUD Data Petugas

Banner Aplikasi Inventory CRUD Data Petugas

Hai gengs, kembali lagi, masih dalam pembuatan Aplikasi Inventory Berbasis Web Dengan PHP dan MySQL, pada artikel sebelumnya kita sudah membuat CRUD untuk data barang, jika kalian terlewat silahkan klik link dibawah ini gengs:

Sebelumnya: CRUD Data Barang Aplikasi Inventory

Dalam artikel ini kita akan membuat CRUD untuk Petugas, kodingannya tidak jauh berbeda, ubah dan tambah sedikit kode saja gengs. Haha. Berikut kode beserta penjelasannya:

File-file yang akan kita buat pada sesi kali ini adalah sebagai berikut:

  • admin/data-petugas.php - Berisi kode yang digunakan sebagai navigasi
  • admin/includes/petugas.php - Berisi kode untuk menampilkan data petugas
  • admin/includes/tambah-petugas.php - Berisi kode untuk desain form tambah petugas
  • admin/proses/proses-tambah-petugas.php - Berisi baris kode untuk proses penyimpanan data petugas
  • admin/includes/edit-petugas.php - Baris kode untuk desain form edit petugas dan sekaligus menampilkan data petugas yang akan diubah
  • admin/proses/proses-ubah-petugas.php - Baris kode untuk proses update data petugas
  • admin/includes/detail-petugas.php - Kode untuk menampilkan detail data petugas

Dan strukturnya akan seperti berikut:

  • admin (folder)
    • includes (folder)
      • petugas.php
      • tambah-petugas.php
      • edit-petugas.php
      • detail-petugas.php
    • proses (folder)
      • proses-tambah-petugas.php
      • proses-ubah-petugas.php
    • data-petugas.php

Navigasi

Didalam folder admin, buat file baru dengan nama data-petugas.php, file ini digunakan untuk mangatur pemanggilan halaman. Berikut baris kodenya:

<?php
session_start();
require_once '../config/db.php';

if (!isset($_SESSION['id_user'])) {
	header('Location: ../index.php');
}

// Mengelurkan seluruh data barang yang ada di Database
$sql = "SELECT * FROM users WHERE id_level = 2";
$query = $conn->query($sql);
$data = $query->fetch_all(MYSQLI_ASSOC);

// Nomor untuk increment baris tabel
$no = 1;

require_once 'includes/header.php';
if (!isset($_GET['h'])) {
	require_once 'includes/petugas.php';	
} else if ($_GET['h'] == 'tambah-petugas') {
	require_once 'includes/'.$_GET['h'].'.php';	
} else if ($_GET['h'] == 'detail-petugas') {
	require_once 'includes/'.$_GET['h'].'.php';	
} else if ($_GET['h'] == 'edit-petugas') {
	require_once 'includes/'.$_GET['h'].'.php';	
} else if ($_GET['h'] == 'hapus-petugas') {
	
	$hapus = $conn->query("DELETE FROM users WHERE id_user ='".$_GET['id']."'");
	if ($hapus) {
		header('Location: data-petugas.php');
	} else {
		header('Location: data-petugas.php');
	}

}
require_once 'includes/footer.php';  

Halaman Data Petugas

  1. Buat file baru dengan nama petugas.php dan masukan kode berikut:

<div class="container mt-5">
 
  <h2>Data Petugas</h2>
  <hr>

  <a href="index.php" class="btn btn-primary btn-sm float-left">← Kembali</a>
  <a href="?h=tambah-petugas" class="btn btn-primary btn-sm float-right">Tambah Petugas</a>
  <div class="clearfix"></div>

  <table class="table table-sm mt-3">
    <thead>
      <tr>
 <th>No</th>
 <th>Nama Petugas</th>
 <th>Username</th>
 <th>Password</th>
 <th>Sebagai</th>
 <th>Aksi</th>
      </tr>
    </thead>
    <tbody>
      <?php 
      foreach ($data as $r): 
      $r['id_level'] == 1 ? $sebagai = "Admin" : $sebagai = "Operator"; 
      ?>

      <tr>
 <td><?= $no++ ?></td>
 <td><?= $r['nama'] ?></td>
 <td><?= $r['username'] ?></td>
 <td><?= $r['password'] ?></td>
 <td><?= $sebagai ?></td>
        <td>
          <div class="d-inline">
     <a href="?h=detail-petugas&id=<?= $r['id_user'] ?>" class="btn btn-primary btn-sm">Detail</a>
     <a href="?h=edit-petugas&id=<?= $r['id_user'] ?>" class="btn btn-success btn-sm">Edit</a>
     <a href="?h=hapus-petugas&id=<?= $r['id_user'] ?>" class="btn btn-danger btn-sm" onclick="return confirm('Hapus data ini?')">Hapus</a>
     </div>
 </td>
      </tr>
      
      <?php endforeach ?>
    </tbody>
  </table>

</div>

Pada bagian
$r['id_level'] == 1 ? $sebagai = "Admin" : $sebagai = "Operator";

itu sama saja dengan:

if($r['id_level'] == 1) {
  $sebagai = "Admin";
} else {
  $sebagai = "Operator";
}

Dan tampilannya akan seperti ini:

Halaman Data Petugas

Halaman Tambah Data Petugas

  1. Buat file dengan nama tambah-petugas.php didalam folder includes dan masukan kode berikut:

<div class="container mt-5">
 
  <h2>Tambah Data Petugas</h2>
  <hr>
 
  <a href="data-petugas.php" class="btn btn-primary btn-sm float-left">← Kembali</a>
  <div class="clearfix"></div>

  <form action="proses/proses-tambah-petugas.php" method="POST" class="mt-3" autocomplete="off">
    <div class="form-group">
      <label for="nama">Nama Petugas</label>
      <input type="text" name="nama" placeholder="Nama Petugas" class="form-control" autofocus required>
    </div>
    <div class="form-group">
      <label for="password">Username</label>
      <input type="text" name="username" placeholder="Masukan Username" class="form-control" required>
    </div>
    <div class="form-group">
      <label for="password">Password</label>
      <input type="text" name="password" placeholder="Masukan Password" class="form-control" required>
    </div>
    <div class="form-group">
      <label for="sebagai">Sebagai</label>
      <input type="text" name="sebagai" value="Operator" class="form-control" required readonly>
    </div>
    <button type="submit" class="btn btn-primary float-right">Tambah Petugas</button>
  </form>

</div>

Output:

Halaman Tambah Data Petugas Aplikasi Inventory

Halaman Ubah Data Petugas

  1. Buat file dengan nama edit-petugas.php dan masukan kode berikut untuk desain sekaligus menampilkan data petugas yang akan diubah

<div class="container mt-5">
 
  <h2>Edit Data Petugas</h2>
  <hr>
 
  <a href="data-petugas.php" class="btn btn-primary btn-sm float-left">← Kembali</a>
  <div class="clearfix"></div>

  <?php 
  $petugas = $conn->query("SELECT * FROM users WHERE id_user = '".$_GET['id']."'");
  $data = $petugas->fetch_assoc();

  $data['id_level'] == 1 ? $sebagai = "Admin" : $sebagai = "Petugas";
  ?>

  <form action="proses/proses-ubah-petugas.php" method="POST" class="mt-3" autocomplete="off">
    <div class="form-group">
      <label for="nama">Nama Petugas</label>
      <input type="text" name="nama" value="<?= $data['nama'] ?>" class="form-control" autofocus required>
    </div>
    <div class="form-group">
      <label for="username">Username</label>
      <input type="text" name="username" value="<?= $data['username'] ?>" class="form-control" autofocus required>
    </div>
    <div class="form-group">
      <label for="password">Password</label>
      <input type="text" name="password" value="<?= $data['password'] ?>" class="form-control" required readonly>
    </div>
    <div class="form-group">
      <label for="sebagai">Sebagai</label>
      <input type="text" name="sebagai" value="<?= $sebagai ?>" class="form-control" required>
    </div>
    <input type="hidden" name="id" value="<?= $data['id_user'] ?>">
    <button type="submit" class="btn btn-primary float-right">Edit Petugas</button>
  </form>

</div>

Output:

Halaman Edit Data Petugas Aplikasi Inventory

Halaman Detail Petugas

Halaman ini menampilkan seluruh data dari petugas berdasarkan id
  1. Buat lagi file dengan nama detail-petugas.php dan masukan baris kode berikut:

<div class="container mt-5">
 
  <h2>Detail Petugas</h2>
  <hr>
 
  <a href="data-petugas.php" class="btn btn-primary btn-sm float-left">← Kembali</a>
  <div class="clearfix"></div>
 
  <?php 
    $sql = $conn->query("SELECT * FROM users WHERE id_user = '".$_GET['id']."'");
    $data = $sql->fetch_assoc();
    $data['id_level'] == 1 ? $sebagai = "Admin" : $sebagai = "Operator";
  ?>

  <div class="card mt-3">
    <div class="card-header">
      <?= $data['nama'] ?>
    </div>
    <div class="card-body">
      <p>Username : <?= $data['username'] ?></p>
      <p>Sebagai : <?= $sebagai ?></p>
    </div>
  </div>

</div>

Halaman Detail Petugas Aplikasi Inventory

Semua tampilan halaman petugas sudah kita buat, sekarang kita akan membuat file untuk proses menyimpan dan mengubah data petugas.

Proses Tambah Data Petugas

  1. Buat file proses-tambah-petugas.php didalam subfolder proses, lebih tepatnya pada folder admin > proses > proses-tambah-petugas.php, seperti yang sudah dijelaskan diatas.
  2. Masukan kode berikut:

<?php
session_start();
require_once '../../config/db.php';

if (!isset($_SESSION['id_user'])) {
  header('Location: ../../index.php');
}

$nama = $_POST['nama'];
$username = $_POST['username'];
$password = sha1($_POST['password']);
$sebagai = $_POST['sebagai'];
$sebagai == "Operator" ? $sebagai = 2 : 0;

if (!isset($nama, $username, $password, $sebagai)) {
  header('Location: ../petugas.php?h=tambah-petugas');
}

$sql = "INSERT INTO users VALUES ('', '$nama', '$username', '$password', '$sebagai')";
$query = $conn->query($sql);

if ($query) {
  header('Location: ../data-petugas.php');
} else {
  header('Location: ../data-petugas.php?h=tambah-petugas');
}

Proses Ubah Data Petugas

  1. Masih difolder yang sama yaitu folder proses, buat file proses-ubah-petugas.php dan masukan kode berikut:

<?php
session_start();
require_once '../../config/db.php';

if (!isset($_SESSION['id_user'])) {
  header('Location: ../../index.php');
}

$nama  = $_POST['nama'];
$username = $_POST['username'];
$sebagai = $_POST['sebagai'];
$sebagai == "Operator" ? $sebagai = 2 : $sebagai = 1;
$id = $_POST['id'];

$update = $conn->query("UPDATE users SET nama = '$nama', username = '$username', id_level = '$sebagai' WHERE id_user = '".$id."'");

if ($update) {
  header('Location: ../data-petugas.php');
} else {
  header('Location: ../data-petugas.php?h=edit-petugas');
}

Nah kita sudah membuat CRUD untuk data petugas, sampe sini jika muncul masalah bisa kalian tuliskan apa yang salah pada kolom komentar dibawah. Terimakasih dan sampai jumpa pada part selanjutnya.


Posting Komentar

12 Komentar

  1. kak mau tanya, punya saya pas mau lihat petugas gak muncul malah tulisannya Object not found!
    nah sedangkan pada file dashboard.php sudah saya arahkan ke petugas.php kira kira kesalahannya apa ya kak??

    BalasHapus
    Balasan
    1. Oiya gan saya lupa, ada yg dibenahi yaitu pada file header.php dan dashboard.php pada folder admin, bisa dilihat di part 2 atau link berikut https://www.plajarikode.com/2020/01/membuat-aplikasi-inventaris-part-2.html

      Hapus
  2. gan saya salah error terus gak bisa masuk , katanya ada yang salah di line 8 di file proses login, mohon bantuannya gan

    BalasHapus
  3. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  4. bagian petugas tidak bisa terbuka kak..foreach ambil datanya dari mana,sudah saya cb hubungkan ke users tetap ga bisa..bisa di bantu kak

    BalasHapus
    Balasan
    1. Foreach dari file data_petugas.php yg ada dalam folder admin kak. Jika belum ada, mungkin bisa dilihat disini kak https://www.youtube.com/playlist?list=PLPFnsM7f1pxs6TJBn-NTiMdK03NnNdnM_

      Hapus
  5. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  6. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  7. Button detail, edit, hapus, sama tambah Petugas saya kok gak bisa ya??

    BalasHapus
    Balasan
    1. Didalam folder admin, buat file baru dengan nama data-petugas.php dan pastekan kode berikut:

      query($sql);
      $data = $query->fetch_all(MYSQLI_ASSOC);

      // Nomor untuk increment baris tabel
      $no = 1;

      require_once 'includes/header.php';
      if (!isset($_GET['h'])) {
      require_once 'includes/petugas.php';
      } else if ($_GET['h'] == 'tambah-petugas') {
      require_once 'includes/'.$_GET['h'].'.php';
      } else if ($_GET['h'] == 'detail-petugas') {
      require_once 'includes/'.$_GET['h'].'.php';
      } else if ($_GET['h'] == 'edit-petugas') {
      require_once 'includes/'.$_GET['h'].'.php';
      } else if ($_GET['h'] == 'hapus-petugas') {

      $hapus = $conn->query("DELETE FROM users WHERE id_user ='".$_GET['id']."'");
      if ($hapus) {
      header('Location: data-petugas.php');
      } else {
      header('Location: data-petugas.php');
      }

      }
      require_once 'includes/footer.php';

      Hapus
  8. Min nanya dunk..ko saya pas klik edit petugas ko yg tampil berkurang seperti di hapus, tp di DB tersimpan perubahannya..

    BalasHapus