W budowie
Materiał edukacyjny · Informatyka

CZĘŚĆ 18

Wzorce egzaminacyjne INF.03: PHP i mysqli

PPrezentacja dla nauczyciela

W częściach 11–17 poznałeś poszczególne klocki techniczne: zapytania SQL, formularze, zabezpieczenia XSS i SQL Injection. Egzamin praktyczny INF.03 nie sprawdza ich jednak w izolacji — wymaga połączenia ich w konkretne scenariusze: dynamiczne listy <select>, karty produktów z obrazkami, wyliczanie cen brutto w locie czy obsługę wielu bloków skryptu na jednej stronie.

Jak czytać arkusz INF.03

Arkusz zwykle składa się z części teoretycznej i praktycznej. W praktycznej dostajesz opis zadania, pliki startowe i listę wymagań, które trzeba spełnić w określonym czasie.

Najpierw przeczytaj całość i wypisz wymagania jako listę kontrolną: baza, formularz, wyświetlanie, walidacja, bezpieczeństwo. Dopiero potem pisz kod — łatwiej wtedy ocenić, co jest gotowe.

Punktowane są efekty widoczne w przeglądarce i w bazie, a nie styl kodu. Dlatego najpierw uruchamiamy działającą wersję, a porządki robimy na końcu, jeśli zostanie czas.

// Plan pracy z arkusza (przyklad)
// 1. utworz baze i tabele
// 2. zrob formularz HTML
// 3. odbierz dane w PHP
// 4. zapisz do bazy
// 5. wyswietl wyniki
// 6. zabezpiecz wyjscie
echo 'Plan gotowy';
1. Od czego zacząć arkusz?
2. Co jest punktowane?
3. Kiedy robić porządki w kodzie?

Typowe zadania PHP w arkuszu

Powtarzające się elementy to: formularz z kilkoma polami, odbiór danych metodą POST, walidacja, zapis do bazy i wypisanie wyników w tabeli. Często dochodzi upload pliku lub obsługa sesji.

Warto mieć w głowie gotowe schematy: połączenie z bazą, zapytanie przygotowane, pętla wypisująca wiersze i funkcja zabezpieczająca wyjście. To szkielet, który wystarcza w większości zadań.

Uważaj na szczegóły z treści: nazwy tabel, nazwy kolumn, wymagane komunikaty. Punkty sering traci się nie na logice, a na niezgodności z opisem.

$polaczenie = mysqli_connect('localhost', 'root', '', 'egzamin');
mysqli_set_charset($polaczenie, 'utf8mb4');

$stmt = mysqli_prepare($polaczenie, 'INSERT INTO zgloszenia (imie, email) VALUES (?, ?)');
mysqli_stmt_bind_param($stmt, 'ss', $imie, $email);
mysqli_stmt_execute($stmt);

echo '<p>Zgloszenie zapisane</p>';
4. Jaki schemat najczęściej się powtarza?
5. Na czym traci się punkty?
6. Co warto mieć gotowe?

Typowe zadania SQL w arkuszu

Zadania SQL zwykle dotyczą utworzenia tabeli, wstawienia danych, zapytania z warunkiem i raportu z agregacją. Często trzeba też połączyć dwie tabele po kluczu.

Warto zaczynać od zapytań sprawdzających: SELECT * FROM tabela pokazuje, czy dane zapisały się poprawnie. Dopiero potem budujemy raport z grupowaniem.

Uważaj na wielkość liter w nazwach i na apostrofy w wartościach tekstowych. Najczęstsze błędy to brak GROUP BY przy agregacji i brak warunku w UPDATE.

SELECT k.nazwa, COUNT(z.id) AS zgloszenia
FROM klasy k
LEFT JOIN zgloszenia z ON z.klasa_id = k.id
GROUP BY k.nazwa
ORDER BY zgloszenia DESC;

SELECT imie FROM zgloszenia WHERE email LIKE '%@wp.pl';
7. Od jakiego zapytania zacząć?
8. Czego brakuje w błędnej agregacji?
9. Co jest częstym błędem w UPDATE?

Ćwiczenia