setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { // Untuk keperluan UI, kita tangkap errornya tanpa merusak tampilan HTML jika ini request biasa $db_error = "Koneksi database gagal: " . $e->getMessage(); } // --- PENANGANAN API (AJAX REQUESTS) --- if (isset($_GET['action'])) { header('Content-Type: application/json'); if ($_GET['action'] == 'get_guests' && !isset($db_error)) { try { // Ambil data tamu, urutkan dari yang terbaru $stmt = $pdo->query("SELECT id, nama, instansi, no_hp, keperluan, tanda_tangan, DATE_FORMAT(waktu_kunjungan, '%H:%i') as time, DATE_FORMAT(waktu_kunjungan, '%d %b %Y') as date FROM tamu ORDER BY waktu_kunjungan DESC"); $guests = $stmt->fetchAll(PDO::FETCH_ASSOC); echo json_encode(['status' => 'success', 'data' => $guests]); } catch (Exception $e) { echo json_encode(['status' => 'error', 'message' => $e->getMessage()]); } exit; } } if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { header('Content-Type: application/json'); if ($_POST['action'] == 'add_guest' && !isset($db_error)) { try { $nama = $_POST['nama']; $instansi = $_POST['instansi']; $no_hp = $_POST['no_hp']; $keperluan = $_POST['keperluan']; $tanda_tangan = $_POST['tanda_tangan']; // Base64 string $sql = "INSERT INTO tamu (nama, instansi, no_hp, keperluan, tanda_tangan) VALUES (?, ?, ?, ?, ?)"; $stmt = $pdo->prepare($sql); $stmt->execute([$nama, $instansi, $no_hp, $keperluan, $tanda_tangan]); echo json_encode(['status' => 'success', 'message' => 'Data berhasil disimpan']); } catch (Exception $e) { echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan data: ' . $e->getMessage()]); } exit; } } ?> Buku Tamu Digital - PKBM Pelita Hati

Error Database

Aplikasi akan berjalan dalam mode demo (tidak tersimpan ke server).

Selamat Datang

di PKBM Pelita Hati

Silakan isi buku tamu digital kami sebagai catatan kehadiran Anda.

Data Tamu

Tanda tangan di sini

Daftar Hadir

Catatan 0 Tamu

Belum ada tamu yang tercatat.

Data berhasil disimpan!