Added auto-loading of previous responses
This commit is contained in:
parent
8e91c1432b
commit
2d697b512d
|
|
@ -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 () {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
?>
|
||||
Loading…
Reference in New Issue