Z typowej akci pod tytułem "formularze". Załóżmy, że masz formularz rejestracyjny np. na jakies forum. W tym formularzu metodą POST protokołu HTTP przesyłasz kilka danych, ale załóżmy że my przesyłamy: login usera, email, imię, nazwisko (imię i nazwisko jako dwa osobne pola), hasło, potwierdzenie hasła (dla uproszczenia załóżmy, że wszystkie w/w dane trzeba podać) Masz też jakiś skrypt, który obrabia Ci te dane i (jeśli dane są prawidłowe), to wrzucasz je do bazy i rejestrujesz usera.
W ablicy POST dane sa reprezentowane w postaci indeks->wartość, przy czym indeks nie musi być liczbą (może przyjmować wartość tekstową, i w rzeczywistości najczęściej tak jest).
Mamy więc tablicę, w której pod indeksem 'login' spodziewasz się mieć proponowaną nazwę nowo założonego konta, 'email' - kontakt do osobnika, w polach z indeksami 'imie' i 'nazwisko' - personalia, i w dwóch polach, nazwijmy je 'pass' i 'pass2' proponowane hasło nowego usera.
Najprostszym sposobem na SPRAWDZENIE, CZY WSZYSTKIE POLA ZOSTAŁY WYPEŁNIONE, jest przetestowanie, czy istnieje indeks "x" w tablicy _POST (dla danego pola). Mamy więc kod:
$error = 0; // na razie brak błędów
$pola = array ('login', 'email', 'imie', 'nazwisko', 'pass', 'pass2'); foreach ($pola as $key) { // bierzemy poszczególne indeksy zdefinowanej wcześniej tablicy $pola
if (! isset ($_POST[$key])) { // jeśli NIE istnieje w tablicy taki indeks, jaki aktualnie przetwarzamy $error++; // to zwiększamy wartość zmiennej $error o 1
}
}
Oczywiście dalej mamy całą logikę, która sprawdza czy user istnieje w bazie, czy hasła są identyczne... Niemniej, w zmiennej $error będziemy mieli ilość pól, które nie zostały wypełnione. Wiemy wówczas, że dalsze przetwarzanie formularza nie ma sensu, bo nie mamy wypełnionych wszystkich pól - a są one wymagane. W związku z czym trzeba wyświetlić userowi komunikat i ewentualnie ponownie wyświetlić formatkę.
Dalsza logika to oczywiście operacja na wprowadzonych wartościach, i tak, załóżmy, że dla celów poglądowych chciałbyś je (czyli wszystkie wprowadzone dane) po prostu wyświetlić. Tym razem:
foreach ($_POST as $key => $value) {
echo "klucz <b>" . $key . "</b> ma wartość: " . $value . "<br>"; }
Robimy to samo co wyżej, ale konstrukcja "as $key => $value" powoduje przypisanie nam odpowiedniego klucza i jego wartości odpowiednio do zmiennych $key i $val. Jest to oczywiście identyczne funkcjonalnie z kodem:
foreach ($_POST as $key) {
echo "klucz <b>" . $key . "</b> ma wartość: " . $_POST[$key] . "<br>"; }
i oczywiście w takiej postaci też możesz się do tablicy $_POST odwoływać.