Cara membuat laporan per periode dengan php mysql

Hallo teman-teman semua dimana pun anda berada, semoga sehat selalu dan di mudahkan segala urusannya.. amin.. Pada artikel kali ini saya akan memberikan sebuah cara bagaimana membuat laporan pada pemograman PHP MySQLi, namun pada kesempatan ini laporan yang saya maksutkan yaitu, laporan berdasarkan range tanggal. 

Cara membuat laporan per periode dengan php mysql

Manfaat dari membuat laporan dalam aplikasi berdasarkan range tanggal adalah, kita dapat menampilkan data yang sudah kita inputkan,, seperti data pembelian barang dan lain sebagainya, ataupun metode laporan data berdasarkan range tanggal ini, seperti kita memfilter data yang kita tentukan lalu kita tampilkan dalam bentuk laporan.

Lalu apa kebutuhan apa saja yang perlu di persiapkan dalam membuatnya:

  1. Download FPDF nya.
  2. Membuat Database
  3. Membuat Interface Aplikasi

Oke kita langsung saja masuk dalam pembahasan dalam membuat laporan data FPDF dengan berdasarkan range tanggal atau filter.

1. Buat sebuah database seperti dibawah ini:

dengan nama databasenya : database_range

dan nama tabel nya : tbl_penjualan

  • id_penjualan (int) prymary key
  • kd_barang (varchar)
  • nama_barang (varchar)
  • jml_pembelian (int)

2. Buat koneksi database dengan nama koneksi.php

Cara membuat laporan per periode dengan php mysql

3. Buat file index.php seperti dibawah ini, Silahkan copy dan paste code di bawah ini:

Cara membuat laporan per periode dengan php mysql

Cara membuat laporan per periode dengan php mysql

Cara membuat laporan per periode dengan php mysql

Cara membuat laporan per periode dengan php mysql

4. Buat file print.php seperti di bawah ini, atau bisa anda copy dan paste code di bawah ini:

Cara membuat laporan per periode dengan php mysql

Cara membuat laporan per periode dengan php mysql

Berikut diatas contoh atau sebuah tutorial membuat laporan dengan FPDF, pada pemograman PHP, semoga dapat membantu teman-teman semua, dan jangan lupa untuk mensharenya di media sosial lainnya, selamat mencoba ya sobat. sampai jumpa pada tutorial selanjutnya.

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>
<h2>PlajariKode</h2>
<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:

Cara membuat laporan per periode dengan php mysql

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