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()
.
Baca juga: Membuat notifikasi dengan PHP
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)
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:
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.
Baca juga: Membuat notifikasi dengan PHP
2 Komentar
Kak jika untuk menampilkan untuk yang sama pinjam habis
BalasHapusMaksudnya hanya ingin menampilkan yang masanya pinjam habis, tanpa ada dua kondisilainnya
Hapus