MINI
C:
/
xampp
/
htdocs
/
reset
/
Upload File:
files >> C:/xampp/htdocs/reset/index - Copy (6).php
<?php // reset_all_cards.php // Konfigurasi database $host = 'localhost'; $dbname = 'bobby_koperasi'; $username = 'root'; $password = ''; // Koneksi ke database menggunakan PDO try { $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Query untuk mendapatkan data kartu dengan keterangan $cards_query = "SELECT nomor_card, is_aktif, is_keluar, keterangan FROM data_card ORDER BY nomor_card"; $cards_stmt = $pdo->query($cards_query); $cards = $cards_stmt->fetchAll(PDO::FETCH_ASSOC); // Hitung statistik $total_active = 0; $total_inactive = 0; foreach ($cards as $card) { if ($card['is_aktif']) $total_active++; else $total_inactive++; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['reset_all_cards'])) { // Mulai transaksi untuk reset $pdo->beginTransaction(); try { $reset_stmt = $pdo->prepare("UPDATE data_card SET is_aktif = 0, is_keluar = 0, keterangan = CONCAT(IFNULL(keterangan,''), ' | Direset pada: ', NOW()) WHERE is_aktif = 1"); $reset_stmt->execute(); $affected_rows = $reset_stmt->rowCount(); $pdo->commit(); // Refresh data $cards_stmt = $pdo->query($cards_query); $cards = $cards_stmt->fetchAll(PDO::FETCH_ASSOC); $success_message = "Berhasil mereset $affected_rows kartu aktif!"; } catch (Exception $e) { $pdo->rollBack(); $error_message = "Gagal mereset: " . $e->getMessage(); } } if (isset($_POST['update_keterangan'])) { $nomor_card = $_POST['nomor_card']; $new_keterangan = $_POST['keterangan']; try { $update_stmt = $pdo->prepare("UPDATE data_card SET keterangan = :keterangan WHERE nomor_card = :nomor_card"); $update_stmt->bindParam(':keterangan', $new_keterangan); $update_stmt->bindParam(':nomor_card', $nomor_card); $update_stmt->execute(); // Refresh data $cards_stmt = $pdo->query($cards_query); $cards = $cards_stmt->fetchAll(PDO::FETCH_ASSOC); $success_message = "Keterangan untuk kartu $nomor_card berhasil diperbarui!"; } catch (Exception $e) { $error_message = "Gagal update keterangan: " . $e->getMessage(); } } } } catch (PDOException $e) { $error_message = "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>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> .main-container { max-width: 1200px; margin: 30px auto; padding: 30px; border-radius: 10px; box-shadow: 0 0 20px rgba(0,0,0,0.1); } .summary-card { transition: all 0.3s; } .summary-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0,0,0,0.1); } .status-badge { display: inline-block; padding: 3px 8px; border-radius: 10px; font-weight: 500; min-width: 70px; text-align: center; } .status-active { background-color: #28a745; color: white; } .status-inactive { background-color: #dc3545; color: white; } .keterangan-cell { max-width: 300px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .modal-keterangan { max-width: 600px; } </style> </head> <body> <div class="container main-container"> <h2 class="text-center mb-4"><i class="bi bi-card-list"></i> Manajemen Data Kartu</h2> <!-- Tampilkan Pesan --> <?php if (isset($success_message)): ?> <div class="alert alert-success alert-dismissible fade show"> <i class="bi bi-check-circle"></i> <?php echo $success_message; ?> <button type="button" class="btn-close" data-bs-dismiss="alert"></button> </div> <?php elseif (isset($error_message)): ?> <div class="alert alert-danger alert-dismissible fade show"> <i class="bi bi-exclamation-triangle"></i> <?php echo $error_message; ?> <button type="button" class="btn-close" data-bs-dismiss="alert"></button> </div> <?php endif; ?> <!-- Statistik Kartu --> <div class="row mb-4"> <div class="col-md-6 mb-3"> <div class="card summary-card h-100 border-success"> <div class="card-body text-center"> <h5><i class="bi bi-check-circle text-success"></i> Kartu Aktif</h5> <h1 class="display-4 text-success"><?php echo $total_active; ?></h1> </div> </div> </div> <div class="col-md-6"> <div class="card summary-card h-100 border-danger"> <div class="card-body text-center"> <h5><i class="bi bi-x-circle text-danger"></i> Kartu Non-Aktif</h5> <h1 class="display-4 text-danger"><?php echo $total_inactive; ?></h1> </div> </div> </div> </div> <!-- Tabel Data Kartu --> <div class="table-responsive mb-4"> <table id="cardsTable" class="table table-striped table-hover"> <thead class="table-dark"> <tr> <th>No. Kartu</th> <th>Status Aktif</th> <th>Status Keluar</th> <th>Keterangan</th> <th>Aksi</th> </tr> </thead> <tbody> <?php foreach ($cards as $card): ?> <tr> <td><?php echo htmlspecialchars($card['nomor_card']); ?></td> <td> <span class="status-badge <?php echo $card['is_aktif'] ? 'status-active' : 'status-inactive'; ?>"> <?php echo $card['is_aktif'] ? 'AKTIF' : 'NON-AKTIF'; ?> </span> </td> <td> <span class="status-badge <?php echo $card['is_keluar'] ? 'bg-warning' : 'bg-secondary'; ?>"> <?php echo $card['is_keluar'] ? 'KELUAR' : 'MASUK'; ?> </span> </td> <td class="keterangan-cell" title="<?php echo htmlspecialchars($card['keterangan'] ?? ''); ?>"> <?php echo htmlspecialchars(mb_strimwidth($card['keterangan'] ?? '', 0, 50, '...')); ?> </td> <td> <button class="btn btn-sm btn-outline-primary edit-keterangan" data-card-id="<?php echo htmlspecialchars($card['nomor_card']); ?>" data-keterangan="<?php echo htmlspecialchars($card['keterangan'] ?? ''); ?>"> <i class="bi bi-pencil-square"></i> Edit </button> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> <!-- Reset All Cards --> <div class="card border-danger mb-4"> <div class="card-header bg-danger text-white"> <h5 class="mb-0"><i class="bi bi-exclamation-triangle"></i> Reset Semua Kartu Aktif</h5> </div> <div class="card-body"> <p class="card-text"> Aksi ini akan: <ul> <li>Mengubah status <strong>SEMUA</strong> kartu aktif menjadi non-aktif</li> <li>Menandai semua kartu sebagai "MASUK"</li> <li>Menambahkan catatan reset pada kolom keterangan</li> </ul> <strong class="text-danger">Perubahan ini tidak dapat dibatalkan!</strong> </p> <form method="post" onsubmit="return confirm('Apakah Anda yakin ingin mereset SEMUA kartu aktif?')"> <button type="submit" name="reset_all_cards" class="btn btn-danger"> <i class="bi bi-power"></i> Reset Semua Kartu Aktif </button> </form> </div> </div> </div> <!-- Modal Edit Keterangan --> <div class="modal fade" id="keteranganModal" tabindex="-1" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered modal-keterangan"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Edit Keterangan Kartu</h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <form method="post"> <div class="modal-body"> <input type="hidden" id="edit_nomor_card" name="nomor_card"> <div class="mb-3"> <label for="edit_keterangan" class="form-label">Keterangan:</label> <textarea class="form-control" id="edit_keterangan" name="keterangan" rows="3"></textarea> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button> <button type="submit" name="update_keterangan" class="btn btn-primary">Simpan</button> </div> </form> </div> </div> </div> <!-- JavaScript Libraries --> <script src="https://code.jquery.com/jquery-3.7.0.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 src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script> <script> $(document).ready(function() { // Inisialisasi DataTable $('#cardsTable').DataTable({ language: { url: 'https://cdn.datatables.net/plug-ins/1.13.6/i18n/id.json' }, pageLength: 10, order: [[0, 'asc']] }); // Handle klik tombol edit keterangan $('.edit-keterangan').click(function() { const cardId = $(this).data('card-id'); const keterangan = $(this).data('keterangan'); $('#edit_nomor_card').val(cardId); $('#edit_keterangan').val(keterangan); // Update modal title $('.modal-title').html(`Edit Keterangan Kartu #${cardId}`); // Show modal new bootstrap.Modal(document.getElementById('keteranganModal')).show(); }); }); </script> </body> </html>
Copyright ©2021 || Defacer Indonesia