wtorek, 27 marca 2012

Dynamiczne generowanie formularzy na stronach www

Generowanie stron w locie oraz na żądanie to codzienność. Projektowanie stron internetowych bez dynamicznego generowania danych w dzisiejszych czasach by wyglądało tak jak kilkanaście lat temu. Każda strona musiała być w osobnym pliku html i zawierać z góry zdefiniowane treści i elementy stałe takie jak menu, stopki czy nagłówki a każda zmiana elementów stałych wiązała się z edycją kilkunastu plików. Wejście języka PHP i obsługa relacyjnych baz danych oraz możliwość dołączania plików w locie było rzeczą, która na zawsze zmieniła sieć i inernet. Powszechny stał się widok na stronie obszernych formularzy pobierających dane od użytkownika. Formularz mógł być z góry zdefiniowany przez programistę a następnie dołączany do określonej strony. W tej notce pokażę sztuczkę jak dynamicznie wygenerować formularz z inputami tekstowymi o określonej długości, nazwami pól ale umożliwiający jego późniejszą rozbudowę i minimalizację ilości kodu HTML lub PHP.
Standardowy kod formularza w HTML by wyglądał mniej więcej tak
<form name="testowy" action="POST lub GET" method="plikprzetwarzający">
<b>Imię</b><input type="text" name="Imie" value="" /><br />
<b>Nazwisko</b><input type="text" name="Nazwisko" value="" /><br />
<b>Pole3</b><input type="text" name="pole3" value="" /><br />
.
.
.
<b>Pole 100</b><input type="text" name="pole100" value="" /><br />
<b>Pole 101</b><input type="text" name="pole101" value="" /><br />
</form>
Formularz ten miałby 101 Pól input, i do każdego pola jest przypisana nazwa pola i opis pola i tak 103 linijki kodu(licząc z tagami form) i formularzyk taki byłby includowany w PHP. Jednak to nie niweluje problemu długości kodu. A można tak zrobić budowę stron www aby wykorzystać możliwości PHP i wygenerować sobie taki formularz dynamicznie niwelując rozmiar pliku. Poniżej kod do wygenerowania takiego formularza z inputami tekstowymi w PHP:

$opisy = array(”Imię”,”Nazwisko”,”Pole3”,....,”Pole100”,”Pole101”);
$inpname = array(”Imie”,”Nazwisko”,”pole3”,....,”pole100”,”pole101”);
echo ”<form name=\"testowy\" action=\"POST lub GET\" method=\"plikprzetwarzający\">”;
$licznik=count($opisy);
for($i=0;$i<$licznik;$i++)
{echo ”<b>”.$opisy[$i].”</b><input type=\"text\" name=\"”.$inpname[$i].”\" value=\"\" /><br />”;}
echo ”</form>”;

Długość pliku zawierająca tak dynamicznie wygenerowany formularz zawiera ledwie 7 linijek co w porównaniu z wersją HTML-ową 103 linijek robi różnicę. 7<103. Dodanie dodatkowego pola w formularzu to dopisanie dwóch dodatkowych zmiennych do tablicy, zmienne mamy w jednym miejscu. Oczywiście można przerobić sobie taki kod na funkcję lub klasę dzięki czemu będzeimy mogli go wykorzystać ponownie, dzięki czemu tworzenie strony internetowej i formularzy do niej zajmie tylko chwilę. Oczywiście możemy przeprogramować ten kod o obsługę dodatkowych typów pól, radio, hidden czy innych i stworzyć sobie własne szybkie funkcje i klasy do tworzenia formularzy.  

Brak komentarzy:

Prześlij komentarz