
W ćwiczeniu 8 zajmować się będziemy formularzami, czyli sposobem komunikacji czytelnika strony WWW z jej autorem.
Formularze to sposób komunikacji z autorem strony. Można, dzięki formularzom, uzyskiwać informację zwrotną dotyczącą witryny internetowej, a także wypełniać ankiety i dokonywać jakichś zamówień.
Formularze wiążą się ściśle z obsługą skryptów na serwerze, szczególnie języka PHP. A to nie do końca jest przedmiotem tych ćwiczeń.
Jednak to w niczym nie przeszkadza, aby poznać znaczniki odpowiedzialne za formularze. A gotowy formularz można wysłać na adres e-mail. Warunkiem jest tylko użycie klienta pocztowego.
Formularz ma formę elektronicznej ankiety, którą wypełnia się wprost na stronie. Możliwe jest przy tym wpisywanie tekstu, odpowiadanie na zadane pytania, czy zaznaczanie jednej bądź kilku z podanych możliwości wyboru.
Głównym znacznikiem w którym mieści się formularz jest: <form>...</form>. Używamy go z takimi atrybutami: <form action="akcja" method="metoda" enctype="enctype">...</form>.
W XHTML zawartość formularza należy umieścić wewnątrz znacznika będącego pojemnikiem, takim jak na przykład <div>...</div>. Wtedy szkielet formularza będzie wyglądał następująco:
Kolejna istotna rzecz w formularzach to pola tego formularza zwane też kontrolkami, które wypełniane są różnego rodzaju informacjami:
Głównym znacznikiem dla kontrolek jest <input type="rodzaj"/>. Mogą być następujące rodzaje atrybutu type:
Typ "text" jest podstawowym rodzajem pola tekstowego. Tworzy pole tekstowe o wysokości jednej linii i określonej długości. W nim umieszcza się tekst.
Można użyć z takimi atrybutami: <input type="text" name="nazwa" value="wartość" size="k" maxlength="m" readonly="readonly" disabled="disabled"/>
Typ "password" wprowadza pole, dzięki któremu można wpisać hasło. Wpisane zanki wyświetlane są w postaci gwiazdek ("*") lub kropek ("•")
Można również stosować dokładnie te same atrybuty jak w polu tekstowym (jednak raczej bez podawania hasła domyślnego). Możliwe atrybuty to: <input type="password" name="nazwa" size="k" maxlength="m" readonly="readonly" disabled="disabled"/>.
Z tymi dwoma typami proszę wykonać:
Typ "radio" spowoduje wyświetlenie pola opcji, które można zaznaczać myszką - włączać i wyłączać. Możliwe jest zaznaczenie tylko jednego takiego pola - pozostałe są wyłączone. Włączenie innego pola - wyłącza to poprzednie. To pole jest okrągłe.
Typ "checkbox" spowoduje wyświetlenie pola wyboru, które można zaznaczyć myszką, ale też i odznaczyć. Możliwe jest zaznaczenie większej ilości takich pól. To pole jest kwadratowe.
Atrybuty dla tych typów są następujące: <input type="radio" name="nazwa" value="wartość" checked="checked" disabled="disabled"/>
Z tymi dwoma typami proszę wykonać:
A tu wszystkie trzy odpowiedzi wybrane:
Typ "submit" spowoduje wyświetlenie przycisku z tekstem. Naciśnięcie go spowoduje wysłanie formularza z danymi.
Atrybuty dla tego typu to: <input type="submit" value="wartość" disabled="disabled" />.
Zadanie do wykonania:
Typ "image" wyświetli na ekranie przycisk z obrazkiem, po naciśnięciu którego, nastąpi wysłanie formularza.
Atrybuty dla tego typu to: <input type="image" src="ścieżka dostępu do pliku graficznego" alt="tekst alternatywny" />.
Zadanie do wykonania:
Typ "reset" wyświetla na ekranie przycisk, który wyczyszcza wszystkie udzielone do tej pory odpowiedzi w ankiecie lub przywraca domyślne wartości.
Atrybuty dla tego typu są takie: <input type="reset" value="wartość" disabled="disabled" />.
Zadanie do wykonania:
Typ "button" wstawia zwykły przycisk. Podobnie działa znacznik <button>...</button>. Pomiędzy znacznikami wpisujemy napis na przycisku.
Domyślnie naciśnięcie żadnego z nich nie spowoduje wykonania jakiejś akcji (np. wysłania formularza) - aby coś się stało, należy skorzystać ze skryptu JavaScript.
Atrybuty dla typu "button" są takie: <input type="button" value="wartość" />.
Zadania do wykonania:
Typ "file" to pole wyboru pliku który ma zostać wysłany na serwer. Dodatkowo trzeba ustawić typ kodowania formularza na: multipart/form-data za pomocą atrybutu enctype znacznika <form enctype="multipart/form-data">.
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.
Ten typ opisujemy z takimi atrybutami: <input type="file" name="nazwa" />.
Zadanie do wykonania:
Typ "hidden" tworzy ukryte pole w formularzu. Nie jest ono widoczne ani dostępne dla użytkownika, ale jego wartość (value="wartość") jest przesyłana wraz z formularzem.
Może ono służyć np. dla podania informacji o numerze wersji ankiety, dacie jej ostatniej aktualizacji, adresu strony, z której została wysłana, opisu całego formularza lub też poszczególnych jego pól.
źródło: www.kurshtml.boo.pl
Kolejny znacznik obsługujący formularze to <select> <option>...</option> </select>. Dzięki niemu można zbudować listę rozwijaną (przewijaną) lub menu wielokrotnego wyboru. Kliknięcie powoduje zaznaczenie jednej opcji, a przy wciśniętym klawiszu Ctrl większej ilości. Również wpisujemy w znaczniku <form>...</form>.
Atrybuty dla tego znacznika: <select name="nazwa" multiple="multiple" size="w" disabled="disabled"> <option selected="selected">...</option> </select>.
Zadanie do wykonania:
Kolejnym elementem, który może być wykorzystany przy budowie formularza jest wielowierszowe pole tekstowe. Używa się do tego znaczników <textarea>...</textarea>.
Polecenie to wyświetla obszar tekstowy, który może składać się z dowolnej ilości kolumn i wierszy. Można w nim wpisać dłuższą treść.
Uwaga techniczna:
Wewnątrz <textarea>...</textarea> (w treści domyślnej) znaczniki nie są interpretowane - jeśli je wpiszemy, pojawią się w polu jako zwykły tekst. Przejście do następnej linii następuje poprzez klawisz Enter. Uwzględniane są dodatkowe spacje oraz tabulacja.
źródło: www.kurshtml.boo.pl
Można użyć takich atrybutów: <textarea name="nazwa" cols="r" rows="l" readonly="readonly" disabled="disabled">...</textarea>.
Zadanie do wykonania:
W formularzu można jeszcze użyć znaczników <fieldset> <legend>...</legend>...</fieldset>. Dzięki nim można zgrupować tematycznie kilka pól formularza, które będą objęte ramką. Znacznik <legend>...</legend> dodaje ponadto tytuł na ramce grupującej.
Można w nim użyć atrybutu: <legend align="sposób">...</legend>. Atrybut align jest zdeprecjonowany przez specyfikację HTML 4.01.
Na koniec proszę wykonać formularz zbiorczy:
Oceniany będzie plik formularze.html z wykonanymi wszystkimi formularzami, polami, listami po kolei, pojedynczo oraz formularz zbiorczy - wszystko zgodnie z krokami.
Przy przygotowywaniu powyższego ćwiczenia wielką pomocą służył kurs HTML-a - w wersji online: http://www.kurshtml.boo.pl, jak również w wersji offline do pobrania z tej samej strony.