Menampilkan status peminjaman dengan PHP dan MySQL

PlajariKode - Menampilkan status peminjaman dengan PHP dan MySQL

Belajar PHP - Cara menampilkan status peminjaman dengan PHP dan MySQL.

Hai, berjumpa kembali di blog sederhana ini, pada kesempatan kali ini kita akan membahas cara menampilkan status peminjaman.

Masih berkutik dengan fungsi date(), strtotime() dan pengkondisian menggunakan statement if().


Disini saya sudah menyiapkan beberapa record yang diset 1 hari sebelum tanggal pengembalian dan juga yang sudah mencapai batas peminjaman. (FYI, contoh kasus dibuat tanggal 07 November 2020)

Belajar PHP - Menampilkan status peminjaman dengan PHP dan MySQL

Baiklah, langsung saja kita buat, penjelasan lebih detailnya kita taruh dibagian bawah setiap fungsi.

index.php

<?php 
// ubah default timezone
date_default_timezone_set('Asia/Jakarta');
session_start();
// koneksi
$conn = new mysqli('localhost', 'root', '', 'perpus');
?>

<!DOCTYPE html>
<html>
<head>
  <title>Tutorial PHP</title>

  <!-- Bootstrap -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
</head>
<body>

  <div class="container mt-4">
    <center>
      <h1>PlajariKode</h1>
      <h3>Menampilkan status peminjaman</h3>
    </center>


    <div class="card mx-auto col-md-8 mt-4">
      <div class="alert alert-info">
        <small>
          * Jika masa peminjaman buku tersisa lebih dari sehari maka akan menampilkan status <strong>Ok</strong><br/>
          * Jika masa peminjaman buku jatuh tempo besok maka akan menampilkan status <strong>1 hari tersisa</strong><br/>
          * Dan jika masa peminjaman sudah habis/jatuh tempo maka akan menampilkan status <strong>Masa pinjam habis</strong>
        </small>
      </div>
      <div class="card-body mx-auto">

        <table class="table table-bordered mt-4">
          <tr>
            <th>#</th>
            <th>Tgl. Pengembalian</th>
            <th>Status</th>
          </tr>

          <?php
        // ambil data
          $q = $conn->query("SELECT * FROM detail_pinjam");

          $no = 1;
          while($r = $q->fetch_assoc()) {
          // ambil tanggal jatuh tempo/tanggal kembali
            $sekarang = strtotime(date('Y-m-d'));
            $tgl_kembali = strtotime($r['tgl_kembali']);
            // ambil waktu 1 hari sebelum tgl pengembalian
            $minus1 = strtotime("-1 day", $tgl_kembali);

            if ($sekarang < $minus1) {
              $_SESSION['status'] = '<span class="badge badge-pill badge-success">Ok</span>';
            } elseif ($sekarang === $minus1) {
             $_SESSION['status'] = '<span class="badge badge-pill badge-warning">1 hari tersisa</span>';
           }  else {
            $_SESSION['status'] = '<span class="badge badge-pill badge-danger">Masa pinjam habis</span>';
          }

         ?>

         <tr>
          <td><?= $no++ ?></td>
          <td><?= $r['tgl_kembali'] ?></td>
          <td><?= $_SESSION['status'] ?></td>
          
        </tr>

        <?php
      }
      ?>

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

</body>
</html>

Output:

Belajar PHP - Menampilkan status peminjaman dengan PHP dan MySQL

Penjelasan:

Kita mulai dari yang paling atas.

date_default_timezone_set('Asia/Jakarta');
Untuk default timezone-nya kita set jadi Asia/Jakarta, karena jika tidak kita atur kadang kalo disini sudah ganti hari sementara pada servernya masih belum ganti sehingga akan berdampak pada status yang ditampilkan.

$minus1 = strtotime("-1 day", $tgl_kembali);
Variabel diatas akan menampung nilai 1 hari sebelum (-1 day) tanggal pengembalian, yang nanti akan muncul pesan jika besok masa peminjaman habis. 

Jika kalian ubah nilai "-1 day" menjadi "-7 day" maka pesan status akan muncul 1 minggu sebelum masa pengembalian habis.

if ($sekarang < $minus1) {
              $_SESSION['status'] = '<span class="badge badge-pill badge-success">Ok</span>';
            } elseif ($sekarang === $minus1) {
             $_SESSION['status'] = '<span class="badge badge-pill badge-warning"<1 hari tersisa</span>';
           }  else {
            $_SESSION['status'] = '<span class="badge badge-pill badge-danger">Masa pinjam habis</span>';
          }
Pada statement if() diatas dijelaskan jika nilai sekarang lebih kecil dari nilai variabel $minus1 (berarti masa pinjam tersisa lebih dari 1 hari) maka akan muncul status "Ok", jika sekarang adalah 1 hari sebelum tanggal pengembalian maka akan muncul status "1 hari tersisa", dan selain kondisi diatas maka akan muncul status "Masa pinjam habis". Oiya, fungsi strtotime() sendiri memiliki fungsi menguraikan tanggal dan waktu menjadi penomoran unik.

Lalu yang terakhir, status akan disimpan pada variabel $_SESSION['status'] yang kemudian ditampilkan sesuai kondisi yang terpeuhi.

Posting Komentar

2 Komentar

  1. Kak jika untuk menampilkan untuk yang sama pinjam habis

    BalasHapus
    Balasan
    1. Maksudnya hanya ingin menampilkan yang masanya pinjam habis, tanpa ada dua kondisilainnya

      Hapus