Grafika publishing webtip.cz grafika.cz mujiPod.cz mujmac.cz fotografovani.cz printing.cz builder.cz galerie
webtip.cz
adresář  | práce  | diskuse  | redakce  | inzerce
 
 


  ASP pro začátečníky, 6. díl - Formuláře II.
o autorovi 
poslat mailem 
tisknout článek 
aktuální rubrika 
I v tomto díle se budeme zabývat formuláři. Dnes je na řadě kontrola formulářových polí.

Liška Adam - 26.03.2002 - tutorial - Rubrika: ASP
Předchozí díl: ASP pro začátečníky, 5. díl - Formuláře
Seriál: 
Následující díl: ASP pro začátečníky, 7. díl - Počítadlo návštěvníků

Kontrola formulářových polí se obvykle skládá ze dvou částí: kontrola na straně klienta (JavaScript apod.) a na straně serveru (ASP). Obě dvě jsou potřebné. Pokud klient udělá chybu, pomocí JavaScriptu ho rychle upozorníme. Druhý způsob se zase užitečný, když má uživatel vypnutý JavaScript. A protože tento seriál je o ASP, my se budeme zabývat tou druhou částí.

V našem formuláři máme dvě vstupní pole: jméno a věk. My chceme, aby pole jméno "něco obsahovalo" a pole věk obsahovalo jen číslo. Nic těžkého to nebude. Nejdříve však uděláme jednu změnu. Nyní máme tento formulář ve dvou souborech: formular.htm a formular.asp. My jej ale můžeme sloučit do jednoho souboru formular.asp. Stránka bude po sloučení a mírné upravě vypadat takto:

<html>
<head>
<title>Pokus</title>
</head>
<body>
<% If Request.Form("Odeslano") Then
response.write "Jmenujete se " & Request.Form("jmeno") & " a je vám " & Request.Form("vek") & " let."
Else %>
<form action="formular.asp" method="post">
Vaše jméno: <input type="text" name="jmeno"><br>
Váš věk: <input type="text" name="vek"><br>
<input type="hidden" name="Odeslano" value="true"><br>
<input type="submit" value="Odeslat" name="odeslat">
</form>
<% End If %>
</body>
</html>

Čeho si všimnete hned na začátku, bude příkaz If - Else. Stejně jako v každém jiném programovacím jazyce jsou i ve VBScriptu příkazy pro větvení aplikace. Vyskytují se skoro ve všech větších i menších aplikacích. Podmínka je výraz, který vrací logickou hodnotu True (pravda) nebo False (nepravda). Obvyklým výrazem bývá porovnávání. Pokud je výraz pravdivý, vykonají se příkazy za klíčovým slovem Then. V opačném případě se bude pracovat s příkazy mezi klíčovými slovy Else a End If. Naše aplikace začíná testem proměnné Odeslano. Proměnná Odeslano je skryté formulářové pole. Co to je? Je to pole, které se samo nezobrazuje, ale jeho hodnota je s ostatními posílána zpátky serveru. Pokud jde návštěvník na stránku poprvé, zobrazí se mu stránka, jejíž kód je za klauzulí Else, protože skryté pole nemá ještě žádnou hodnotu. Po zmáčknutí tlačítka Odeslat se tyto hodnoty předávají té samé stránce, ale pole hidden má již hodnotu true, takže po otestování podmínkou If se zjistí, že se data posílají z formuláře a zpracují se. Poznámka: Pokud testujete, jest-li proměnná obsahuje hodnotu True (či 1), nemusíte psát Request.Form("Odeslano")=1, ale stačí jen Request.Form("Odeslano").

A nyní, když máme stránku formular.asp upravenou, se pustíme již do samotné kontroly. Pro kotrolu prvního pole použijeme funkci VBScritpu Len. Tato funkce nám spočítá délku řetězce. Jestliže bude délka řetězce nulová, aplikace vypíše chybové hlášení:

If Len(Request.Form("jmeno"))=0 Then
strChybaJmeno = "Nevyplněno!"
blnDobre = false
End If

Logickou proměnnou blnDobre používáme k tomu, abysme zjistili, jest-li je formulář vyplněn správně nebo špatně. Při zpracování formuláře bude správně vyplněný formulář podmínkou. My k tomu ještě přidáme kontrolu pole vek. V tomto případě použijeme další funkci IsNumeric. Tato funkce vrací True, pokud je zadaná hodnota číselná. V opačném případě vrátí hodnotu False:

If Len(Request.Form("vek"))=0 Then
strChybaVek = "Nevyplněno!"
blnDobre = false
ElseIf NOT IsNumeric(Request.Form("vek")) Then
strChybaVek = "Pole obsahovalo jinou než číselnou hodnotu!"
intVek=""
blnDobre = false
End If

Jsou tu další dvě novinky. Za prvé - logický operátor NOT. Ten se používá tehdy, když je třeba vykonat příkazy za klíčovým slovem Then při nesplnění podmínky. A také ElseIf - používá se, když potřebujete vybírat z více možností

Pro správný běh aplikace ji budeme muset znovu změnit:

<html>
<head>
<title>Pokus</title>
</head>
<body>
<%
If Request.Form("Odeslano") Then
   blnDobre = true
   strJmeno = Request.Form("jmeno")
    intVek = Request.Form("vek")
  If Len(strJmeno)=0 Then
   strChybaJmeno = "Nevyplněno!"
   blnDobre = false
  End If
  If len(intVek)=0 Then
   strChybaVek = "Nevyplněno!"
   blnDobre = false
  ElseIf NOT IsNumeric(Request.Form("vek")) then
   strChybaVek = "Pole obsahovalo jinou než číselnou hodnotu!"
   intVek=""
   blnDobre = false
  End If
End If
  If blnDobre Then
   response.write "Jmenujete se " & strJmeno & " a je vám " & intVek & " let."
  Else %>
<form action="formular.asp" method="post">
Vaše jméno: <%= strChybaJmeno %> <input type="text" name="jmeno" value=<%=strJmeno %>><br>
Váš věk: <%= strChybaVek %> <input type="text" name="vek" value=<%= IntVek %>><br>
<input type="hidden" name="Odeslano" value="true"><br>
<input type="submit" value="Odeslat" name="odeslat">
</form>
<% End If %>
</body>
</html>

Jak to funguje? Na začátku se zjistí, jest-li je zde návštěvník poprvé, anebo již odesílá vyplněný formulář. Následuje kontrola polí. Pokud je vše dobře, tak se formulář zpracuje. V opačném případě se formulář objeví znovu s upozorněními. Pole vylněné dobře nemusí návštěvník vyplňovat znovu - hodnota zůstává.

Zbývá poslední krok. Úprava češtiny - aby aplikace fungovala i pro čtyřleté děcko. Nic těžkého, když jsme již zvládli kontrolu formulářovách polí. Upravíme jen jednu část kódu:

...
If blnDobre Then
  If intVek<5 AND intVek>1 Then
     strText = " a jsou vám " & intVek & " roky."
  ElseIf intVek>4 Then
      strText = " a je vám " & intVek & " let."
  Else
      strText = " a je vám jeden rok."
  End If
  response.write "Jmenujete se " & strJmeno & " " & strText
  Else %>
...

Celý zdrojový kód formuláře si můžete stáhnout zde.

Liška Adam


Hodnocení článku: -1- -2- -3- -4- -5-  Aktuální hodnocení: 2.71 (2869)

Relevantní články
Žádné články


Příspěvky do diskuse o aktuálním článku

K tomuto článku zatím nejsou žádné příspěvky
 

 

  O vydavateli | Kontakt | Ceník reklamy | Ochrana osobních dat
©2002 Grafika Publishing. Všechna práva vyhrazena!