MINI
C:
/
xampp
/
htdocs
/
reset
/
New folder
/
Upload File:
files >> C:/xampp/htdocs/reset/New folder/index.php
<?php // koneksi_database.php $host = 'localhost'; $dbname = 'bobby_koperasi'; $username = 'root'; $password = ''; try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Query data statistik $stats = $pdo->query("SELECT SUM(is_aktif = 1) as total_aktif, SUM(is_aktif = 0) as total_nonaktif, SUM(is_keluar = 1) as total_keluar, SUM(is_keluar = 0) as total_masuk, COUNT(*) as total_kartu FROM data_card")->fetch(PDO::FETCH_ASSOC); // Query data kartu $cards = $pdo->query("SELECT nomor_card, is_aktif, is_keluar, keterangan FROM data_card ORDER BY nomor_card") ->fetchAll(PDO::FETCH_ASSOC); // Handle form submissions if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['reset_card'])) { $nomor_card = $_POST['nomor_card']; $stmt = $pdo->prepare("UPDATE data_card SET is_aktif = 0, is_keluar = 0 WHERE nomor_card = :nomor_card"); $stmt->bindParam(':nomor_card', $nomor_card); $stmt->execute(); // Refresh data $cards = $pdo->query("SELECT nomor_card, is_aktif, is_keluar, keterangan FROM data_card ORDER BY nomor_card") ->fetchAll(PDO::FETCH_ASSOC); $success_message = "Kartu $nomor_card berhasil direset!"; } if (isset($_POST['reset_all_active'])) { $stmt = $pdo->prepare("UPDATE data_card SET is_aktif = 0, is_keluar = 0 WHERE is_aktif = 1"); $affected_rows = $stmt->execute(); // Refresh data $cards = $pdo->query("SELECT nomor_card, is_aktif, is_keluar, keterangan FROM data_card ORDER BY nomor_card") ->fetchAll(PDO::FETCH_ASSOC); $success_message = "Berhasil mereset $affected_rows kartu aktif!"; } } } catch (PDOException $e) { die("Koneksi database gagal: " . $e->getMessage()); } ?> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Dashboard Manajemen Kartu</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"> <link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap5.min.css"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.0/font/bootstrap-icons.css"> <style> :root { --primary-color: #4e73df; --success-color: #1cc88a; --info-color: #36b9cc; --warning-color: #f6c23e; --danger-color: #e74a3b; --dark-color: #5a5c69; } body { background-color: #f8f9fc; font-family: 'Nunito', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } .sidebar { background: linear-gradient(180deg, var(--primary-color) 0%, #224abe 100%); min-height: 100vh; width: 14rem; transition: all 0.3s; box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15); position: fixed; z-index: 100; } .main-content { margin-left: 14rem; width: calc(100% - 14rem); min-height: 100vh; } .topbar { height: 4.375rem; box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.15); background: white; } .card { border: none; border-radius: 0.35rem; box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.1); margin-bottom: 1.5rem; transition: transform 0.3s; } .card:hover { transform: translateY(-5px); } .card-header { background-color: #f8f9fc; border-bottom: 1px solid #e3e6f0; } .stat-card { color: white; border-left: 0.25rem solid !important; border-left-color: inherit !important; } .stat-card i { font-size: 2rem; opacity: 0.7; } .bg-primary { background-color: var(--primary-color) !important; } .bg-success { background-color: var(--success-color) !important; } .bg-info { background-color: var(--info-color) !important; } .bg-warning { background-color: var(--warning-color) !important; } .status-badge { display: inline-block; padding: 0.35em 0.65em; font-size: 0.75em; font-weight: 700; line-height: 1; color: white; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: 0.25rem; } .badge-aktif { background-color: var(--success-color); } .badge-nonaktif { background-color: var(--danger-color); } .badge-masuk { background-color: var(--info-color); } .badge-keluar { background-color: var(--warning-color); } .table-responsive { margin-bottom: 0; overflow: hidden; border-radius: 0.35rem; box-shadow: 0 0.15rem 1.75rem 0 rgba(58, 59, 69, 0.1); } .table thead th { background-color: var(--primary-color); color: white; border-bottom: none; } .btn-action { width: 30px; height: 30px; padding: 0; display: inline-flex; align-items: center; justify-content: center; } .reset-all-btn { position: fixed; bottom: 20px; right: 20px; z-index: 1000; } </style> </head> <body> <!-- Sidebar --> <div class="sidebar"> <div class="text-center py-4"> <h4 class="text-white fw-bold">Koperasi XYZ</h4> </div> <hr class="bg-white opacity-50 mx-3"> <div class="nav flex-column px-3"> <a href="#" class="nav-link active text-white py-3"> <i class="bi bi-speedometer2 me-2"></i> Dashboard </a> <a href="#" class="nav-link text-white py-3"> <i class="bi bi-credit-card me-2"></i> Manajemen Kartu </a> <a href="#" class="nav-link text-white py-3"> <i class="bi bi-people me-2"></i> Anggota </a> <a href="#" class="nav-link text-white py-3"> <i class="bi bi-graph-up me-2"></i> Laporan </a> </div> </div> <!-- Main Content --> <div class="main-content"> <!-- Topbar --> <nav class="topbar navbar navbar-expand navbar-light bg-white shadow mb-4"> <div class="container-fluid px-4"> <button class="btn btn-link d-md-none rounded-circle me-3"> <i class="bi bi-list"></i> </button> <div class="d-flex align-items-center ms-auto"> <div class="position-relative me-3"> <i class="bi bi-bell fs-4 text-gray-500"></i> </div> <div class="d-flex align-items-center"> <div class="avatar me-2">BM</div> <span class="d-none d-lg-inline">Admin</span> </div> </div> </div> </nav> <!-- Begin Page Content --> <div class="container-fluid px-4"> <!-- Page Heading --> <div class="d-sm-flex align-items-center justify-content-between mb-4"> <h1 class="h3 mb-0 text-gray-800">Dashboard Kartu</h1> </div> <!-- Statistik Cards --> <div class="row"> <div class="col-xl-3 col-md-6 mb-4"> <div class="card stat-card border-left-primary bg-primary h-100 py-2"> <div class="card-body"> <div class="row no-gutters align-items-center"> <div class="col me-2"> <div class="text-xs fw-bold text-white text-uppercase mb-1"> Total Kartu</div> <div class="h5 mb-0 fw-bold text-white"><?= $stats['total_kartu'] ?></div> </div> <div class="col-auto"> <i class="bi bi-credit-card-2-front"></i> </div> </div> </div> </div> </div> <div class="col-xl-3 col-md-6 mb-4"> <div class="card stat-card border-left-success bg-success h-100 py-2"> <div class="card-body"> <div class="row no-gutters align-items-center"> <div class="col me-2"> <div class="text-xs fw-bold text-white text-uppercase mb-1"> Kartu Aktif</div> <div class="h5 mb-0 fw-bold text-white"><?= $stats['total_aktif'] ?></div> </div> <div class="col-auto"> <i class="bi bi-check-circle"></i> </div> </div> </div> </div> </div> <div class="col-xl-3 col-md-6 mb-4"> <div class="card stat-card border-left-danger bg-danger h-100 py-2"> <div class="card-body"> <div class="row no-gutters align-items-center"> <div class="col me-2"> <div class="text-xs fw-bold text-white text-uppercase mb-1"> Kartu Non-Aktif</div> <div class="h5 mb-0 fw-bold text-white"><?= $stats['total_nonaktif'] ?></div> </div> <div class="col-auto"> <i class="bi bi-x-circle"></i> </div> </div> </div> </div> </div> <div class="col-xl-3 col-md-6 mb-4"> <div class="card stat-card border-left-warning bg-warning h-100 py-2"> <div class="card-body"> <div class="row no-gutters align-items-center"> <div class="col me-2"> <div class="text-xs fw-bold text-dark text-uppercase mb-1"> Kartu Keluar</div> <div class="h5 mb-0 fw-bold text-dark"><?= $stats['total_keluar'] ?></div> </div> <div class="col-auto"> <i class="bi bi-box-arrow-right text-dark"></i> </div> </div> </div> </div> </div> </div> <!-- Data Kartu --> <div class="card shadow mb-4"> <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between"> <h6 class="m-0 fw-bold text-primary">Daftar Kartu</h6> </div> <div class="card-body"> <?php if (isset($success_message)): ?> <div class="alert alert-success alert-dismissible fade show"> <i class="bi bi-check-circle"></i> <?= $success_message ?> <button type="button" class="btn-close" data-bs-dismiss="alert"></button> </div> <?php endif; ?> <div class="table-responsive"> <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0"> <thead> <tr> <th>No. Kartu</th> <th>Status</th> <th>Status Keluar</th> <th>Keterangan</th> <th>Aksi</th> </tr> </thead> <tbody> <?php foreach ($cards as $card): ?> <tr> <td><?= htmlspecialchars($card['nomor_card']) ?></td> <td> <span class="status-badge <?= $card['is_aktif'] ? 'badge-aktif' : 'badge-nonaktif' ?>"> <?= $card['is_aktif'] ? 'AKTIF' : 'NON-AKTIF' ?> </span> </td> <td> <span class="status-badge <?= $card['is_keluar'] ? 'badge-keluar' : 'badge-masuk' ?>"> <?= $card['is_keluar'] ? 'KELUAR' : 'MASUK' ?> </span> </td> <td><?= htmlspecialchars($card['keterangan'] ?? '-') ?></td> <td> <form method="post" style="display: inline-block;"> <input type="hidden" name="nomor_card" value="<?= $card['nomor_card'] ?>"> <button type="submit" name="reset_card" class="btn btn-sm btn-warning btn-action" title="Reset Kartu" onclick="return confirm('Reset kartu <?= $card['nomor_card'] ?>?')"> <i class="bi bi-arrow-counterclockwise"></i> </button> </form> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> </div> </div> <!-- Tombol Reset All --> <form method="post" class="reset-all-btn"> <button type="submit" name="reset_all_active" class="btn btn-danger rounded-circle p-3 shadow-lg" title="Reset Semua Kartu Aktif" onclick="return confirm('Reset SEMUA kartu aktif?')"> <i class="bi bi-power fs-4"></i> </button> </form> <!-- JavaScript Libraries --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script> <script src="https://cdn.datatables.net/1.13.6/js/dataTables.bootstrap5.min.js"></script> <script> // Datatable initialization $(document).ready(function() { $('#dataTable').DataTable({ language: { url: 'https://cdn.datatables.net/plug-ins/1.13.6/i18n/id.json' } }); }); </script> </body> </html>
Copyright ©2021 || Defacer Indonesia