Added auto-loading of previous responses

This commit is contained in:
overplayed 2025-03-15 19:04:17 -04:00
parent 8e91c1432b
commit 2d697b512d
2 changed files with 83 additions and 14 deletions

View File

@ -74,20 +74,37 @@ document.addEventListener("DOMContentLoaded", function () {
// Prepopulate the form if returning user
function prepopulateForm() {
const savedData = JSON.parse(localStorage.getItem("assessmentData"));
if (savedData) {
Object.keys(savedData).forEach(key => {
const field = form.elements[key];
if (field) {
if (field.type === "checkbox") {
field.checked = savedData[key];
} else {
field.value = savedData[key];
}
}
});
}
}
fetch("../load-responses.php")
.then(response => response.json())
.then(data => {
if (data.error) {
console.warn("Error loading responses:", data.error);
return;
}
Object.keys(data).forEach(key => {
let field = document.querySelector(`[name="${key}"]`);
if (field) {
if (field.type === "checkbox") {
let values = JSON.parse(data[key] || "[]");
values.forEach(value => {
let checkbox = document.querySelector(`[name="${key}"][value="${value}"]`);
if (checkbox) checkbox.checked = true;
});
} else {
field.value = data[key];
}
}
});
console.log("Form preloaded successfully.");
})
.catch(error => console.error("Failed to load form responses:", error));
}
// Run prepopulation after DOM is loaded
document.addEventListener("DOMContentLoaded", prepopulateForm);
// Save form data to localStorage on change
form.addEventListener("input", function () {

52
load-responses.php Normal file
View File

@ -0,0 +1,52 @@
<?php
session_start();
require_once "db.php";
header("Content-Type: application/json");
// Get user token from session or URL
$userToken = $_SESSION['user_token'] ?? $_GET['token'] ?? null;
if (!$userToken) {
http_response_code(403);
echo json_encode(["error" => "Unauthorized access."]);
exit;
}
// Connect to the database
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
http_response_code(500);
echo json_encode(["error" => "Database connection failed."]);
exit;
}
// Fetch user ID using token
$stmt = $conn->prepare("SELECT id FROM users WHERE auth_token = ?");
$stmt->bind_param("s", $userToken);
$stmt->execute();
$result = $stmt->get_result();
$user = $result->fetch_assoc();
if (!$user) {
http_response_code(403);
echo json_encode(["error" => "Invalid authentication token."]);
exit;
}
$userId = $user['id'];
// Fetch saved responses
$stmt = $conn->prepare("SELECT * FROM questionnaire_responses WHERE user_id = ?");
$stmt->bind_param("i", $userId);
$stmt->execute();
$result = $stmt->get_result();
$response = $result->fetch_assoc();
if ($response) {
echo json_encode($response);
} else {
echo json_encode(["message" => "No previous responses found."]);
}
$conn->close();
exit;
?>