Skip to content

Quiz jednokrotnego wyboru

This content is not available in your language yet.

Stworzysz Quiz jednokrotnego wyboru - interaktywna aplikacje quizowa, w której użytkownik odpowiada na pytania wybierajac jedna poprawna odpowiedz. Pytania sa przechowywane w pliku JSON, a system sprawdza poprawnosc odpowiedzi i wyświetla wynik końcowy. To swietny sposób na naukę obsługi sesji i logiki warunkowej.

Czego się nauczysz?

  • Ladowania danych z pliku JSON (pytania i odpowiedzi)
  • Obsługi formularzy z przyciskami radio
  • Pracy z sesjami PHP do sledzenia postepu
  • Walidacji i porownywania odpowiedzi

W prawdziwej pracy...

Quizy i testy online to popularne narzedzia w e-learningu, rekrutacji, badaniach rynkowych i grywalizacji. Znajomosc tworzenia interaktywnych formularzy, sledzenia postepu użytkownika i obliczania wynikow to umiejetnosci przydatne w wielu projektach - od platform edukacyjnych po ankiety badawcze.

  1. Wyświetlenie pytania System pokazuje pytanie z 3-4 opcjami odpowiedzi jako przyciski radio. Użytkownik wybiera jedna odpowiedz.

  2. Sprawdzenie odpowiedzi Po wysłaniu formularza system porownuje wybrana odpowiedz z poprawna i wyświetla komunikat (dobrze/źle).

  3. Wynik końcowy Po odpowiedzeniu na wszystkie pytania użytkownik widzi podsumowanie: liczba poprawnych odpowiedzi i wynik procentowy.

Przykładowa struktura pliku JSON z pytaniami:

{
"questions": [
{
"id": 1,
"question": "Stolica Polski to:",
"options": ["Krakow", "Warszawa", "Gdansk", "Wroclaw"],
"correct": 1,
"category": "geografia"
},
{
"id": 2,
"question": "Ile wynosi 2 + 2?",
"options": ["3", "4", "5", "22"],
"correct": 1,
"category": "matematyka"
},
{
"id": 3,
"question": "Który język programowania stworzył Rasmus Lerdorf?",
"options": ["Python", "JavaScript", "PHP", "Java"],
"correct": 2,
"category": "informatyka"
}
]
}

Struktura zapisu wynikow:

{
"results": [
{
"id": 1,
"score": 8,
"total": 10,
"percentage": 80,
"completed_at": "2026-02-13 10:30:00"
}
]
}

Wymagane funkcje:

  • Plik JSON z minimum 5 pytaniami
  • Wyświetlenie jednego pytania z opcjami (radio buttons)
  • Sprawdzenie odpowiedzi i komunikat (poprawna/błędna)
  • Przejscie do nastepnego pytania
  • Wynik końcowy (X/Y poprawnych)
  • Prosty interfejs CSS

Przykładowy scenariusz:

Użytkownik widzi pytanie “Stolica Polski to:” z 4 opcjami. Wybiera “Warszawa” i klika “Sprawdz”. Widzi zielony komunikat “Dobrze!”. Klika “Nastepne pytanie”. Po 5 pytaniach widzi “Twoj wynik: 4/5 (80%)”.

Ocena: 3.0

Ladowanie pytan:

$questions = json_decode(file_get_contents('questions.json'), true)['questions'];

Inicjalizacja sesji:

session_start();
if (!isset($_SESSION['quiz'])) {
$_SESSION['quiz'] = [
'current' => 0,
'score' => 0,
'answers' => []
];
}

Sprawdzanie odpowiedzi:

$questionId = (int)$_POST['question_id'];
$userAnswer = (int)$_POST['answer'];
$question = $questions[$questionId];
$isCorrect = $userAnswer === $question['correct'];
if ($isCorrect) {
$_SESSION['quiz']['score']++;
$message = "Dobrze! To poprawna odpowiedz.";
} else {
$correctAnswer = $question['options'][$question['correct']];
$message = "Źle! Poprawna odpowiedz to: " . $correctAnswer;
}
$_SESSION['quiz']['current']++;

Losowanie pytan:

if (!isset($_SESSION['quiz']['shuffled'])) {
shuffle($questions);
$_SESSION['quiz']['shuffled'] = $questions;
}
$questions = $_SESSION['quiz']['shuffled'];

Wyswietlanie paska postepu:

$current = $_SESSION['quiz']['current'] + 1;
$total = count($questions);
$percent = ($current / $total) * 100;
echo "<div class='progress'>";
echo "<div class='progress-bar' style='width: {$percent}%'></div>";
echo "</div>";
echo "<p>Pytanie {$current} z {$total}</p>";

Wykorzystaj lekcje!

Cotygodniowe spotkania podczas lekcji to idealny moment, by:

  • Pokazac postepy - nawet małe kroki się licza
  • Wyjaśnić watpliwosci - pytaj, nie zgaduj
  • Skonsultowac rozwiązania - feedback pomoze Ci się rozwijac

Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!