Menampilkan data berdasarkan periode tanggal dengan PHP

Tutorial PHP - Menampilkan data berdasarkan periode tanggal dengan PHP

Tutorial PHP - Halo gengs, berjumpa kembali dalam blog sederhana ini, dengen tulisan yang juga sederhana.

Pada kesempatan kali ini kita akan mempelajari bagaimana menapilkan data atau laporan berdasarkan periode tanggal dengan menggunakan PHP.

Disini kita akan membuat sebuah halaman dimana halaman ini akan menampilkan semua data berdasarkan periode tanggal yang dipilih.

Baiklah, langsung saja kita mulai pengerjaannya.

Database

Buka phpMyAdmin lalu pilih menu SQL dan pastekan kode berikut untuk membuat database test (apabila belum ada), tabel produk beserta data didalamnya.
CREATE DATABASE IF NOT EXISTS test;
USE test;

CREATE TABLE `produk` (
  `nama_produk` varchar(50) NOT NULL,
  `harga` int(11) NOT NULL,
  `qty` int(11) NOT NULL,
  `tgl_transaksi` date NOT NULL
);

INSERT INTO `produk` (`nama_produk`, `harga`, `qty`, `tgl_transaksi`) VALUES
('Sabun', 2000, 3, '2020-05-17'),
('Shampo', 500, 4, '2020-05-17'),
('Mie Goyeng 1 Box', 50000, 1, '2020-05-18'),
('Mie Rebus', 2500, 4, '2020-06-10'),
('Boom', 5000, 1, '2020-06-15');

Maka hasilnya akan seperti gambar berikut:

Tutorial PHP - Struktur tabel produk untuk menampilkan data berdasarkan periode tanggal dengan PHP
Struktur tabel produk


Tutorial PHP - Data pada tabel produk untuk menampilkan data basdasarkan periode tanggal PHP
Data pada tabel produk

index.php

Untuk nama file PHP yang dibuat itu bebas ya!, disini saya beri nama index.php.
<?php 

// koneksi
$conn = new mysqli('localhost', 'root', '', 'test');

if (isset($_POST['submit'])) {
 $date1 = $_POST['date1'];
 $date2 = $_POST['date2'];

 if (!empty($date1) && !empty($date2)) {
  // perintah tampil data berdasarkan range tanggal
  $q = mysqli_query($conn, "SELECT * FROM produk WHERE tgl_transaksi BETWEEN '$date1' and '$date2'"); 
 } else {
  // perintah tampil semua data
  $q = mysqli_query($conn, "SELECT * FROM produk"); 
 }
} else {
 // perintah tampil semua data
 $q = mysqli_query($conn, "SELECT * FROM produk");
}

?>

<!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-5 mx-auto">
  <center>
   <h1>Menampilkan data berdasarkan periode tanggal dengan PHP</h1>
  </center>

  <div class="card mt-5">
   <div class="card-body mx-auto">
    <form method="POST" action="" class="form-inline mt-3">
     <label for="date1">Tanggal mulai </label>
     <input type="date" name="date1" id="date1" class="form-control mr-2">
     <label for="date2">sampai </label>
     <input type="date" name="date2" id="date2" class="form-control mr-2">
     <button type="submit" name="submit" class="btn btn-primary">Cari</button>
    </form>

    <table class="table table-bordered mt-5">
     <tr>
      <th>#</th>
      <th>Nama Barang</th>
      <th>Harga Satuan</th>
      <th>Qty</th>
      <th>Tgl. Transaksi</th>
     </tr>

     <?php
     
     $no = 1;

     while ($r = $q->fetch_assoc()) {
     ?>

     <tr>
      <td><?= $no++ ?></td>
      <td><?= ucwords($r['nama_produk']) ?></td>
      <td><?= $r['harga'] ?></td>
      <td><?= $r['qty'] ?></td>
      <td><?= date('d-M-Y', strtotime($r['tgl_transaksi'])) ?></td>
     </tr>

     <?php   
     }
     ?>

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

</body>
</html>

Output:

Tutorial PHP - Tampilan output halaman index

Penjelasan:

if (!empty($date1) && !empty($date2)) {
  // perintah tampil data berdasarkan range tanggal
  $q = mysqli_query($conn, "SELECT * FROM produk WHERE tgl_transaksi BETWEEN '$date1' and '$date2'"); 
 } else {
  // perintah tampil semua data
  $q = mysqli_query($conn, "SELECT * FROM produk"); 
 }

Pada baris kode diatas kita melakukan hal - hal berikut:

  • Cek kondisi menggunakan fungsi if dan menggunakan fungsi empty() untuk cek apakah variabel $data1 dan $data2 kosong ataukah tidak
  • Jika periode tanggal belum dipilih maka data akan ditampilkan secara keseluruhan, tapi jika periode tanggal sudah ditentukan maka data yang tampil hanya data pada periode tertentu
  • Didalam query menggunakan operator BETWEEN untuk memilih nilai dalam kisaran tertentu (nilai dapat berupa angka, teks, atau tanggal)

Download source code disini.

Posting Komentar

1 Komentar