Show sourcecode
The following files exists in this folder. Click to view.
webbserverprogrammering/projects/anton-quiz/logged-in/
dashboard.php
result.php
test.php
result.php
100 lines UTF-8 Windows (CRLF)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
session_start();
if (!$_SESSION["id"]) {
header('Location: ../index.php');
die();
}
require_once __DIR__ . '/../dbconnect.php';
$test_id = $_GET["test_id"];
$stmt = $conn->prepare("SELECT test_name FROM quizdb_tests WHERE id = ?");
$stmt->bind_param("i", $test_id);
$stmt->execute();
$test_name = $stmt->get_result()->fetch_all()[0][0];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Resultat</title>
</head>
<body>
<h1><?php echo $test_name; ?></h1>
<?php
// Hämta samtliga resultat (om användaren gjort quizet flera gånger)
$stmt = $conn->prepare("
SELECT id, score, taken_at
FROM quizdb_results
WHERE user_id = ?
AND test_id = ?
ORDER BY taken_at DESC
");
$stmt->bind_param("ii", $_SESSION["id"], $test_id);
$stmt->execute();
$results = $stmt->get_result();
if ($results->num_rows === 0) {
echo "<p>Inga gjorda testomgångar hittades för detta test.</p>";
} else {
// Gå igenom alla resultat (om man gjort testet flera gånger)
while ($result = $results->fetch_assoc()) {
echo "<hr>";
echo "<h2>Test gjort: " . $result["taken_at"] . "</h2>";
echo "<p>Poäng: " . $result["score"] . "</p>";
// Hämta alla frågor för detta test
$stmtQ = $conn->prepare("
SELECT id, question_text
FROM quizdb_questions
WHERE is_enabled = 1
AND test_id = ?
");
$stmtQ->bind_param("i", $test_id);
$stmtQ->execute();
$questionsDbResult = $stmtQ->get_result();
// Skriv ut varje fråga och kolla om användaren svarade rätt eller fel
while ($question = $questionsDbResult->fetch_assoc()) {
echo "<h3>" . $question['question_text'] . "</h3>";
// Hämta användarens svar för just denna fråga + result_id
$stmtA = $conn->prepare("
SELECT a.answer_text, ua.is_correct
FROM quizdb_user_answers ua
JOIN quizdb_answers a ON a.id = ua.answer_id
WHERE ua.result_id = ?
AND ua.question_id = ?
");
$stmtA->bind_param("ii", $result["id"], $question["id"]);
$stmtA->execute();
$userAnswerResult = $stmtA->get_result();
// Om användaren svarade på frågan
if ($userAnswer = $userAnswerResult->fetch_assoc()) {
// Kolla om användarens valda svar var rätt eller fel
if ($userAnswer["is_correct"] == 1) {
// Visar användarens svar i grönt
echo "<p style='color: green;'>Ditt svar: " . $userAnswer["answer_text"] . " (Rätt)</p>";
} else {
// Visar användarens svar i rött
echo "<p style='color: red;'>Ditt svar: " . $userAnswer["answer_text"] . " (Fel)</p>";
}
} else {
// Om det saknas användarsvar kan man t.ex. skriva ut detta
echo "<p style='color: grey;'>Ingen svar angavs för denna fråga.</p>";
}
}
}
}
?>
<a href="dashboard.php">Tillbaka</a>
</body>
</html>