Osiem błędów, przez które kod „działa”, a punktu nie ma.
Wszystkie działają na pierwszy rzut oka: strona się wyświetla, zapytanie zwraca wynik. Klucz oceniania sprawdza jednak dokładnie to, o co poprosiło zadanie, nie to, czy coś w ogóle działa.
- 01
Pole formularza bez atrybutu name
Bez
namepole w ogóle nie trafia do$_POSTani$_GET, więc PHP go nie widzi, nawet jeśli formularz wygląda poprawnie na ekranie. Klucz oceniania sprawdza obecność tego atrybutu osobno dla każdego pola.<input type="text" id="email" name="email" required> - 02
SELECT * zamiast wymienionych kolumn
SELECT *zwraca wszystkie kolumny, ale zadanie zwykle prosi o konkretne (np. tylkonazwaicena). Punkt jest za zgodność z treścią zadania, nie za to, że zapytanie się wykona.SELECT nazwa, cena FROM produkty WHERE cena > 100 ORDER BY cena DESC; - 03
Wypisywanie danych użytkownika bez htmlspecialchars
Gdy wyświetlasz to, co ktoś wpisał w formularzu, owiń to w
htmlspecialchars(). Bez tego znaki<i>w danych psują układ strony, a w kluczu oceniania to osobny punkt za bezpieczne wyświetlanie danych.echo "<p>" . htmlspecialchars($_POST["imie"]) . "</p>"; - 04
Brak ustawienia kodowania znaków
Polskie znaki (ą, ć, ę, ł...) zamieniają się w krzaki, gdy strona, baza i połączenie PHP-baza mają różne kodowania. Trzy miejsca do sprawdzenia:
<meta charset="UTF-8">w HTML, kodowanie bazy w phpMyAdmin (utf8mb4) i wywołanie po połączeniu z bazą.mysqli_set_charset($conn, "utf8mb4"); - 05
Etykieta niepowiązana z polem
<label>bezforwskazującego naidpola to ładny tekst, ale formalnie nieprzypisana etykieta. Klucz sprawdza to powiązanie, nie samą obecność napisu przy polu.<label for="email">Adres e-mail</label> <input type="email" id="email" name="email"> - 06
Formularz wysyłany metodą GET zamiast POST
Zadanie zwykle wprost mówi, jaką metodą ma iść formularz. GET dopisuje dane do adresu URL, co przy haśle albo dłuższym tekście jest złym rozwiązaniem i niezgodnym z treścią. Sprawdź atrybut
methodw znaczniku<form>, nie tylko to, czy dane w ogóle docierają.<form action="wyniki.php" method="post"> - 07
Zły typ złączenia tabel (JOIN zamiast LEFT JOIN)
Zwykły
JOIN(czyliINNER JOIN) pomija wiersze bez dopasowania po drugiej stronie. Jeśli zadanie chce pokazać np. wszystkich klientów, także tych bez żadnego zamówienia, potrzebny jestLEFT JOIN. Wynik z INNER JOIN wygląda poprawnie, dopóki nie sprawdzisz, czy brakuje wierszy.SELECT k.imie, z.id AS zamowienie FROM klienci k LEFT JOIN zamowienia z ON z.klient_id = k.id; - 08
Layout zbudowany na sztywnych szerokościach w pikselach
Sztywne
width: 960pxzamiast elastycznegoFlexboxalboGridpsuje się przy innej rozdzielczości monitora na sali egzaminacyjnej. Klucz punktuje responsywność, nie tylko wygląd na Twoim ekranie..karty { display: flex; flex-wrap: wrap; gap: 16px; } .karta { flex: 1 1 260px; }
Sprawdź, które z tych błędów popełniasz Ty.
Rozwiąż arkusz z listy sesji CKE, a potem porównaj swój kod z rozwiązaniem linia po linii, nie tylko wynik na ekranie.