Source Code Aplikasi Peminjaman Barang Berbasis Web dengan PHP dan MySQL Part 8 - Proses Peminjaman

Aplikasi peminjaman barang part 8 - proses peminjaman barang

Hai, berjumpa lagi setelah sekian lama tidak melanjutkan tutorial membuat Aplikasi Inventory Barang Berbasis Web dengan PHP dan MySQL.

Pada part 8 ini kita akan melakukan proses penyimpanan data barang yang akan dipinjam ke table peminjaman dan detail_pinjam.

Pada folder operator buat folder baru dengan nama proses, lalu didalamnya buat file baru dengan nama proses-peminjaman.php, seperti gambar berikut:

Aplikasi Inventory Barang Part 8 - Proses Peminjaman Barang


Sebelum itu, ada beberapa kode yang harus diubah pada file peminjaman.php, berikut kode yang diubah:
// jika barang sudah ada di daftar list maka akan diupdate
      for ($i=0; $i<count($ls_pmj); $i++) {
       if($ls_pmj[$i]['nama_barang'] == $nama_barang) {
        $index = $i;
        if($jumlah_pinjam <= $data_barang['jumlah']) {
         $_SESSION['list_peminjaman'][$i]['jumlah_pinjam'] = $jumlah_pinjam;
        } else {
         echo '<div class="alert alert-danger" role="alert"><b>'.$nama_barang.'</b> hanya tersedia <b>'.$data_barang['jumlah'].'</b></div>';
        }
        break;
       }
      }

Kode diatas berfungsi untuk memberikan peringatan jika jumlah barang yang dipinjam melebihi jumlah barang yang ada. Perhatikan gambar dibawah.



Pada gambar diatas saya memasukan jumlah pinjam melebihi jumlah barang yang ada sehingga akan memberikan pesan informasi jumlah barang yang tersedia.

Kode selengkapnya:

peminjaman.php

<div class="container mt-5">
 <div class="card">
  <div class="card-header">
   Petugas : <?= $_SESSION['nama'] ?>
  </div>
  <div class="card-body">
   <div class="row">
    <div class="col-md-6">
     <form action="<?= $_SERVER['PHP_SELF'] ?>" method="POST" class="mt-3" autocomplete="off">
      <div class="form-group">
       <label for="id_barang">Nama Barang</label>
       <input list="barang" name="nama_barang" placeholder="Pilih barang" class="form-control" required>
       <datalist id="barang">
   
        <?php 
        foreach ($data_barang as $barang): 
         $daftar = $barang['nama_barang'].' - '.$barang['jenis'];
        ?>
   
        <option value="<?= $daftar ?>">
   
        <?php endforeach ?>
   
       </select>
      </div>
      <div class="form-group">
       <label for="jumlah_barang">Jumlah Pinjam</label>
       <input type="number" name="jumlah_pinjam" placeholder="Jumlah Barang" min="1" max="1000" class="form-control" required>
      </div>
      <button type="submit" class="btn btn-primary float-right">Input Transaksi</button>
      <div class="clearfix"></div>
     </form>
    </div>
    <div class="col-md-6">
     <h3>Data Peminjaman</h3>

     <?php 
     if (isset($_POST['nama_barang'], $_POST['jumlah_pinjam'])) {
      
      $nama_barang = trim($_POST['nama_barang']);
      $explode_nama_barang = explode("-", $nama_barang);
      $nama_barang_exploded = $explode_nama_barang[0];
      $jumlah_pinjam  = $_POST['jumlah_pinjam'];
      $id_user   = $_SESSION['id_user'];

      $barang = $conn->query("SELECT * FROM barang WHERE nama_barang='".$nama_barang_exploded."'");
      $data_barang  = $barang->fetch_array();

      if(!isset($_SESSION['list_peminjaman'])) {
       $_SESSION['list_peminjaman'] = [];
      }

      $pinjam = 1;
      $index = -1;
      $ls_pmj = unserialize(serialize($_SESSION['list_peminjaman']));

      // jika barang sudah ada di daftar list maka akan diupdate
      for ($i=0; $i<count($ls_pmj); $i++) {
       if($ls_pmj[$i]['nama_barang'] == $nama_barang) {
        $index = $i;
        if($jumlah_pinjam <= $data_barang['jumlah']) {
         $_SESSION['list_peminjaman'][$i]['jumlah_pinjam'] = $jumlah_pinjam;
        } else {
         echo '<div class="alert alert-danger" role="alert"><b>'.$nama_barang.'</b> hanya tersedia <b>'.$data_barang['jumlah'].'</b></div>';
        }
        break;
       }
      }

      // jika list peminjaman kosong
      if($index == -1) {
       if($data_barang['jumlah'] < $jumlah_pinjam) {
        echo '<div class="alert alert-danger" role="alert"><b>'.$nama_barang.'</b> hanya tersedia <b>'.$data_barang['jumlah'].'</b></div>';
       } else {
        $_SESSION['list_peminjaman'][] = [
                       'id_barang' => $data_barang['id_barang'], 
                       'nama_barang' => $nama_barang, 
                       'jumlah_pinjam' => $jumlah_pinjam
                      ];
       }
      }
     }

     ?>

      <table class="table table-bordered">
       <tr align="center">
        <th>Nama barang</th>
        <th>Jumlah pinjam</th>
        <th>Aksi</th>
       </tr>
        
       <?php 
       if(isset($_SESSION['list_peminjaman'])) {
          $list = unserialize(serialize($_SESSION['list_peminjaman']));
          $index = 0;
         for($i=0; $i<count($list); $i++) {
         ?>

         <tr>
           <td><?php echo $list[$i]['nama_barang']; ?></td>
           <td align="center"><?php echo $list[$i]['jumlah_pinjam']; ?></td>
           <td align="center">
            <a href="?index=<?php echo $index; ?>" onclick="return confirm('Anda yakin?')">Hapus</a>
           </td>
          </tr>

         <?php 
          $index++;
         } 

         // hapus barang pada cart
        if(isset($_GET['index'])) {
         $list = unserialize(serialize($_SESSION['list_peminjaman']));
         unset($list[$_GET['index']]);
         $list = array_values($list);
         $_SESSION['list_peminjaman'] = $list;
        }
       }
        ?>

      </table>
     
     <hr>

     <form method="post" action="data-barang.php">
      <input type="hidden" name="id_user" value="<?= $_SESSION['id_user']; ?>">
      <div class="row">
       <div class="col-md-6">
        <div class="form-group">
         <label for="tgl-pengembalian">Tgl. Pengembalian</label>
         <input class="form-control" type="date" name="tgl-pengembalian" id="tgl-pengembalian" required>
        </div>
       </div>
       <div class="col-md-6">
        <div class="form-group">
         <label for="peminjam">Peminjam</label>
         <input class="form-control" type="text" name="peminjam" id="peminjam" placeholder="Masukan Nama" required>
        </div>
       </div>
       <div class="clearfix"></div>
      </div>
      <button type="submit" class="btn btn-success btn-block" name="submit">Proses</button>
     </form>

    </div>
   </div>
  </div>
 </div>
</div>

<?php 
 if(isset($_GET["index"])){
  header('Location: index.php');
 }

proses-peminjaman.php

<?php

$dt_pinjam = NULL;

if(isset($_POST['submit']) && isset($_SESSION['list_peminjaman'])) {
 foreach ($_SESSION['list_peminjaman'] as $list) {
  $explode = explode("-", $list['nama_barang']);
  $nama_barang = trim($explode[0]);
  $jenis = trim($explode[1]);

  $barang = $conn->query("SELECT * FROM barang WHERE nama_barang='$nama_barang' AND jenis = '$jenis'");
  $dt_barang = $barang->fetch_assoc();


  $sisa = ($dt_barang['jumlah'] - $list['jumlah_pinjam']);

  $update_dt_brg = $conn->query("UPDATE barang SET jumlah = '$sisa' WHERE id_barang = '$dt_barang[id_barang]'");

  $tgl_peminjaman = date('Y-m-d');
  $tgl_pengembalian = $_POST['tgl-pengembalian'];
  $peminjam = $_POST['peminjam'];
  $id_user = $_POST['id_user'];

  $peminjaman = $conn->query("INSERT INTO peminjaman VALUES ('', '$id_user', '$tgl_peminjaman', '$tgl_pengembalian')");

  $detail_pinjam = $conn->query("INSERT INTO detail_pinjam VALUES ('', '$list[id_barang]', '$list[jumlah_pinjam]', '$peminjam', (SELECT id_peminjaman FROM peminjaman ORDER BY id_peminjaman DESC LIMIT 1))");

  $update_dt_brg = $conn->query("UPDATE barang SET jumlah = '$sisa' WHERE id_barang = '$dt_barang[id_barang]'");
 } 
 unset($_SESSION['list_peminjaman']);
}

Jika proses peminjaman berhasil maka jumlah barang yang ada akan dikurangi jumlah barang yang dipinjam. Dalam part selanjutnya kita akan menampilkan barang yang dipinjam.

Sampai jumpa dan terimakasih.

Posting Komentar

3 Komentar

  1. min, saya coba ikutin persis s.d. dbny ttp g ngurang

    BalasHapus
    Balasan
    1. nggk error, tpi g work juga

      Hapus
    2. Maaf sebelumnya gan, sudah diperbaiki pada file proses-peminjaman.php dan index.php yg ada dalam folder operator.

      Untuk file proses-peminjaman.php bisa dilihat diartikel ini, dan untuk file index.php silahkan dilihat diartikel sebelumnya (https://www.plajarikode.com/2020/04/source-code-aplikasi-pembayaran-spp-7.html).

      Sekarang agan bisa melakukan proses peminjaman barang.

      Hapus