MINI
C:
/
siak
/
app
/
AdminLTE
/
New folder
/
Upload File:
files >> C:/siak/app/AdminLTE/New folder/dasboard.php
<?php /** * DASHBOARD PENDUDUK (PHP + ORACLE) * --------------------------------- * Fitur: * - Mengambil data langsung dari database Oracle (SIAK) * - Menampilkan statistik: Total Penduduk, Laki-Laki, Perempuan, KK * - Grafik distribusi penduduk per Kelurahan (Top 10) * - Menggunakan Chart.js + Bootstrap * * Pastikan server Anda memiliki extension OCI8 * sudo apt install php-oci8 */ session_start(); if (!isset($_SESSION['grabtool_sudah_login'])) { header('location:login.php'); exit; } //----------------------------------- // KONFIGURASI DATABASE ORACLE //----------------------------------- $host = "10.65.0.3"; $port = "1521"; $user = "SIAKOFF"; $pass = "bobbytgs13"; $sid = "SIAKDB"; $connection_string = "$host:$port/$sid"; $conn = @oci_connect($user, $pass, $connection_string); if (!$conn) { $err = oci_error(); die("Koneksi Oracle gagal: " . $err['message']); } oci_execute(oci_parse($conn, "ALTER SESSION SET nls_date_format='DD-MM-YYYY'")); //----------------------------------- // AMBIL STATISTIK DASAR //----------------------------------- function ambil_satu($conn, $query) { $stid = oci_parse($conn, $query); oci_execute($stid); $row = oci_fetch_row($stid); return (int)$row[0]; } $total = ambil_satu($conn, "SELECT COUNT(*) FROM biodata_wni"); $laki = ambil_satu($conn, "SELECT COUNT(*) FROM biodata_wni WHERE JENIS_KLMIN = '1'"); $perem = ambil_satu($conn, "SELECT COUNT(*) FROM biodata_wni WHERE JENIS_KLMIN = '2'"); $kk = ambil_satu($conn, "SELECT COUNT(DISTINCT NO_KK) FROM biodata_wni"); //----------------------------------- // DISTRIBUSI TOP 10 KELURAHAN //----------------------------------- $sql = "SELECT NAMA_KEL, COUNT(*) AS JML FROM biodata_wni GROUP BY NAMA_KEL ORDER BY JML DESC FETCH FIRST 10 ROWS ONLY"; $stid = oci_parse($conn, $sql); oci_execute($stid); $labels = []; $values = []; \while ($r = oci_fetch_assoc($stid)) { $labels[] = $r['NAMA_KEL'] ?: 'TIDAK ADA'; $values[] = (int)$r['JML']; } ?> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Dashboard Penduduk</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css"> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <style> .stat-box { padding: 20px; border-radius: 10px; color: white; } .bg-total { background:#007bff; } .bg-laki { background:#17a2b8; } .bg-perem { background:#e83e8c; } .bg-kk { background:#28a745; } .angka { font-size: 2rem; font-weight:bold; } </style> </head> <body> <div class="container mt-4"> <h2 class="text-center mb-4">Dashboard Kependudukan Kaltara</h2> <div class="row text-center"> <div class="col-md-3 mb-3"> <div class="stat-box bg-total"> <div>Total Penduduk</div> <div class="angka"><?php echo number_format($total); ?></div> </div> </div> <div class="col-md-3 mb-3"> <div class="stat-box bg-laki"> <div>Laki-Laki</div> <div class="angka"><?php echo number_format($laki); ?></div> </div> </div> <div class="col-md-3 mb-3"> <div class="stat-box bg-perem"> <div>Perempuan</div> <div class="angka"><?php echo number_format($perem); ?></div> </div> </div> <div class="col-md-3 mb-3"> <div class="stat-box bg-kk"> <div>Jumlah KK</div> <div class="angka"><?php echo number_format($kk); ?></div> </div> </div> </div> <div class="card mt-4"> <div class="card-header">Top 10 Kelurahan Berdasarkan Jumlah Penduduk</div> <div class="card-body"> <canvas id="myChart" height="100"></canvas> </div> </div> </div> <script> var ctx = document.getElementById('myChart').getContext('2d'); var chart = new Chart(ctx, { type: 'bar', data: { labels: <?= json_encode($labels) ?>, datasets: [{ label: 'Jumlah Penduduk', data: <?= json_encode($values) ?>, borderWidth: 1 }] }, options: { scales: { yAxes: [{ ticks: { beginAtZero: true } }] } } }); </script> </body> </html>
Copyright ©2021 || Defacer Indonesia