login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > ASP


Gegevens:
Geschreven door:
nemesiskoen
Moeilijkheidsgraad:
Gemakkelijk
Hits:
11076
Punten:
Aantal punten:
 (5)
Aantal stemmen:
2
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (0)
 



Tutorial:

Formulieren (gegevens verzenden en opvragen)

1. Inleiding
2. Via GET
3. Via POST
4. For each en Split
5. Uitgebreid Voorbeeld
 top
1. 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.
 top
2. 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.
<form  name="test" method="get" action="">
getal: <input type="text" name="getal" /><br />
<
input type="submit" name="submit" value="Voer uit" /><br />

<%
Dim getal

getal
= request.querystring("getal")

Response.Write getal
%>

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.
<form name="inloggen" method="get" action="">
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.querystring("ingevoerdeNaam")
ingevoerdePass = request.querystring("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
%>

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.
 top
3. 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
%>

 top
4. 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.
<form name="inloggen" method="post" action="">
Naam: <input type="text" name="naam" /><br />
Leeftijd: <input type="text" name="leeftijd" /><br />
Nationaliteit: <input type="text" name="nat" /><br />
Extra gegevens: <input type="text" name="extra" /><br />
<
input type="submit" value="Verzenden" /><br /><br />

<%
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.
<form name="inloggen" method="post" action="">
Welke kleur(en) vind jij mooi?<br />
<
input type="checkbox" name="kleur" value="blauw" />Blauw
<input type="checkbox" name="kleur" value="rood" />Rood
<input type="checkbox" name="kleur" value="bruin" />Bruin
<input type="checkbox" name="kleur" value="groen" />Groen

<input type="submit" value="Verzenden" /><br /><br />

<%
Dim kleuren
Dim kleurenArray

kleuren
= Request.form("kleur")
Response.Write "De aangevinkte kleuren zijn: " & kleuren & "<br />"

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.
 top
5. 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).
<form name="gegevens" method="post" action="">
<
table>
    <
tr>
        <
td>
            
Naam
        
</td>
        <
td>
            <
input type="text" name="naam" />
        </
td>
    </
tr>
    <
tr>
        <
td>
            
Pass
        
</td>
        <
td>
            <
input type="password" name="pass" />
        </
td>
    </
tr>
    <
tr>
        <
td>
            
Welke kleuren vind ik mooi?
        </
td>
        <
td>    
            <
input type="checkbox" name="kleur" value="blauw" />Blauw
            
<input type="checkbox" name="kleur" value="rood" />Rood
            
<input type="checkbox" name="kleur" value="bruin" />Bruin
            
<input type="checkbox" name="kleur" value="groen" />Groen
        
</td>
    </
tr>
    <
tr>
        <
td>
        </
td>
        <
td>
            <
input type="submit" value="verzenden" />
        </
td>
    </
tr>
</
table>
</
form>
<%
Dim kleurenArray
Dim teller

teller
= 0

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
%>
    


Het resultaat daarvan vind u hier

Als je nog vragen hebt kan je deze stellen op het forum

 top



« Vorige tutorial : Subroutines en functies Volgende tutorial : ASP en Acces databases »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.048s