Aplikas PHP Reminder Pajak Kendaraan
1. Persiapan Lingkungan Pengembangan
- Server: Pastikan Anda memiliki server lokal seperti XAMPP atau WAMP.
- Database: Gunakan MySQL untuk menyimpan data kendaraan dan pengingat.
2. Struktur Database
Buat tabel di database Anda dengan struktur seperti berikut :
CREATE TABLE kendaraan (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_pemilik VARCHAR(100),
nomor_kendaraan VARCHAR(20) UNIQUE,
tanggal_jatuh_tempo DATE,
status VARCHAR(20) DEFAULT 'Belum Dibayar'
);
3. Struktur Folder
Buat struktur folder sebagai berikut:
/reminder-pajak
/css
/js
/images
/includes
index.php
koneksi.php
4. Koneksi Database
Buat file koneksi.php
untuk menghubungkan aplikasi ke database:
<?php
$host = "localhost";
$username = "root"; // Sesuaikan dengan username Anda
$password = ""; // Sesuaikan dengan password Anda
$database = "reminder_pajak";
$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
die("Koneksi gagal: " . $conn->connect_error);
}
?>
5. Tampilan Dashboard
Di index.php
, buat tampilan menggunakan Bootstrap:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<title>Reminder Pajak Kendaraan</title>
</head>
<body>
<div class="container">
<h1 class="mt-4">Dashboard Pengingat Pajak Kendaraan</h1>
<div class="row mt-4">
<div class="col-md-12">
<table class="table table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Pemilik</th>
<th>Nomor Kendaraan</th>
<th>Tanggal Jatuh Tempo</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php
include 'koneksi.php';
$result = $conn->query("SELECT * FROM kendaraan");
$no = 1;
while ($row = $result->fetch_assoc()) {
echo "<tr>
<td>{$no}</td>
<td>{$row['nama_pemilik']}</td>
<td>{$row['nomor_kendaraan']}</td>
<td>{$row['tanggal_jatuh_tempo']}</td>
<td>{$row['status']}</td>
</tr>";
$no++;
}
?>
</tbody>
</table>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
6. Fitur Reminder
Anda bisa menambahkan fitur untuk mengingatkan pengguna tentang pajak yang akan jatuh tempo. Misalnya, Anda dapat menambahkan skrip PHP untuk memeriksa tanggal jatuh tempo setiap kali pengguna mengakses halaman.
7. Responsif dan Mobile Support
Bootstrap sudah menyediakan komponen yang responsif. Pastikan untuk menguji tampilan di berbagai ukuran layar.
8. Fitur Tambahan
- Form Input: Tambahkan form untuk menambah kendaraan baru.
- Notifikasi: Anda dapat menggunakan JavaScript untuk menampilkan notifikasi jika ada pajak yang mendekati jatuh tempo.
- Autentikasi: Jika diperlukan, implementasikan sistem login untuk menjaga data tetap aman.
9. Testing dan Deployment
Setelah selesai, lakukan pengujian untuk memastikan semuanya berjalan dengan baik. Kemudian, Anda bisa meng-upload ke server web untuk diakses secara publik.
Menambahkan skrip PHP yang memeriksa tanggal jatuh tempo setiap kali pengguna mengakses halaman, Anda dapat menambahkan beberapa logika di dalam file index.php
. Skrip ini akan memeriksa kendaraan mana yang memiliki tanggal jatuh tempo yang mendekati atau sudah lewat dan menampilkan notifikasi kepada pengguna.
Berikut adalah cara untuk melakukannya:
1. Tambahkan Logika Pengecekan Tanggal Jatuh Tempo
Modifikasi bagian PHP dalam index.php
untuk memeriksa tanggal jatuh tempo. Anda dapat menggunakan fungsi date()
untuk mendapatkan tanggal saat ini dan membandingkannya dengan tanggal jatuh tempo kendaraan.
<?php
include 'koneksi.php';
// Ambil tanggal saat ini
$tanggal_sekarang = date('Y-m-d');
// Ambil kendaraan yang jatuh tempo
$result = $conn->query("SELECT * FROM kendaraan WHERE tanggal_jatuh_tempo <= DATE_ADD('$tanggal_sekarang', INTERVAL 7 DAY)");
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<title>Reminder Pajak Kendaraan</title>
</head>
<body>
<div class="container">
<h1 class="mt-4">Dashboard Pengingat Pajak Kendaraan</h1>
<?php if ($result->num_rows > 0): ?>
<div class="alert alert-warning" role="alert">
Ada kendaraan yang jatuh tempo dalam 7 hari ke depan!
</div>
<table class="table table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Pemilik</th>
<th>Nomor Kendaraan</th>
<th>Tanggal Jatuh Tempo</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
while ($row = $result->fetch_assoc()) {
echo "<tr>
<td>{$no}</td>
<td>{$row['nama_pemilik']}</td>
<td>{$row['nomor_kendaraan']}</td>
<td>{$row['tanggal_jatuh_tempo']}</td>
<td>{$row['status']}</td>
</tr>";
$no++;
}
?>
</tbody>
</table>
<?php else: ?>
<div class="alert alert-success" role="alert">
Tidak ada kendaraan yang jatuh tempo dalam 7 hari ke depan.
</div>
<?php endif; ?>
<div class="row mt-4">
<div class="col-md-12">
<table class="table table-striped">
<thead>
<tr>
<th>No</th>
<th>Nama Pemilik</th>
<th>Nomor Kendaraan</th>
<th>Tanggal Jatuh Tempo</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php
// Tampilkan semua kendaraan
$result_all = $conn->query("SELECT * FROM kendaraan");
$no = 1;
while ($row = $result_all->fetch_assoc()) {
echo "<tr>
<td>{$no}</td>
<td>{$row['nama_pemilik']}</td>
<td>{$row['nomor_kendaraan']}</td>
<td>{$row['tanggal_jatuh_tempo']}</td>
<td>{$row['status']}</td>
</tr>";
$no++;
}
?>
</tbody>
</table>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
Penjelasan Kode
Pengecekan Tanggal Jatuh Tempo:
- Mengambil tanggal saat ini dengan
date('Y-m-d')
. - Mengambil kendaraan yang jatuh tempo dalam 7 hari ke depan dengan query SQL.
- Mengambil tanggal saat ini dengan
Menampilkan Notifikasi:
- Jika ada kendaraan yang jatuh tempo, tampilkan alert dengan informasi tersebut.
- Jika tidak ada kendaraan yang jatuh tempo, tampilkan pesan bahwa tidak ada kendaraan yang perlu diingatkan.
Tabel Kendaraan:
- Tampilkan semua kendaraan dalam tabel terpisah di bawah notifikasi.