CompZone.Org :: Artykuły :: PHP
Pytania w drugiej edycji Testu PHP powinny być:
Trudniejsze
Łatwiejsze
Skomplikowane
Na myślenie
Do liczenia
Sonda Wyniki

Add to Google

Zastosowanie ukrytych pól formularza w PHP

Pozwalają one jedynie na ukrycie pewnych informacji przed użytkownikiem. Stosowane jest to ponieważ nie zawsze nasz klient musi widzieć wszystko, a pewne dane mogą z lekką pomocą PHP zostać zastosowane do tzw. Ciągów zapytań.

Wstęp

Na początek krótkie wyjaśnienie czym są ukryte pola i do czego można je wykorzystać. Otóż aby utworzyć ukryte pole formularza atrybutowi type nadać wartość hidden:

 <input type="hidden" name="zmienna" value="wartosc">

Mogłoby się wydawać, że dzięki temu pozwalają one na zapisanie pewnych danych, ale nie jest to prawda. Wynika to choćby z tego, że jest to po prostu element HTML, a jak wiadomo, HTML nie ma możliwości zapisu czegokolwiek ani na serwerze ani na komputerze klienta.

Użycie

Poniżej zamieszczę prosty przykład pozwalający na ukazanie działania takich pól. Wykorzystam do tego celu skrypt obsługujący restaurację

Na początek plik menu1.php

 <html>
<head>
<title>Restauracja</title>
</head>
<body>
<?php

// tworzymy tablicową przechowującą nasze dania główne
$glowne = array("Stek (9zl)", "Pizza (7zl)", "Makaron (6zl)");

// wywołujemy formularz wewnątrz kodu PHP
echo "<form method='post' action='menu2.php'>";
echo "Co na obiad?";

// tworzymy liste rozwijana z daniami
echo "<select name=\"lista1\">";
echo "<option selected value=''>Wybierz...</option>";

// pobieramy dane z tablicy
echo "<option>$glowne[0]</option>";
echo "<option>$glowne[1]</option>";
echo "<option>$glowne[2]</option>";
echo "</select><br><br>";
echo "<input type='submit'>";
echo "</form>";
?>
</body>
</html>

Teraz tworzymy plik menu2.php

 <html>
<head>
<title>Restauracja</title>
</head>
<body>
<?php

// tworzymy zmienna tablicową zawierającą listę dostępnych deserów
$deser = array("jabłecznik (3zl)", "szarlotka (5zl)", "sernik (4zl)");

// wywołujemy za pomocą PHP formularz
<
form method="post" action='rachunek.php'>";
echo
"Co na deser?";

// wywołujemy listę rozwijaną z deserami
echo
"<select name=\"lista2\">";
echo "<option selected value=''>Wybierz...</option>";

// pobieramy dane z tablicy
echo "<option>$deser[0]</option>";
echo "<option>$deser[1]</option>";
echo "<option>$deser[2]</option>";
echo "</select><br><br>";

// tworzymy ukryte pole formularza które będzie zawierało danie główne
echo "<input type='hidden' name='danie1' value=$_POST['lista1']>";
echo "<input type='submit'>";
echo "</form>";
?>
</body>
</html>

Zostaje nam jeszcze stworzyć plik rachunek.php w którym wszystko zostanie podliczone

 <html>
<head>
<title>Restauracja</title>
</head>
<body>
<?php
// zmienna $total przechowuje początkową wartość rachunku czyli 0
$total = 0;

// wyświetlamy to co nasz klient zamówił
echo "Zamówiłeś następujące rzeczy<br><br>";
echo "Obiad: $_POST['danie1']<br>";
echo "Deser: $_POST['lista2']<br>";

// teraz do podliczenia wszystkiego wykorzystujemy funkcję <i>foreach</i>
foreach (array($danie1, $lista2) as $val) {
if (ereg("[0-9]+, $val, $regs)) $total += $regs[0];
}

echo
"razem = " . $total . " zl<br>";

?>
</body>
</html>

A teraz dwa słowa do ostatniej części naszego kodu bo może on wydawać się trochę nie jasny. Korzystamy tu z faktu, że na końcu opisu potraw dodawaliśmy ich ceny. Przeglądamy listę ( a właściwie tylko dwie pozycje), wycinając z niej ceny za pomocą wyrażenia regularnego przekazanego do funkcji ereg() i (jeżeli istnieje) dodając cenę do zmiennej $total. Na końcu otrzymujemy wartość rachunku.

Zakończenie

Jest dość prosty, a wręcz łopatologiczny przykład zastosowania ukrytych pól formularza. Jak można zauważyć pozwalają one na przenoszenie wartości z poprzedniego formularz bez potrzeby pokazywania jej użytkownikowi, a także tworzenia ciasteczek czy rozpoczynania całej sesji. Jest to dość proste i przydatne szczególnie jeżeli mamy do czynienia z tak małym zagadnieniem. Przy większych na pewno przydałaby się pętla która dodawałaby dania zamiast ich ręcznego dopisywania, a także wg uznania kilka dodatkowych funkcji.

Fixus @ 09-07-2006 23:21
Brak komentarzy...
Copyright © 2005-2006 Compzone.Org. Kopiowanie i wykorzystywanie materiałów zawartych na tej stronie bez zgody autora zabronione!