Menampilkan data berdasarkan periode bulan dengan PHP

Tutorial PHP - Menampilkan data berdasarkan peridoe bulan dengan PHP
Tutorial PHP - Cara menampilkan data berdasarkan periode bulan dengan PHP dan database MySQL.

Bagi pemilik usaha pasti tidak asing dengan yang namanya laporan, yup! laporan harian, mingguan bahkan bulanan.

Disini kita asumsikan jika kita mempunyai banyak data, tapi data tersebut masih tercampur dengan data dari bulan - bulan sebelumnya. Sedangkan kita ingin mengelompokan laporan tersebut berdasarkan bulan.

Maka dari itu kita akan membuat halaman sederhana yang didalamnya kita bisa mengelompokan dan menampilkan data / laporan menjadi perbulan.

Baca juga: Menampilkan data berdasarkan periode tanggal dengan PHP

Database

Jika kalian sudah pernah membuat database test dan tebel produk ditutorial sebelumnya, kita akan gunakan lagi pada tutorial kali ini.

Tapi jika belum silahkan buat databasenya terlebih dahulu.
--
-- Database: `test`
--

CREATE DATABASE IF NOT EXISTS `test`;
USE `test`;
--
-- Struktur dari tabel `produk`
--

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

--
-- Dumping data untuk tabel `produk`
--

INSERT INTO `produk` (`nama_produk`, `harga`, `qty`, `tgl_transaksi`) VALUES
('Pie Pecan', 29696, 7, '2019-07-10'),
('Mussels - Cultivated', 38868, 71, '2019-08-31'),
('Tea - English Breakfast', 22378, 43, '2019-09-15'),
('Stock - Veal, Brown', 36181, 14, '2019-09-23'),
('Garbage Bags - Clear', 34223, 31, '2019-10-17'),
('Daikon Radish', 38660, 89, '2019-11-11'),
('Macaroons - Homestyle Two Bit', 19716, 21, '2019-12-01'),
('Mie Goyeng 1 Box', 50000, 1, '2020-01-18'),
('Boom', 5000, 1, '2020-01-15'),
('Ice Cream - Vanilla', 1881, 76, '2020-02-07'),
('Nut - Pecan, Pieces', 13550, 55, '2020-03-08'),
('Sauce - Caesar Dressing', 49865, 68, '2020-04-17'),
('Bandage - Fexible 1x3', 32613, 87, '2020-04-13'),
('Wasabi Paste', 15606, 44, '2020-05-29'),
('Ecolab - Hand Soap Form Antibac', 25152, 16, '2020-06-17'),
('Cake Slab', 11095, 1, '2020-06-27');

index.php

File ini berisi kode untuk membuat halaman yang menampilkan data / laporan.
<?php 

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

if (isset($_POST['submit'])) {
 $bln = date($_POST['bulan']);

 if (!empty($bln)) {
  // perintah tampil data berdasarkan periode bulan
  $q = mysqli_query($conn, "SELECT * FROM produk WHERE MONTH(tgl_transaksi) = '$bln'");
 } else {
  // perintah tampil semua data
  $q = mysqli_query($conn, "SELECT * FROM produk p");
 }
} else {
 // perintah tampil semua data
 $q = mysqli_query($conn, "SELECT * FROM produk");
}

// hitung jumlah baris data
$s = $q->num_rows;

?>

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

  <div class="card col-md-8 mx-auto mt-3">
   <div class="card-body">
    <div class="row">
     <div class="col-md-4 pt-2">
      <span>Jumlah data: <b><?= $s ?></b></span>
     </div>
     <div class="col-md-8">
      <form method="POST" action="" class="form-inline">
       <label for="date1">Tampilkan transaksi bulan </label>
       <select class="form-control mr-2" name="bulan">
        <option value="">-</option>
        <option value="1">Januari</option>
        <option value="2">Februari</option>
        <option value="3">Maret</option>
        <option value="4">April</option>
        <option value="5">Mei</option>
        <option value="6">Juni</option>
        <option value="7">Juli</option>
        <option value="8">Agustus</option>
        <option value="9">September</option>
        <option value="10">Oktober</option>
        <option value="11">November</option>
        <option value="12">Desember</option>
       </select>
       <button type="submit" name="submit" class="btn btn-primary">Tampilkan</button>
      </form>
     </div>
    </div>

    <div class="mt-3" style="max-height: 340px; overflow-y: auto;">
     <table class="table table-bordered">
      <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>
 </div>

</body>
</html>

Output:

Tutorial PHP - Menampilkan data berdasarkan periode bulan dengan PHP

Penjelasan:

if (isset($_POST['submit'])) {
 $bln = date($_POST['bulan']);

 if (!empty($bln)) {
  // perintah tampil data berdasarkan periode bulan
  $q = mysqli_query($conn, "SELECT * FROM produk WHERE MONTH(tgl_transaksi) = '$bln'");
 } else {
  // perintah tampil semua data
  $q = mysqli_query($conn, "SELECT * FROM produk p");
 }
} else {
 // perintah tampil semua data
 $q = mysqli_query($conn, "SELECT * FROM produk");
}
Pada baris kode diatas kita melakukan pengecekan kondisi dengan menggunakan if else statement untuk mengecek apakah variabel bulan sudah diset ataukah belum.

Umumnya ketika halaman pertama kali diload semua data akan ditampilkan, dan ketika user sudah memilih bulan lalu klik tombol Tampilkan maka data yang tampil haya data pada bulan yang dipilih tadi.

// perintah tampil data berdasarkan periode bulan
$q = mysqli_query($conn, "SELECT * FROM produk WHERE MONTH(tgl_transaksi) = '$bln'");
Didalam query diatas kita menggunakan fungsi sql MONTH() untuk mengambil hanya nilai bulan dengan format angka (01 - 12).

Jadi bisa dibilang query akan mengambil semua data yang sesuai dengan bulan yang dipilih.

Download codenya disini.

Baca juga: Menghitung total bayar dengan PHP

Posting Komentar

4 Komentar

  1. makasih gan, kalau mau dibuat output yang nama bulannya per kolom gimana ya gan

    BalasHapus
  2. thnk's gan, mau nanya gan?klo mau menjumlahkan sub total di footernya gmn ya gan.misalkan baris "qty" sesuai dengan hasil pencarian periode bulannya.

    BalasHapus