Show sourcecode
The following files exists in this folder. Click to view.
create_test.php
create_test_fuckingtrasig.php
hash.php
index.php
login.php
main.php
personal_results.php
setup.php
sign_up.php
test_correcting.php
tests.php
user_administration.php
verification.php
personal_results.php
126 lines UTF-8 Windows (CRLF)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
<?php
session_start(["gc_maxlifetime" => 86400]);
?>
<!DOCTYPE html>
<html lang="sv">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dina resultat</title>
<style>
.correct {
background-color: lightgreen;
}
.wrong {
background-color: lightcoral;
}
.question_cont {
border: 2px solid black;
margin: 1px;
}
p {
margin: 0;
}
</style>
</head>
<body>
<a href="main.php">Tillbaka</a>
<h1>Dina resultat. Klick på dem för att se mer.</h1>
<?php
try {
/** @var PDO $dbconn */
include("../databaser/dbconnection.php");
include("verification.php");
echo ('<h3>Inloggad som: <i>' . $_SESSION["username"] . '</i></h3>');
// Sorterar efter testen med testets namn som rubrik.
$sql = "SELECT * FROM quiz_tests";
$stmt = $dbconn->prepare($sql);
$stmt->execute();
while ($test = $stmt->fetch(PDO::FETCH_ASSOC)) {
// Körs för varje test som FINNS ATT TA
echo ('<h2>' . $test["name"] . '</h2>');
$sql = "SELECT * FROM quiz_results WHERE user_id = ? AND test_id = ?";
$results_stmt = $dbconn->prepare($sql);
$data = [$_SESSION["user_id"], $test["id"]];
$results_stmt->execute($data);
while ($result = $results_stmt->fetch(PDO::FETCH_ASSOC)) {
// Varje resultat den användaren har på det testet.
$total_questions = intval((strlen($result["answers"]) + 1) / 2); // Kollar hur många frågor man svarade på. Vill ha detta här då antal frågor kan ha ökats sedan man gjorde testet.
echo ('<a href="personal_results.php?result_id=' . $result["id"] . '">');
echo ($result["result"] . '/' . $total_questions . ' Poäng. Taget: ' . $result["time"]);
echo ('</a><br>');
}
}
if (isset($_GET["result_id"])) {
// Visar ett resultat i mer detalj
// Man kan se andras resultat om man bara skriver in ett annat resultat_id i sökfältet men får vara så
$sql = "SELECT * FROM quiz_results WHERE id = ?";
$stmt = $dbconn->prepare($sql);
$data = [$_GET["result_id"]];
$stmt->execute($data);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$test_id = $result["test_id"];
$questions_answered = intval((strlen($result["answers"]) + 1)/2); // Hur många frågor man besvarade. Stöd för att inte ha svarat på alla frågor om det lades till fler efteråt
$answers = explode(",", $result["answers"]); // Gör om till array
$sql = "SELECT name FROM quiz_tests WHERE id = ?";
$stmt = $dbconn->prepare($sql);
$data = [$test_id];
$stmt->execute($data);
$test_name = $stmt->fetch(PDO::FETCH_ASSOC)["name"];
echo ("<h1>$test_name</h1> Taget: " . $result["time"] . "<br><p>Rätt svar markerat i grönt. Om ditt svar ej var korrekt markeras ditt svar med rött och korrekt med grönt</p><br>");
$sql = "SELECT * FROM quiz_questions WHERE test_id=? ORDER BY id";
$stmt = $dbconn->prepare($sql);
$data = [$test_id]; // Samma som den var men tydligare att sätta om den.
$stmt->execute($data);
for ($question_num = 1; $question_num <= $questions_answered; $question_num++){
// Loopar igenom alla frågor och håller koll på vilken de är i ordningen. Börjar på 1.
$question = $stmt->fetch(PDO::FETCH_ASSOC);
$user_answer = $answers[$question_num - 1];
$sql = "SELECT * FROM quiz_answers WHERE question_id =?";
$answer_stmt = $dbconn->prepare($sql); // Nytt stmt för att inte sabba loopen
$data = [$question["id"]];
$answer_stmt->execute($data);
echo ('<div class="question_cont"><h2>' . $question["text"] . '</h2>'); // Frågan och en container.
while ($answer = $answer_stmt->fetch(PDO::FETCH_ASSOC)) {
$is_correct = ($answer["answer_num"] == $question["correct"]);
$is_user_answer = ($answer["answer_num"] == $user_answer);
if ($is_correct) {
echo ('<p class="correct">');
} else if ($is_user_answer) {
echo ('<p class="wrong">'); // Användarens svar om det inte är rätt
} else {
echo ("<p>"); // Varken användarsvar eller rätt
}
// Slutet av p-elementet och
echo ($answer["text"] . '</p>');
}
echo ("</div>");
}
}
} catch (PDOException $e) {
echo ($e->getMessage());
}
?>
<br><br><br>
</body>
</html>