W budowie
Materiał edukacyjny · Informatyka

CZĘŚĆ 07

Formularz: pola wyboru i prezentacja danych

PPrezentacja dla nauczyciela

Pola wyboru pojedynczego (checkbox), grupy opcji (radio), wieloliniowe textarea oraz ukryte pola hidden. Jak bezbłędnie odczytywać i zapamiętywać ich stan po wysłaniu formularza.

Pola wyboru: checkbox i radio

radio pozwala wybrać jedną opcję z grupy — dlatego wszystkie przyciski w grupie muszą mieć tę samą nazwę. checkbox pozwala zaznaczyć wiele wartości, więc każdy element ma własną nazwę albo nazwę z nawiasami kwadratowymi.

Nazwa z nawiasami, np. name="hobby[]", tworzy w PHP tablicę. Bez nawiasów przeglądarka prześle tylko ostatnią zaznaczoną wartość.

Pole value jest tym, co naprawdę trafia do serwera. Etykieta obok to tylko opis dla użytkownika — bez value wyśle się napis on.

$hobby = $_GET['hobby'] ?? [];
$poziom = $_GET['poziom'] ?? '';

foreach ($hobby as $h) {
    echo '<p>Hobby: ' . htmlspecialchars($h) . '</p>';
}
echo '<p>Poziom: ' . htmlspecialchars($poziom) . '</p>';
1. Co łączy przyciski radio?
2. Co daje nazwa hobby[]?
3. Co trafia do serwera?

Listy rozwijane i wybór wielokrotny

Listę rozwijaną tworzy select z opcjami option. Wartość wybranej opcji pochodzi z atrybutu value, a nie z widocznego tekstu.

Dodanie multiple pozwala zaznaczyć kilka pozycji — wtedy pole trzeba nazwać name="jezyki[]", żeby PHP otrzymał tablicę. Bez nawiasów zostanie tylko jedna wartość.

Po stronie PHP warto sprawdzić, czy wybrana wartość należy do listy dozwolonych. Dane z formularza można podmienić, więc lista opcji w HTML nie jest żadnym zabezpieczeniem.

$jezyki = $_GET['jezyki'] ?? [];
$dozwolone = ['php', 'js', 'sql'];

foreach ($jezyki as $j) {
    if (in_array($j, $dozwolone, true)) {
        echo '<p>Wybrano: ' . $j . '</p>';
    }
}
4. Skąd pochodzi wartość opcji?
5. Do czego służy multiple?
6. Po co lista dozwolonych wartości?

Prezentacja danych w tabeli

Dane z formularza najczytelniej pokazać w tabeli: nagłówek z nazwami kolumn, a każdy wiersz w pętli foreach. Tabelę budujemy razem z HTML, zamykając i otwierając PHP w środku.

Każdą wartość przepuszczamy przez htmlspecialchars(). Pamiętaj też o pustej tablicy — jeśli nic nie wybrano, warto pokazać komunikat zamiast pustej tabeli.

Alternatywą dla tabeli jest lista definicji dl przy dwóch–trzech polach. Tabela ma sens, gdy kolumn jest więcej i mają stałe znaczenie.

$dane = [
    'Imie' => $_GET['imie'] ?? '',
    'Klasa' => $_GET['klasa'] ?? '',
];

echo '<table><tr><th>Pole</th><th>Wartosc</th></tr>';
foreach ($dane as $pole => $wartosc) {
    echo '<tr><td>' . $pole . '</td><td>'
        . htmlspecialchars((string) $wartosc) . '</td></tr>';
}
echo '</table>';
7. Czym budujemy wiersze tabeli?
8. Co zrobić z pustymi danymi?
9. Kiedy tabela, a kiedy lista?

Ćwiczenia