Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: PHP

Formularz wysyłany metodą POST zawiera dwa pola wyboru:

<input type="checkbox" name="jezyki[]" value="PHP">
<input type="checkbox" name="jezyki[]" value="SQL">
Użytkownik zaznaczył oba pola i wysłał formularz. W skrypcie PHP element $_POST['jezyki'] zawiera
A. liczbę 2, czyli liczbę zaznaczonych pól.
Źle. Formularz nie wysyła liczby zaznaczeń; można ją policzyć funkcją count.
B. wartość logiczną true.
Źle. Przeglądarka wysyła treść atrybutu value, a nie wartość logiczną.
C. tablicę z wartościami PHP i SQL.
Dobrze. Nawiasy [] w nazwie pola sprawiają, że PHP zbiera zaznaczone wartości w tablicę.
D. napis „PHP, SQL”.
Źle. PHP nie skleja wartości w napis; zrobiłaby to dopiero funkcja implode.
Element $_POST['jezyki'] zawiera tablicę z wartościami PHP i SQL. Nawiasy kwadratowe na końcu nazwy pola, czyli jezyki[], informują PHP, że z formularza może przyjść kilka wartości pod tą samą nazwą i trzeba je zebrać w tablicę. Każde zaznaczone pole dodaje do niej swoją wartość z atrybutu value, a niezaznaczone nie wysyła nic. Do zapamiętania: wiele wartości pod jedną nazwą wymaga nawiasów [] w atrybucie name. W skrypcie wartości odczytuje się pętlą, na przykład foreach ($_POST['jezyki'] as $j), a liczbę zaznaczeń daje count. To samo dotyczy listy <select multiple>. Jeśli żadne pole nie jest zaznaczone, klucz jezyki w ogóle nie pojawi się w tablicy.
Najczęściej myli się tu sposób przesyłania danych z ich wyświetleniem. PHP nie łączy zaznaczonych wartości w jeden napis - taki tekst trzeba by dopiero utworzyć funkcją implode(', ', $_POST['jezyki']). Liczba zaznaczonych pól nie jest wysyłana przez formularz; można ją policzyć w skrypcie przez count($_POST['jezyki']). Wartość logiczna true też się nie pojawia: przeglądarka wysyła treść atrybutu value, a gdyby go zabrakło, wysłałaby napis „on”. Dzięki nawiasom [] w nazwie pola PHP składa przesłane wartości w tablicę, więc $_POST['jezyki'] zawiera tablicę z elementami PHP i SQL. Bez nawiasów zostałaby tylko ostatnia wartość, SQL. Przed odczytem warto więc sprawdzić isset($_POST['jezyki']), bo przy braku zaznaczeń klucza nie będzie. Podgląd całej przesłanej tablicy daje print_r($_POST); albo var_dump($_POST);, co bardzo pomaga przy sprawdzaniu formularzy.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.