Webbserverprogrammering 1

Show sourcecode

The following files exists in this folder. Click to view.

ramverket/exercises/quiz/

css/
dashboard.php
inc/
index.php
js/
login.php
logout.php
profile.php
quizzes.php
register.php
results.php

quizzes.php

116 lines UTF-8 Windows (CRLF)
<?php
/* =========================
   Inkludera konfiguration,
   databas och login
   ========================= */
include("inc/config.php");
include(
"inc/connect_db.php");
include(
"inc/db_manager.php");

$mode "strict";
include(
"inc/login_check.php");

/* =========================
   Hämta quiz baserat på ID
   ========================= */
$quiz_id $_GET['id'] ?? null;
$quiz getQuiz($conn"id"$quiz_id);

if (!
$quiz) {
    
// Quiz hittades inte → skicka till startsidan
    
header("Location: index.php");
    exit();
}

/* =========================
   Sidtitel
   ========================= */
$page_title $quiz['title'] . " - Quizzeria";

/* =========================
   Hämta frågor till quizet
   ========================= */
$questions getQuestions($conn"quiz_id"$quiz_id);

/* =========================
   Hantera inskickat quiz
   ========================= */
if (isset($_POST['submit_quiz'])) {
    
$answers = [];
    
$score 0;

    foreach (
$_POST['questions'] as $question_id => $question_data) {
        
$choice_id $question_data['choice_id'];

        
$choice getChoice($conn"id"$choice_id);
        
$question getQuestion($conn"id"$question_id);

        if (
$choice['is_correct'] == 1) {
            
$score += $question['points'];
        }

        
$answers[] = [
            
"choice_id" => $choice_id,
            
"question_id" => $question_id
        
];
    }

    
// Lägg till användarens försök
    
$attempt_id addAttempt($conn$score$quiz_id$id);

    
// Spara varje svar
    
foreach ($answers as $answer) {
        
addAnswer($conn$answer['choice_id'], $attempt_id$answer['question_id']);
    }

    
// Uppdatera användarpoäng
    
addPoints($conn$id$score);

    
// Skicka till resultat-sidan
    
header("Location: results.php?id={$attempt_id}");
    exit();
}
?>

<!DOCTYPE html>
<html lang="sv">
<?php $js = ["quiz"]; ?>
<?php 
include("inc/head.php"); ?>
<body>

<?php include("inc/header.php"); ?>

<h2 class="quiz_title"><?php echo htmlspecialchars($quiz['title']); ?></h2>
<p class="quiz_desc"><?php echo htmlspecialchars($quiz['description']); ?></p>

<form id="quiz_form" method="POST">

    <?php foreach ($questions as $question):
        
$choices getChoices($conn"question_id"$question['id']); ?>
        
        <div id="question_<?php echo $question['id']; ?>" class="question">
            <h3><?php echo htmlspecialchars($question['text']); ?></h3>

            <?php foreach ($choices as $choice): ?>
                <label>
                    <input type="radio" name="questions[<?php echo $question['id']; ?>][choice_id]" 
                           value="<?php echo $choice['id']; ?>" required>
                    <?php echo htmlspecialchars($choice['text']); ?>
                </label>
            <?php endforeach; ?>
        </div>

    <?php endforeach; ?>

    <div id="quiz_btn_holder">
        <button type="button" id="prev_question">Tillbaka</button>
        <button type="button" id="next_question">Nästa fråga</button>
        <button type="submit" name="submit_quiz" id="submit_quiz">Skicka</button>
    </div>

</form>

<?php include("inc/footer.php"); ?>

</body>
</html>