Nyeste it-job

Lektion 11: Værdier af elementer i en formular

Interaktive websites kræver i sagens natur input fra brugerne. En af de mest udbredte måder at få input på er såkaldte formularer - eller forms.

I denne lektion vil vi beskæftige os med hvordan du bygger et formular, og derefter behandler brugerens data på serveren. For en egentlig gennemgang af hvilke forskellige felter der findes i formular henvises til artiklen Lær at lave formularer (forms).

<form>

Når du koder din formular er der særligt to atributter som har betydning for hvordan formen opfører sig: action og method.

action
Her angives URL'en til den fil som formen skal 'submittes' til. Det vil i vores tilfælde sige den ASP fil hvor du vil behandle brugerens input
method
Kan enten sættes til 'post' eller 'get' - der er tale om to forskellige metoder til at overføre data. Du behøver i første omgang ikke vide så meget om forskellen - men med 'get' sendes data gennem URL'en - og med 'post' sendes data som datablok gennem standard input service (STDIN).

En HTML side med en formular

Siden som indeholder formularen behøver ikke at være en ASP fil (men kan naturligvis være det). Den behøver ikke engang ligge på det samme site som den fil, som skal modtage data.

I vores første eksempel kigger vi på en meget simpel formular med et tekst felt:

<html>
<head>
<title>Formular</title>
</head>
<body>
<h1>Skriv dit navn</h1>

<form method="post" action="modtag.asp">
<input type="text" name="brugernavn">
<input type="submit">
</form>

</body>
</html>

Resultatet i en browser er en formular:

Nu kommer vi til den sjove del - at modtage og behandle data fra formen med ASP.

Modtag formens data med ASP

Når man skal modtage data fra en form (og mange andre steder fra - men det kommer vi til) benyttes objektet request. Da vores data bliver submittet fra en form ved hjælp af metoden post, skriver vi:

Request.Form("FeltNavn")

Request returnerer således værdien af tekstfeltet i formen. Lad os prøve at bruge det i et eksempel.

Lav først en fil med en formular som ovenfor - og lav derefter en ASP fil ved siden af, som du kalder for "modtag.asp" - bemærk at det er navnet på den fil vi skrev i atributten action i vores <form>.

filen "modtag.asp" skal have følgende indhold:

<html>
<head>
<title>Formular</title>
</head>
<body>
<%
Response.Write "<h1>Hej " & Request.Form("brugernavn") & "</h1>"
%>
</body>
</html>

Brugerens input og betingelser

I dette eksempel vil vi prøve at benytte brugerens input til at lave betingelser. Det første vi har brug for er en formular:

<html>
<head>
<title>Formular</title>
</head>
<body>

<form method="post" action="modtag.asp">

<p>Hvad er dit navn:
<input type="text" name="brugernavn"></p>

<p>Hvad er din yndlingsfarve:
<input type="radio" name="yndlingsfarve" value="r"> Rød
<input type="radio" name="yndlingsfarve" value="g"> Grøn
<input type="radio" name="yndlingsfarve" value="b"> Blå</p>

<input type="submit">

</form>

</body>
</html>

Hvilket i en browser vil se sådan ud:

Lad os prøve at bruge disse input til at lave en side, som automatisk skifter baggrundsfarve efter hvad brugerens yndlingsfarve er. Det kan vi gøre ved at opstille en betingelse (jfr. lektion 6), som afhænger af hvordan brugeren har udfyldt formularen.

<%
strOverskrift = "<h1>Hej " & Request.Form("brugernavn") & "</h1>"
Select Case Request.Form("yndlingsfarve")
Case "r"
	strBaggrundsfarve = "rgb(255,0,0)"
Case "g"
	strBaggrundsfarve = "rgb(0,255,0)"
Case "b"
	strBaggrundsfarve = "rgb(0,0,255)"
Case Else
	strBaggrundsfarve = "rgb(255,255,255)"
End Select
%>
<html>
<head>
<title>Formular</title>
</head>
<body style="background: <% =strBaggrundsfarve %>;">

<% Response.Write strOverskrift %>

</body>
</html>

Som du kan se bliver baggrundsfarven hvid hvis brugeren ikke har udfyldt formularen med oplysninger om sin yndlingsfarve. Dette sker ved at benytte Case Else til at angive hvad der skal ske hvis ingen af de ovenstående betingelser er opfyldt.

Men hvad hvis brugeren ikke udfylder sit navn? Så stå der bare "Hej" som overskrift. Det vil vi nu prøve at ændre på ved at indsætte en ekstra betingelse.

<%
strBrugernavn = Request.Form("brugernavn")

If strBrugernavn <> "" Then
    strOverskrift = "<h1>Hej " & strBrugernavn & "</h1>"
Else
    strOverskrift = "<h1>Hej Fremmede!</h1>"
End If


Select Case Request.Form("yndlingsfarve")
Case "r"
	strBaggrundsfarve = "rgb(255,0,0)"
Case "g"
	strBaggrundsfarve = "rgb(0,255,0)"
Case "b"
	strBaggrundsfarve = "rgb(0,0,255)"
Case Else
	strBaggrundsfarve = "rgb(255,255,255)"
End Select
%>

<html>
<head>
<title>Formular</title>
</head>
<body style="background: <% =strBaggrundsfarve %>;">

<% Response.Write strOverskrift %>

</body>
</html>

Vi brugte altså en betingelse til at validere oplysningerne fra brugeren. I dette tilfælde ville det ikke betyde særligt meget hvis brugeren ikke skrev sit navn - men efterhånden som du koder mere og mere avancerede ting vil du opleve at det er helt afgørende at man tager højde for at brugeren måske ikke altid udfylder formularer, som du havde forestillet dig.


Nyhedsbrev
Tilmeld dig HTML.dk's nyhedsbrev


Er du jobsøgende?

 Ja
 Nej
Se det foreløbige resultat når du har stemt!


Se tidligere afstemninger

 Community
Brugernavn

Adgangskode

Husk

 *  Bliv medlem her
 *  Glemt password?


Om HTML.dk | Oplysninger om ophavsret | Politik om persondata | Annoncer på HTML.dk | RSS

Valid XHTML 1.1! Valid CSS! Powered by Scannet