Webbserverprogrammering 1

Show sourcecode

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

webbserverprogrammering/submissions/projekt-quiz/

README.md
admin/
create_admin.php
create_quiz.php
css/
dashboard.php
debug_questions.php
includes/
index.php
leaderboard.php
login.php
logout.php
my_results.php
quiz.php
quiz_result.php
register.php
sqlcredentials

dashboard.php

92 lines UTF-8 Unix (LF)
<?php
session_start
();
require_once 
'includes/db_connect.php';
require_once 
'includes/session_config.php';

requireLogin();

// Determine user_id and name based on session type
if (isset($_SESSION['admin_logged_in']) && $_SESSION['admin_logged_in'] === true) {
    
$current_user_id $_SESSION['admin_id'];
    
$current_name $_SESSION['admin_name'];
} else {
    
$current_user_id $_SESSION['user_id'];
    
$current_name $_SESSION['name'];
}

// Hämta alla tillgängliga quiz
$stmt $pdo->query("
    SELECT q.id, q.title, q.description, 
           COUNT(DISTINCT qs.id) as question_count
    FROM quizzes q
    LEFT JOIN questions qs ON q.id = qs.quiz_id
    WHERE q.is_active = 1
    GROUP BY q.id
    ORDER BY q.title
"
);
$quizzes $stmt->fetchAll(PDO::FETCH_ASSOC);

// Hämta användarens senaste resultat för varje quiz
$stmt $pdo->prepare("
    SELECT quiz_id, score, total_questions, completed_at
    FROM quiz_attempts
    WHERE user_id = :user_id1
    AND id IN (
        SELECT MAX(id) 
        FROM quiz_attempts 
        WHERE user_id = :user_id2
        GROUP BY quiz_id
    )
"
);
$stmt->execute([':user_id1' => $current_user_id':user_id2' => $current_user_id]);
$latest_results = [];
while (
$row $stmt->fetch(PDO::FETCH_ASSOC)) {
    
$latest_results[$row['quiz_id']] = $row;
}

$page_title 'Dashboard';
require_once 
'includes/header.php';
?>

    <div class="container">
        <div class="dashboard">
            <h1>Välkommen, <?php echo htmlspecialchars($current_name); ?>!</h1>
            
            <?php if (isset($_SESSION['success'])): ?>
                <div class="success-message">
                    <?php 
                    
echo htmlspecialchars($_SESSION['success']); 
                    unset(
$_SESSION['success']);
                    
?>
                </div>
            <?php endif; ?>
            
            <h2>Tillgängliga Quiz</h2>
            
            <?php if (empty($quizzes)): ?>
                <p>Inga quiz tillgängliga ännu. <a href="create_quiz.php">Skapa ett!</a></p>
            <?php else: ?>
                <div class="quiz-list">
                    <?php foreach ($quizzes as $quiz): ?>
                        <div class="quiz-card">
                            <h3><?php echo htmlspecialchars($quiz['title']); ?></h3>
                            <p><?php echo htmlspecialchars($quiz['description']); ?></p>
                            <p class="quiz-info"><?php echo $quiz['question_count']; ?> frågor</p>
                            
                            <?php if (isset($latest_results[$quiz['id']])): ?>
                                <p class="last-result">
                                    Senaste: <?php echo $latest_results[$quiz['id']]['score']; ?>/<?php echo $latest_results[$quiz['id']]['total_questions']; ?> poäng
                                    (<?php echo date('Y-m-d'strtotime($latest_results[$quiz['id']]['completed_at'])); ?>)
                                </p>
                            <?php endif; ?>
                            
                            <a href="quiz.php?id=<?php echo $quiz['id']; ?>" class="btn btn-primary">Starta Quiz</a>
                        </div>
                    <?php endforeach; ?>
                </div>
            <?php endif; ?>
        </div>
    </div>

<?php require_once 'includes/footer.php'?>