From 5ac1aa009370793c85f86c02fe9cebb41cac7bff Mon Sep 17 00:00:00 2001 From: vista-man <524715@vistacollege.nl> Date: Thu, 10 Apr 2025 21:27:08 +0200 Subject: [PATCH] Implement QR code ticket scanning and details retrieval: add fetch request to get_ticket_details.php and display ticket information --- php/get_ticket_details.php | 42 ++++++++++++++++++++++++++++++++++++++ qr/qrCodeScanner.js | 30 ++++++++++++++++++++++----- 2 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 php/get_ticket_details.php diff --git a/php/get_ticket_details.php b/php/get_ticket_details.php new file mode 100644 index 0000000..44704ac --- /dev/null +++ b/php/get_ticket_details.php @@ -0,0 +1,42 @@ +connect_error) { + echo json_encode(['success' => false, 'message' => 'Databaseverbinding mislukt.']); + exit(); +} + +// Retrieve ticket_id from the query string +$ticket_id = isset($_GET['ticket_id']) ? trim($_GET['ticket_id']) : ''; + +if (empty($ticket_id)) { + echo json_encode(['success' => false, 'message' => 'Geen ticket ID opgegeven.']); + exit(); +} + +// Query the database for ticket details +$sql = "SELECT ticket_id, category, day FROM tickets WHERE ticket_id = ?"; +$stmt = $conn->prepare($sql); +$stmt->bind_param("s", $ticket_id); +$stmt->execute(); +$result = $stmt->get_result(); + +if ($result->num_rows > 0) { + $ticket = $result->fetch_assoc(); + echo json_encode(['success' => true, 'ticket_id' => $ticket['ticket_id'], 'category' => $ticket['category'], 'day' => $ticket['day']]); +} else { + echo json_encode(['success' => false, 'message' => 'Ticket niet gevonden.']); +} + +$stmt->close(); +$conn->close(); +?> diff --git a/qr/qrCodeScanner.js b/qr/qrCodeScanner.js index 37ee6b3..fc7914b 100644 --- a/qr/qrCodeScanner.js +++ b/qr/qrCodeScanner.js @@ -25,11 +25,31 @@ btnScanQR.addEventListener('click', () => { try { const qrCodeData = qrcode.decode(); - outputData.innerText = qrCodeData; - qrResult.hidden = false; - qrCanvas.hidden = true; - video.hidden = true; // Hide the video element after scanning - stream.getTracks().forEach(track => track.stop()); + fetch(`../php/get_ticket_details.php?ticket_id=${encodeURIComponent(qrCodeData)}`) + .then(response => response.json()) + .then(data => { + if (data.success) { + outputData.innerHTML = ` +

Ticket ID: ${data.ticket_id}

+

Dag: ${data.day === 'friday' ? 'Vrijdag' : 'Zaterdag'}

+

Categorie: ${data.category === 'volwassen' ? 'Volwassene' : 'Kind'}

+ `; + } else { + outputData.innerHTML = `

${data.message}

`; + } + qrResult.hidden = false; + qrCanvas.hidden = true; + video.hidden = true; // Hide the video element after scanning + stream.getTracks().forEach(track => track.stop()); + }) + .catch(err => { + console.error('Error fetching ticket details:', err); + outputData.innerHTML = `

Fout bij het ophalen van ticketgegevens.

`; + qrResult.hidden = false; + qrCanvas.hidden = true; + video.hidden = true; + stream.getTracks().forEach(track => track.stop()); + }); } catch (e) { requestAnimationFrame(scan); }