Menampilkan data dari database berdasarkan diantara tanggal tertentu sangat memungkinkan, dengan penambahan sedikit memodifikasi pada query sql yang dibangun. Teknik ini digunakan pada saat membuat sebuah laporan berdasarkan jarak (range) tanggal atau pencarian.
“select * from (nama_tabel) where (nama_kolom_yang_akan_difilter) between ‘tanggal mulai’ and ‘tanggal akhir’”;
implementasi pada query diatas, sebagai berikut:
$sql = "SELECT * FROM tbl_sales WHERE tanggal BETWEEN '$dt1' AND '$dt2'";
Sekarang akan diuji coba, silahkan buat beberapa file diantaranya:
file index.php
<!DOCTYPE html> <html> <head> <title>Date Range PHP</title> </head> <body> <h3>MySQL- Get Data Between Two Dates</h3> <h4>Sales Report</h4> <table border="1"> <thead> <tr> <th>No</th> <th>Products</th> <th>Date</th> </tr> </thead> <tbody> <?php $koneksi = mysqli_connect('localhost','root','','db_date') or die (mysqli_error()); $sql = "SELECT * FROM tbl_sales"; $query = mysqli_query($koneksi,$sql) or die (mysqli_error($koneksi)); $no = 1; while($data = mysqli_fetch_array($query)){?> <tr> <td><?php echo $no;?></td> <td><?php echo $data['product'];?></td> <td><?php echo $data['tanggal'];?></td> </tr> <?php $no++; ?> <?php } ?> </tbody> </table> <br> <form action="" method="post"> <input type="date" name="tgl1"> <input type="date" name="tgl2"> <input type="submit" name="tampilkan" value="TAMPILKAN"> </form> <h3>Hasil Sorting by Tanggal</h3> <p>Akan ditampilkan dibawah ini!<i>(filenya proses akan disatukan langsung dengan isset PHP)</i></p> <?php if(isset($_POST["tampilkan"])){ $dt1 = $_POST["tgl1"]; $dt2 = $_POST["tgl2"]; $no = 1; $sql = "SELECT * FROM tbl_sales WHERE tanggal BETWEEN '$dt1' AND '$dt2'"; $query = mysqli_query($koneksi,$sql) or die (mysqli_error($koneksi)); echo "<table border='1'> <thead> <tr> <th>No</th> <th>Products</th> <th>Date</th> </tr> </thead> <tbody>"; while($data = mysqli_fetch_array($query)){?> <tr> <td><?php echo $no;?></td> <td><?php echo $data['product'];?></td> <td><?php echo $data['tanggal'];?></td> </tr> <?php $no++; ?> <?php } echo " </tbody> </table>"; } ?> </body> </html>
Untuk databasenya silahkan dapat dikopi skrip berikut, kemudian simpan dengan nama database yang diinginkan.
Misal: laporan.sql
-- phpMyAdmin SQL Dump -- version 4.7.7 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: May 03, 2018 at 03:23 PM -- Server version: 10.1.13-MariaDB -- PHP Version: 5.6.23 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET AUTOCOMMIT = 0; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `db_date` -- -- -------------------------------------------------------- -- -- Table structure for table `tbl_sales` -- CREATE TABLE `tbl_sales` ( `id_sales` int(11) NOT NULL, `product` varchar(100) NOT NULL, `tanggal` date NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `tbl_sales` -- INSERT INTO `tbl_sales` (`id_sales`, `product`, `tanggal`) VALUES (1, 'Tas', '2018-05-01'), (2, 'Kaos', '2018-05-01'), (3, 'Tas Kulit', '2018-04-01'), (4, 'Kaos Polo', '2018-04-20'), (5, 'Laptop A', '2018-05-02'), (6, 'Celana Jeans', '2018-04-18'); -- -- Indexes for dumped tables -- -- -- Indexes for table `tbl_sales` -- ALTER TABLE `tbl_sales` ADD PRIMARY KEY (`id_sales`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tbl_sales` -- ALTER TABLE `tbl_sales` MODIFY `id_sales` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Dengan penambahan BETWEEN dan AND filter berdasarkan range tanggal tertentu akan didapatkan. Untuk melihat demonya teman-teman bisa klik disini.