|
Formularze - Kurs języka HTML
Formularze na stronach WWW można obecnie spotkać prawie wszędzie - jedynie proste strony się bez nich obywają. Dzięki nim osoby odwiedzające stronę mogą wykonać wiele czynności, jak np. wysłać wiadomość do właściciela witryny, zarejestrować się, zalogować się do prywatnej części serwisu czy zakupić coś w sklepie internetowym. Dlatego warto dowiedzieć się jak tworzyć formularze w HTML. Szkielet formularza i sposoby jego wysyłaniaPodstawowe ramy formularza wyznacza znacznik <form>. Znacznik ten posiada kilka atrybutów których można użyć. Jednym z nich jest atrybut Drugim atrybutem który warto zawsze ustawiać, jest <form action="ktos@gdzies.com.pl" method="post"> Tutaj będzie zawartość formularza </form> Warto wspomnieć o tym iż warunkiem zgodności kodu HTML strony ze standardem (X)HTML Strict jest aby zawartość formularza umieścić wewnątrz znacznika będącego pojemnikiem, takim jak np. <form action="ktos@gdzies.com.pl" method="post"><div> Tutaj będzie zawartość formularza </div></form> Zawartość formularza jest przed wysyłaniem odpowiednio przetwarzana. Domyślnie dane z formularza kodowane są wg standardu URL Encode, przez co zawartość emaila jest raczej mało czytelna: imie=Daniel&nazwisko=Fru%BFy%F1ski&strona=http%3A%2F%2Fwww.poradnik-webmastera.com Powyższy ciąg znaków jest to wynik wysłania formularza który zawierał pola Sposób kodowania danych z formularza można określić za pomocą dodatkowego atrybutu <form action="ktos@gdzies.com.pl" method="post" enctype="text/plain"> <div> Tutaj będzie zawartość formularza </div> </form> Zawartość tak przygotowanego i wysłanego formularza powinna wyglądać następująco: imie=Daniel nazwisko=Frużyński strona=http://www.poradnik-webmastera.com Niestety u mnie zamiast polskich znaków pojawiły się krzaczki, których nie udało mi się pozbyć. Testowałem też różne kombinacje czterech przeglądarek WWW (Firefox, Opera, Netscape Browser i IE) i dwóch klientów poczty (The Bat! i Outlook Express), i wszędzie dostawałem podobne rezultaty. Zatem albo u mnie coś jest nie tak, albo to już tak działa :) Kontrolki formularzaOczywiście każdy formularz poza "szkieletem" powinien coś w sobie zawierać. Poza tekstem który jest zazwyczaj używany do opisania pól formularza, można umieścić kontrolki do wprowadzania tekstu, przyciski opcji (radiowe), przyciski wyboru (checkbox), listy, listy rozwijalne i przyciski (zwykłe i graficzne). Pole tekstowe - textPierwszym elementem formularza który omówię jest pole tekstowe. Do jego wstawienia należy użyć znacznika <input type="text" name="imie"> Znacznik Jeżeli chcesz, możesz do tak wyświetlonego pola tekstowego wpisać jakiś swój tekst który pojawi się po wyświetleniu strony (jest to wygodne gdy np. wyświetlasz formularz po raz kolejny, i nie chcesz aby ktoś wypełniał wszystkie pola od nowa). Do tego celu służy atrybut <input type="text" name="imie" value="Daniel"> Możesz także ograniczyć ilość znaków które można wprowadzić do pola za pomocą atrybutu <input type="text" name="kod_pocztowy" maxlength="6"> Wielowierszowe pole tekstowe - textareaPole tekstowe stworzone za pomocą znacznika <textarea name="tresc" rows="5" cols="50">Fragment tekstu</textarea> Znacznik ten jest nieco inny od znacznika Pole do wpisywania hasła - passwordW przypadku gdy jednym z pól formularza jest pole do podania hasła (np. w formularzu logowania), wtedy ze względów bezpieczeństwa zalecane jest użycie znacznika <input type="password" name="haslo" value="TajneHaslo"> Jeżeli chcesz, możesz coś wpisać jako wartość domyślną do tego pola. Pamiętaj jednak że będzie to przesyłane w postaci nie zakodowanej, i każdy kto zerknie do kodu strony może to hasło zobaczyć. Z tego powodu odradzam wpisywanie wartości domyślnej do tego pola. Pole jednokrotnego wyboru - radioKolejnym elementem który można wstawić wewnątrz formularza jest pole jednokrotnego wyboru (radio, rabiobutton). Wstawia się go za pomocą znacznika <input type="radio" name="odpowiedz" value="tak">Tak<br> <input type="radio" name="odpowiedz" value="nie">Nie<br> <input type="radio" name="odpowiedz" value="niewiem">Nie wiem Tak Nie Nie wiem Znacznik ten posiada znane już atrybuty Czasami możesz chcieć aby jeden z przycisków był domyślnie zaznaczony - do tego służy atrybut <input type="radio" name="odpowiedz" value="tak" checked>Tak<br> <input type="radio" name="odpowiedz" value="nie">Nie<br> <input type="radio" name="odpowiedz" value="niewiem">Nie wiem Tak Nie Nie wiem Pole wielokrotnego wyboru - checkboxNastępnym znacznikiem który można użyć do budowy formularza jest <input type="checkbox" name="zainteresowania" value="sport" checked>Sport<br> <input type="checkbox" name="zainteresowania" value="ksiazki">Książki<br> <input type="checkbox" name="zainteresowania" value="komputery" checked>Komputery Sport Książki Komputery W przypadku tego znacznika przeglądarka wysyła parę Pole listy i listy rozwijalnej - selectDo formularza można także wstawić pola listy (listbox) i pola listy rozwijalnej (combobox). Obydwa można utworzyć za pomocą znacznika <select>. Znacznik ten posiada atrybut Wszystkie elementy listy umieszcza się wewnątrz znacznika <select>, ograniczając je dodatkowo znacznikami <option>. Przykład listy rozwijalnej (combo): <select name="jezyk" size="1"> <option>Polski</option> <option>Angielski</option> <option>Niemiecki</option> <option>Francuski</option> </select> Przykład pola listy (listbox): <select name="jezyk" size="3"> <option>Polski</option> <option>Angielski</option> <option>Niemiecki</option> <option>Francuski</option> </select> Na liście rozwijalnej (combo) domyślnie wybrany jest pierwszy element. Jeżeli chcesz aby domyślnie nic nie było wybrane, dodaj tam na początku pusty element. Wartością która zostanie wysłana do serwera po wybraniu któregoś z elementów jest zawartość znacznika <select name="jezyk" size="3"> <option value="pl">Polski</option> <option value="en">Angielski</option> <option value="de">Niemiecki</option> <option value="fr">Francuski</option> </select> W polu listy (listbox) można domyślnie zaznaczyć tylko jeden element. Możesz to zmienić poprzez dodanie do znacznika <select name="jezyk" size="3" multiple> <option>Polski</option> <option>Angielski</option> <option>Niemiecki</option> <option>Francuski</option> </select> Dla każdej z list (listbox i combobox) można określić który element ma być domyślnie wybrany. Służy do tego atrybut <select name="jezyk" size="3" multiple> <option selected>Polski</option> <option selected>Angielski</option> <option>Niemiecki</option> <option>Francuski</option> </select> Pole ukryte - hiddenIstnieje też specjalny typ pola formularza - pole ukryte. Możesz go zastosować w przypadku gdy chcesz przechować w formularzu pewną wartość której będziesz później potrzebować, ale nie chcesz aby ona była wyświetlana. Służy do tego znacznik Przycisk wysłania formularza - submit<input type="hidden" name="id" value="123"> Po wypełnieniu formularza, użytkownik będzie chciał go wysłać. Aby mu to umożliwić, należy użyć znacznika <input type="submit"> Znacznik ten może być użyty bez atrybutów <input type="submit" name="wyslij" value="Wyślij"> Graficzny przycisk wysyłania formularza - imageDrugą metodą wysyłania formularza jest przycisk graficzny. Tworzy się go za pomocą znacznika Znacznik ten może być użyty następująco: <input type="image" src="webdir.gif" alt="Wyślij"> Warto zauważyć że po kliknięciu na taki obrazem przeglądarka wyśle także współrzędne kliknięcia, w postaci dodatkowych parametrów Trzecią metodą wysyłania formularza jest naciśnięcie klawisza Enter na klawiaturze w momencie gdy aktywne jest któreś z pól formularza. Co ciekawe, formularz nie musi mieć przycisku Przycisk czyszczenia formularza - resetKolejnym znacznikiem który jest od czasu do czasu stosowany jest znacznik <input type="reset"> Podobnie jak przycisk <input type="reset" value="Wyczyść formularz"> Przyciski ogólnego zastosowaniaOprócz wymienionych przycisków <input type="button" value="Przycisk 1"><br> <button>Przycisk 2</button> Domyślnie naciśnięcie żadnego z nich nie spowoduje wykonania się jakiejś akcji (np. wysłania formularza) - aby coś się stało, należy to oprogramować korzystając ze skryptu JavaScript. Warto też wspomnieć, że przycisk stworzony za pomocą znacznika <button><img src="webdir.gif" width="101" height="77" alt="Kliknij tutaj"></button> Wysyłanie plików na serwer - fileOstatnim elementem formularza który omówię jest pole wyboru pliku który ma zostać wysłany na serwer. Służy do tego celu znacznik <input type="file" name="plik"> Użycie tego znacznika jest jednak nieco trudniejsze od pozostałych, gdyż dodatkowo trzeba ustawić typ kodowania formularza na <form action="wyslij_plik.php" method="post" enctype="multipart/form-data"><div> Tutaj będzie zawartość formularza </div></form> Dodatkowo wymagana jest odpowiednia obsługa tak przesłanego pliku na serwerze. Na szczęście współczesne języki takie jak np. PHP załatwiają większość "czarnej roboty", więc jest to stosunkowo proste. Kilka przydatnych trikówOprócz wymienionych powyżej znaczników, jest jeszcze kilka innych które przydają się podczas konstrukcji formularzy. Pierwszym z nich jest znacznik <fieldset>, który wraz ze znacznikiem <legend> pozwala tworzyć ramki z tytułem (znaczniki te były opisywane w lekcji opisującej Formatowanie bloków tekstu). <fieldset><legend>Wybierz odpowiedź</legend><br> <input type="radio" name="odpowiedz" value="tak">Tak<br> <input type="radio" name="odpowiedz" value="nie">Nie<br> <input type="radio" name="odpowiedz" value="niewiem">Nie wiem </fieldset> Drugim przydatnym znacznikiem jest <label>. Pozwala on na tworzenie opisów tekstowych, których kliknięcie spowoduje uaktywnienie określonej kontrolki. Aby to zrobić, musisz przypisać kontrolkom które masz w formularzu identyfikatory za pomocą atrybutów <input type="radio" name="odpowiedz" id="odp_tak" value="tak"><label for="odp_tak">Tak</label><br> <input type="radio" name="odpowiedz" id="odp_nie" value="nie"><label for="odp_nie">Nie</label><br> <input type="radio" name="odpowiedz" id="odp_niewiem" value="niewiem"><label for="odp_niewiem">Nie wiem</label>
Dodaj linka na swojej stronie! Po prostu skopiuj poniższy kod i wklej go na swojej stronie WWW. Gotowy link będzie wyglądał w taki sposób: |
| ||||||||||||||||||||||||||||||||||||