W budowie
Materiał edukacyjny · Informatyka Wielokrokowa synteza wiedzy, typowe schematy arkuszy CKE i audyt błędów

CZĘŚĆ 21 · FINAŁ EGZAMINACYJNY

Symulacje arkuszy CKE — wielka powtórka i synteza

PPrezentacja dla nauczyciela

W poprzednich 20 częściach kursu poznałeś wszystkie pojedyncze elementy: zmienne, pętle, tablice, formularze, bazę MySQL, bezpieczne zapytania parametryzowane, sesje, ciasteczka, operacje na plikach oraz architekturę PRG. Na oficjalnym egzaminie praktycznym INF.03 / EE.09 nie spotkasz jednak zadań na jedną funkcję. Egzaminator ocenia kompletną współpracę wszystkich modułów.

Ta część to pełny symulator egzaminacyjny podzielony na 4 główne archetypy arkuszy CKE:

  • Archetyp I (Zadania 1–4): Sklep, Hurtownia, Magazyn — wyszukiwanie z filtrem, kafelki towarów z rabatami, kontrola stanów magazynowych przed zamówieniem oraz raporty sprzedaży z podsumowaniem w stopce tabeli.
  • Archetyp II (Zadania 5–8): Rezerwacje, Przychodnia, Warsztat — dynamiczne listy rozwijane <select> zasilane z bazy, sprawdzanie kolizji terminów w kalendarzu, rejestracja zdarzeń w plikach dziennika (log) oraz formularze z pamięcią wartości (Sticky Form).
  • Archetyp III (Zadania 9–12): Portale, Użytkownicy i Bezpieczeństwo — rejestracja z unikalnością loginu, hashowanie i weryfikacja haseł (password_hash, password_verify), autoryzacja sesyjna, relacyjne zapytania JOIN oraz obsługa uploadu zdjęć z bazą.
  • Archetyp IV (Zadania 13–16): Audyt, Debugging i Grand Finale CKE — lokalizowanie i naprawianie typowych pułapek egzaminacyjnych (SQL Injection, XSS, brak zamknięcia połączenia), wielokrokowa rezerwacja ze statusem i powiadomieniem Flash (PRG) oraz pełny panel zarządzania flotą (CRUD).

Zadania nie prowadzą Cię za rękę krok po kroku — pracujesz z realistycznymi danymi i formularzami dokładnie tak, jak przed arkuszem egzaminacyjnym CKE.

Strategia rozwiązywania symulacji

Symulacja arkusza ma ograniczony czas i kilka niezależnych wymagań. Najlepszy plan to podział na etapy: baza, formularz, logika, wyświetlanie, zabezpieczenia.

Po każdym etapie sprawdzaj efekt w przeglądarce. Lepiej mieć działającą część niż niedokończoną całość — punkty przyznaje się za spełnione wymagania.

Zostaw sobie kilka minut na przegląd: nazwy tabel i kolumn, komunikaty, kodowanie polskich znaków. To najczęstsze źródła utraconych punktów.

// Kolejnosc pracy z symulacja
// 1. utworz tabele i wstaw dane startowe
// 2. zrob formularz z wymaganymi polami
// 3. odbierz i sprawdz dane
// 4. zapisz rekord
// 5. pokaz tabele wynikow
// 6. sprawdz polskie znaki i komunikaty
echo 'Etapy zaplanowane';
1. Jak podzielić pracę?
2. Co sprawdzać po etapie?
3. Na co przeznaczyć końcówkę czasu?

PHP w zadaniu egzaminacyjnym

W czystym arkuszu PHP zwykle łączy się z bazą i obsługuje formularz. Kluczowe jest poprawne połączenie: host, użytkownik, hasło i nazwa bazy muszą pochodzić z treści zadania.

Dane zapisuj zapytaniem przygotowanym, a wynik pokazuj w tabeli z zabezpieczeniem wyjścia. Wymagane komunikaty muszą mieć dokładnie brzmienie z opisu.

Jeśli zadanie wymaga pliku lub sesji, wracasz do gotowego schematu: upload z walidacją, sesja z logowaniem. Te schematy warto przećwiczyć wcześniej.

$pdo = new PDO('mysql:host=localhost;dbname=egzamin;charset=utf8mb4', 'root', '');
$stmt = $pdo->prepare('INSERT INTO zgloszenia (imie, email, klasa) VALUES (?, ?, ?)');
$stmt->execute([$imie, $email, $klasa]);

$lista = $pdo->query('SELECT imie, klasa FROM zgloszenia ORDER BY imie')->fetchAll();
foreach ($lista as $w) {
    echo '<tr><td>' . htmlspecialchars($w['imie']) . '</td></tr>';
}
4. Skąd brać dane połączenia?
5. Jak zapisywać dane z formularza?
6. Jakie komunikaty stosować?

SQL w zadaniu egzaminacyjnym

Część SQL zwykle zaczyna się od struktury: tabela z kluczem głównym i kolumnami o wskazanych typach. Nazwy muszą być zgodne z treścią, nawet jeśli wydają się niezgrabne.

Potem wstawiasz dane, budujesz zapytanie z warunkiem i raport z agregacją. Przy raporcie pamiętaj o GROUP BY i czytelnych aliasach.

Na końcu sprawdź wyniki zapytaniem SELECT *. Jeśli dane są inne, niż oczekujesz, błąd jest zwykle w warunku albo w kolejności kolumn przy INSERT.

CREATE TABLE zgloszenia (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    imie VARCHAR(50) NOT NULL,
    klasa VARCHAR(10) NOT NULL,
    data DATE NOT NULL
);

INSERT INTO zgloszenia (imie, klasa, data) VALUES ('Ola', '3TI', '2026-03-04');

SELECT klasa, COUNT(*) AS ile
FROM zgloszenia
GROUP BY klasa
ORDER BY ile DESC;
7. Od czego zacząć część SQL?
8. Co jest potrzebne w raporcie?
9. Czym sprawdzić wynik?

Ćwiczenia