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';
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>';
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';
Ćwiczenia
- 1Dynamiczna lista rozwijana select z bazylista rozwijana select z bazyZadanie i podpowiedzi →
- 2Wyświetlenie szczegółów po wyborze z formularzaszczegóły wybranego rekorduZadanie i podpowiedzi →
- 3Tabela z obliczeniem wartości brutto w PHPobliczenie brutto w tabeliZadanie i podpowiedzi →
- 4Warunkowe formatowanie wierszy i status dostępnościwarunkowy status dostępnościZadanie i podpowiedzi →
- 5Kafelkowa prezentacja danych (karty z obrazkiem)karty z obrazkiem z bazyZadanie i podpowiedzi →
- 6Obsługa pustego wyniku zapytaniaobsługa braku wierszy num_rowsZadanie i podpowiedzi →
- 7Podsumowanie tabeli liczone w pętli PHPpodsumowanie tabeli w pętliZadanie i podpowiedzi →
- 8Sprawdzenie unikalności przed dodaniem rekorduweryfikacja unikalności przed INSERTZadanie i podpowiedzi →
- 9Aktualizacja stanu magazynowego po akcjiaktualizacja stanu po akcjiZadanie i podpowiedzi →
- 10Dynamiczne linki akcji usuwania z adresem GETusuwanie linkiem z parametrem GETZadanie i podpowiedzi →
- 11Formatowanie daty i waluty z bazy danychformatowanie daty i walutyZadanie i podpowiedzi →
- 12Zestawienie relacyjne JOIN w arkuszu egzaminacyjnymtabela relacyjna z JOINZadanie i podpowiedzi →
- 13Dwa niezależne skrypty w jednym dokumencie HTMLdwa skrypty w jednym dokumencieZadanie i podpowiedzi →
- 14Formularz edycji rekordu (pre-fill wartości i UPDATE)edycja rekordu z formularzaZadanie i podpowiedzi →
- 15Filtrowanie z sortowaniem z białej listyfiltr z sortowaniem z białej listyZadanie i podpowiedzi →
- 16Kompletny moduł egzaminacyjny INF.03 (synteza)moduł egzaminacyjny syntezaZadanie i podpowiedzi →