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 zapytaniaJOINoraz 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';
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>';
}
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;
Ćwiczenia
- 1Filtrowanie produktów i kafelki towarów z rabatemkafelki z rabatem i filtremZadanie i podpowiedzi →
- 2Sprawdzenie stanu magazynowego i zamówieniestan magazynu i zamówienieZadanie i podpowiedzi →
- 3Raport sprzedaży z agregacją i podsumowaniemraport sprzedaży z tfootZadanie i podpowiedzi →
- 4Eksport cennika usług do pliku CSVcennik z bazy do CSVZadanie i podpowiedzi →
- 5Dynamiczny select usług z bazy danychdynamiczny select usługZadanie i podpowiedzi →
- 6Rezerwacja terminu z weryfikacją kolizjikolizja terminu i rezerwacjaZadanie i podpowiedzi →
- 7Rezerwacja z zapisem do bazy i dziennika zdarzeń (log)baza plus dziennik zdarzeńZadanie i podpowiedzi →
- 8Filtrowanie cennika i formularz z pamięcią (Sticky Form)filtr ceny i Sticky FormZadanie i podpowiedzi →
- 9Rejestracja użytkownika z weryfikacją loginu i hashowaniem hasłarejestracja z hashem hasłaZadanie i podpowiedzi →
- 10Logowanie z weryfikacją skrótu hasła (password_verify)weryfikacja skrótu z bazy i sesjaZadanie i podpowiedzi →
- 11Profil klienta i złączenie tabel (JOIN)historia wypożyczeń z JOINZadanie i podpowiedzi →
- 12Dodanie ogłoszenia z plikiem graficznym i bazą danychogłoszenie z grafiką i baząZadanie i podpowiedzi →
- 13Audyt CKE: Naprawa podatności SQL Injection i XSSnaprawa SQL Injection i XSSZadanie i podpowiedzi →
- 14Audyt CKE: Poprawa logiki kalkulatora opłat i zamknięcia bazynaprawa kalkulatora i closeZadanie i podpowiedzi →
- 15Wielokrokowa synteza CKE: Rezerwacja, zmiana stanu i Flash (PRG)rezerwacja, stan i Flash PRGZadanie i podpowiedzi →
- 16Grand Finale INF.03: Kompletny panel zarządzania zasobami (CRUD)panel floty CRUD syntezaZadanie i podpowiedzi →