34921-vm/quiz.php
Flatlogic Bot fd7bfb0869 2.2
2025-10-14 15:07:23 +00:00

108 lines
4.9 KiB
PHP

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: login.php');
exit;
}
require_once 'db/config.php';
$db = db();
$skill_id = $_GET['skill_id'] ?? 0;
$user_id = $_SESSION['user_id'];
// Fetch skill details
$stmt = $db->prepare("SELECT title FROM skills WHERE id = ?");
$stmt->execute([$skill_id]);
$skill_title = $stmt->fetchColumn();
if (!$skill_title) {
die('Skill not found!');
}
// Fetch quiz questions
$questions_stmt = $db->prepare("SELECT * FROM quizzes WHERE skill_id = ?");
$questions_stmt->execute([$skill_id]);
$questions = $questions_stmt->fetchAll(PDO::FETCH_ASSOC);
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$score = 0;
$total_questions = count($questions);
foreach ($questions as $question) {
$question_id = $question['id'];
$user_answer = $_POST['question_' . $question_id] ?? '';
if ($user_answer === $question['correct_option']) {
$score++;
}
}
$percentage_score = ($total_questions > 0) ? round(($score / $total_questions) * 100) : 0;
// Save quiz attempt
$insert_stmt = $db->prepare("INSERT INTO quiz_attempts (user_id, skill_id, score) VALUES (?, ?, ?)");
$insert_stmt->execute([$user_id, $skill_id, $percentage_score]);
header("Location: learn.php?skill_id=$skill_id");
exit;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Quiz: <?php echo htmlspecialchars($skill_title); ?></title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="assets/css/custom.css?v=<?php echo time(); ?>">
</head>
<body>
<div class="container mt-5">
<a href="learn.php?skill_id=<?php echo $skill_id; ?>" class="btn btn-secondary mb-4">Back to Learning</a>
<h1>Quiz: <?php echo htmlspecialchars($skill_title); ?></h1>
<?php if (empty($questions)): ?>
<div class="alert alert-warning">No quiz questions available for this skill yet.</div>
<?php else: ?>
<form method="POST">
<?php foreach ($questions as $index => $question): ?>
<div class="card my-4">
<div class="card-header">
<h5 class="mb-0">Question <?php echo $index + 1; ?></h5>
</div>
<div class="card-body">
<p class="card-text"><?php echo htmlspecialchars($question['question']); ?></p>
<div class="form-check">
<input class="form-check-input" type="radio" name="question_<?php echo $question['id']; ?>" id="q<?php echo $question['id']; ?>_a" value="a" required>
<label class="form-check-label" for="q<?php echo $question['id']; ?>_a">
<?php echo htmlspecialchars($question['option_a']); ?>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="question_<?php echo $question['id']; ?>" id="q<?php echo $question['id']; ?>_b" value="b">
<label class="form-check-label" for="q<?php echo $question['id']; ?>_b">
<?php echo htmlspecialchars($question['option_b']); ?>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="question_<?php echo $question['id']; ?>" id="q<?php echo $question['id']; ?>_c" value="c">
<label class="form-check-label" for="q<?php echo $question['id']; ?>_c">
<?php echo htmlspecialchars($question['option_c']); ?>
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="question_<?php echo $question['id']; ?>" id="q<?php echo $question['id']; ?>_d" value="d">
<label class="form-check-label" for="q<?php echo $question['id']; ?>_d">
<?php echo htmlspecialchars($question['option_d']); ?>
</label>
</div>
</div>
</div>
<?php endforeach; ?>
<button type="submit" class="btn btn-primary btn-lg">Submit Quiz</button>
</form>
<?php endif; ?>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>