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
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?
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.
Wyświetlenie pytania System pokazuje pytanie z 3-4 opcjami odpowiedzi jako przyciski radio. Użytkownik wybiera jedna odpowiedz.
Sprawdzenie odpowiedzi Po wysłaniu formularza system porownuje wybrana odpowiedz z poprawna i wyświetla komunikat (dobrze/źle).
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:
Przykładowy scenariusz:
Ocena: 3.0Uż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%)”.
Wszystko z wariantu A, plus:
Przykładowy scenariusz:
Ocena: 4.0-5.0Pytania pojawiaja się w losowej kolejnosci. U góry widac “Pytanie 3 z 10” i pasek postepu. Po zakonczeniu wynik zapisuje się do historii. Użytkownik może zobaczyc poprzednie proby: “Wczoraj: 7/10, Dzisiaj: 9/10”.
Wszystko z wariantu B, plus:
Przykładowy scenariusz:
Ocena: 5.0-6.0Użytkownik wybiera kategorie “Informatyka” i poziom “Sredni”. Przy każdym pytaniu widzi odliczanie “Pozostało: 15s”. Po quizie widzi szczegóły: “Pytanie 3: Twoja odpowiedz: Python, Poprawna: PHP”. W rankingu jest na 3. miejscu.
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:
Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!