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>';
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>';
}
}
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>';
Ćwiczenia
- 1Zgoda na regulamincheckbox i issetZadanie i podpowiedzi →
- 2Opcja dodatkowa w cenie (checkbox)checkbox dolicza opłatęZadanie i podpowiedzi →
- 3Zapamiętanie stanu checkboxa (checked)zapamiętany stan checkboxaZadanie i podpowiedzi →
- 4Detekcja metody POSTdetekcja metody POSTZadanie i podpowiedzi →
- 5Wybór poziomu — pola radiogrupa pól radioZadanie i podpowiedzi →
- 6Zapamiętanie wyboru w grupie radiozapamiętany wybór radioZadanie i podpowiedzi →
- 7Kod rabatowy z POSTkod rabatowy z POSTZadanie i podpowiedzi →
- 8Formularz opiniiodczyt dwóch pól POSTZadanie i podpowiedzi →
- 9Zapamiętanie tekstu w wieloliniowym polu textareatekst zapamiętany w textareaZadanie i podpowiedzi →
- 10Ukryte pole formularza (hidden)ukryte pole hiddenZadanie i podpowiedzi →
- 11Przycisk z nazwą akcjidwa przyciski, jedna nazwaZadanie i podpowiedzi →
- 12Bezpieczna wartość w atrybuciecudzysłów w wartości atrybutuZadanie i podpowiedzi →
- 13Nazwa użytkownika zostaje w poluwartość pola po błędzieZadanie i podpowiedzi →
- 14Formularz kontaktowy z pamięcią pólformularz kontaktowy z pamięcią pólZadanie i podpowiedzi →
- 15Bezpieczne wyświetlenie opiniibezpieczne wyświetlenie opiniiZadanie i podpowiedzi →
- 16Kalkulator biletów (liczba, radio i checkbox)kalkulator biletów: radio i checkboxZadanie i podpowiedzi →