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)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
<?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'; ?>