Poradnik

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.

  1. 01

    Pole formularza bez atrybutu name

    Bez name pole w ogóle nie trafia do $_POST ani $_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>
  2. 02

    SELECT * zamiast wymienionych kolumn

    SELECT * zwraca wszystkie kolumny, ale zadanie zwykle prosi o konkretne (np. tylko nazwa i cena). 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;
  3. 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>";
  4. 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");
  5. 05

    Etykieta niepowiązana z polem

    <label> bez for wskazującego na id pola 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">
  6. 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 method w znaczniku <form>, nie tylko to, czy dane w ogóle docierają.

    <form action="wyniki.php" method="post">
  7. 07

    Zły typ złączenia tabel (JOIN zamiast LEFT JOIN)

    Zwykły JOIN (czyli INNER 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 jest LEFT 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;
  8. 08

    Layout zbudowany na sztywnych szerokościach w pikselach

    Sztywne width: 960px zamiast elastycznego Flexbox albo Grid psuje 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;
    }
Ćwicz na prawdziwych arkuszach

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.

Używamy niezbędnych plików cookie oraz Google Analytics do statystyk odwiedzin. Nie ma tu śledzenia reklamowego. Polityka prywatności