1. Inleiding 2. Via GET 3. Via POST 4. For each en Split 5. Uitgebreid Voorbeeld top1. Inleiding
Met HTML kan je een formulier opstellen.
Hierin kan je gegevens schrijven. Hoe je zo'n formulier kunt opstellen vind je hier.
Zo'n formulier is allemaal leuk en wel, maar je hebt er niet veel aan als je de gegevens niet kan verwerken of bewerken.
Via ASP kan je verzonden gegevens opslaan in een variabele, hiermee bewerkingen doen, en terugsturen naar de gebruiker (of opslaan in een database).
Er zijn 2 grote manieren om die gegevens op te vangen.
- door deze te versturen via de header (GET)
- door deze te versturen via het formulier (POST)
Beide manieren hebben hun voor en nadelen.
Ik ga in dit artikel bespreken hoe ze werken. Vervolgens ook een beetje uitgebreider over verschillende formuliertypes, en daarna een voorbeeld geven. top2. Via GET
GET houdt in dat je de gegevens verstuurt via de header.
Een voorbeeld van hoe zo'n header er kan uitzien is: ?var=1&var2=3&submit=voerUit.
Dan kan je via een methode alle gegevens een voor een er uit halen.
Er wordt een variabele gemaakt met de naam "var" en die je kan oproepen via de methode request.querystring.
Een voorbeeldje hiervan.
Eerst maken we een formuliertje.
Er is de mogelijkheid om 1 getal in te voeren en op een knop te drukken.
Als er op de knop is gedrukt worden er gegevens in de header gestoken.
Via request.querystring haal ik deze gegevens er uit en geef het juist weer.
Een iets uitgebreider voorbeeld, een passwoord controle.
if naam = ingevoerdeNaam AND pass = ingevoerdePass Then
Response.Write "U bent succesvol ingelogd..."
else
Response.Write "U moet nog inloggen OF u hebt foute gegevens ingevoerd"
end if
%>
Nu, zoals je kan zien worden de gegevens via de header verzonden.
Je kan alles aflezen bovenaan.
Voor sommige gevoelige data is dit misschien niet zo handig.
Je kan & tekens toevoegen en deze wordt dan geïnterpreteerd als nieuwe variabelen.
Je kan dus ongewenste variabelen aanmaken.
Via post is dit onmogelijk, omdat dan alle gegevens achter de gebruiker zijn rug worden verzonden en kan hij deze niet aanpassen. top3. Via POST
Zoals ik net zei kan je dus gegevens ook via POST ontvangen.
Dit gebeurt via de methode: request.form.
Je haalt de gegevens op dezelfde manier op als met GET.
Ik ga het voorbeeldje van hierboven met de passwoorden gebruiken voor de POST methode.
Ik heb aangeduid WAAR ik iets heb veranderd.
<?php <form name="inloggen" method="post" action="">
<!-- Hierboven heb ik get in post veranderd... logisch, omdat we met post willen werken -->
Naam: <input type="text" name="ingevoerdeNaam" /><br />
Pass: <input type="text" name="ingevoerdePass" /><br />
<input type="submit" name="submit" value="inloggen" /><br /><br />
<%
Dim naam, pass
Dim ingevoerdeNaam, ingevoerdePass
naam = "open"
pass = "sesame"
ingevoerdeNaam = request.form("ingevoerdeNaam") 'hier heb ik querystring in form veranderd, en hieronder ook
ingevoerdePass = request.form("ingevoerdePass")
if naam = ingevoerdeNaam AND pass = ingevoerdePass Then
Response.Write "U bent succesvol ingelogd..."
else
Response.Write "U moet nog inloggen OF u hebt foute gegevens ingevoerd"
end if
%>
top4. For each en Split
Nu, stel ik heb een hele hoop gegevens en ik wil die allemaal onder elkaar weergeven.
Je zou dan deze gegevens een voor een mooi weergeven via Response.Write OF je kan alles in een loop zetten.
Zolang er gegevens zijn, geef je deze weer eigenlijk.
Zoiets kan via de For each lus.
Je gaat Request.form gebruiken, dit is een array die alle gegevens bevat.
Vervolgens ga je een algemene index maken die steeds veranderd.
Deze index roept steeds alle waardes op.
Een voorbeeldje lijkt me hier wel op zijn plaats.
<%
For Each index in Request.form
Response.Write index & " - " & Request.form(index) & "<br />"
next
%>
In het formulier heb ik bij de submit knop bewust het 'name' attribuut weggelaten.
Zo wordt deze ook genegeeerd in de loop, want dit is nutteloze informatie (hoe een knop heet en wat de waarde is).
Na het verzenden van mijn gegevens worden deze in Request.Form gestoken.
De index variabele staat bij elke nieuwe herhaling van de loop gelijk aan de index van een Request.Form element.
Ik geef dan de index plus de waarde zelf weer.
Nu is er nog een uitzondering.
Bij 'checkboxjes' kunnen er meerdere gegevens worden verzonden.
Even voor de mensen die niet weten wat een checkbox is:
Je kan meerdere checkboxjes aanvinken.
Je gaat dan deze checkboxjes met elkaar linken door een gezamelijke naam te geven.
ASP gaat alle waardes aan elkaar plakken gescheiden door een komma en een spatie.
Via de functie 'split' kan je deze waardes scheiden.
Voor de mensen die PHP kunnen: deze functie kan je vergelijken met explode().
Een voorbeeld hiervan.
kleurenArray = split(kleuren, ", ")
For Each index in kleurenArray
Response.Write index & "<br />"
Next
%>
Eerst laat ik zien hoe de waarde van Request.Form("kleur") eruit ziet.
Vervolgens geef ik de aangeduide kleuren een voor een weer.
Dit is bv. handig als je wilt weten of de gebruiker rood en bruin heeft aangeduid. top5. Uitgebreid voorbeeld
In dit voorbeeld wil ik dat ze juiste gegevens over mij invullen.
Je moet 'koen' als naam invullen en 'geheim' als pass.
Ik vind de kleuren 'blauw' en 'groen' mooi dus deze moeten aangevinkt worden. Geen andere!
Ik controleer dit via een teller (als het juist is laat ik de teller 1x optellen).
if request.form("naam") = "koen" AND request.form("pass") = "geheim" Then
kleurenArray = split(request.form("kleur"), ", ")
For Each index in kleurenArray
if index = "blauw" OR index = "groen" Then
teller = teller + 1
End if
Next
end if
if teller = 2 Then
Response.Write "U hebt alle gegevens goed ingevuld! <br />"
else
Response.Write "De naam moest 'koen' zijn, het password 'geheim' en de kleuren 'blauw' en 'groen'!"
End if
%>