/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Loop og validering
Fra : Thomas Møller Nexø


Dato : 30-03-03 17:34

Hej NG.

Jeg vil gerne validere en emailadresse fra en form på en
forgående side for at se om emailadressen allerede er oprettet i
DB.

Min kode (eller del deraf) ser ud som følger:

Navn = Request.Querystring( "Navn" )
Email = Request.Querystring( "Email" )
      
Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "nyhedsbrev", Conn, 2, 2
            
' Valider om email allerede eksisterer
Do While Not Rs.EOF
If Email = Rs("Email") Then
Response.Write "Den indtastede email er allerede oprettet i vores
database."
Rs.MoveNext
Loop

Jeg har ikke inkluderet hele If-sætningen og den virker som den
skal så det er ikke her problemet er

Jeg får følgende fejlmeddelelse:

Microsoft VBScript compilation error '800a040e'

'loop' without 'do'

/nyhedsbrev.asp, line 100

Loop
^

Nogen der kan se hvad jeg gør galt?

På forhånd mange tak.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Finn Elmgaard (30-03-2003)
Kommentar
Fra : Finn Elmgaard


Dato : 30-03-03 18:46


"Thomas Møller Nexø" <thomas@havensupport.dk> wrote in message
news:b676ai$pik$1@sunsite.dk...
>
> ' Valider om email allerede eksisterer
> Do While Not Rs.EOF
> If Email = Rs("Email") Then
> Response.Write "Den indtastede email er allerede oprettet i vores
> database."
> Rs.MoveNext
> Loop
>
> Jeg har ikke inkluderet hele If-sætningen og den virker som den
> skal så det er ikke her problemet er
>
Har du husket "end if" ?
mvh
Finn



Henrik Hejbøl Jensen (30-03-2003)
Kommentar
Fra : Henrik Hejbøl Jensen


Dato : 30-03-03 19:45

> > ' Valider om email allerede eksisterer
> > Do While Not Rs.EOF
> > If Email = Rs("Email") Then
> > Response.Write "Den indtastede email er allerede oprettet i vores
> > database."
> > Rs.MoveNext
> > Loop


Du skal have en "end if" inden du afslutter din Do.

Do While Not Rs.EOF
If Email = Rs("Email") Then
Response.Write "Den indtastede email er allerede oprettet i vores
database."
End If '<-----at huske :)
Rs.MoveNext
Loop


Du kan også godt undvære End If når der kun sker én ting i din If-sætning,
men så skal det hele stå på én linie.
som:

Do While Not Rs.EOF
If Email = Rs("Email") Then Response.Write "Den indtastede email er allerede
oprettet i vores database."
Rs.MoveNext
Loop


mvh. Henrik



Thomas Møller Nexø (30-03-2003)
Kommentar
Fra : Thomas Møller Nexø


Dato : 30-03-03 20:35

> Du skal have en "end if" inden du afslutter din Do.

Takker for responsen.
Som jeg skrev i mit indlæg har jeg med velje ike inkluderet hele If-sætningen
for overskuelighedens skyld.

Min kode ser ud som følger (hele if-sætningen):

' Valider om email allerede eksisterer
If Email = Rs("Email") Then
Response.Write "Den indtastede email er allerede oprettet i vores database."
         
         ' Ellers indsaet i DB
         Else
            
            If Request.Querystring("Nyhedsbrev") <> "" Then ' Tjek om bruger har
markeret nyhedsbrev
            Nyhedsbrev = "True"
            
            Else
            Nyhedsbrev = "False"
            
            End If
            
            Rs.AddNew
            Rs("Navn") = Navn
            Rs("Email") = Email
            Rs("Nyhedsbrev") = Nyhedsbrev
            Rs.Update
         
         ' JMail begynder
         Set JMail = Server.CreateObject("JMail.SMTPMail")

            JMail.ContentType = "text/html"
         
            JMail.ServerAddress = "vip.cybercity.dk"
            JMail.Sender = "nyheder@havensupport.dk"
   
            JMail.Subject = "Tak for din tilmelding" & " " & Navn
   
            JMail.Body = "<html>"
            JMail.Body = JMail.Body & "<head>"
            JMail.Body = JMail.Body & "<LINK REL=""StyleSheet""
HREF=""http://www.havensupport.dk/includes/style_nyhedsbrev.css""
TYPE=""text/css"">"
            JMail.Body = JMail.Body & "</head>"
            JMail.Body = JMail.Body & "<body bgcolor=""#336699"">"
   
            JMail.Body = JMail.Body & "<table width=""500"" align=""center""
cellpadding=""0"" cellspaving=""2"">"
            JMail.Body = JMail.Body & "<tr>"
            JMail.Body = JMail.Body & "<td width=""500"">"
            JMail.Body = JMail.Body & "<img
src=""http://www.havensupport.dk/grafik/header_nyhedsbrev.jpg"">"
            JMail.Body = JMail.Body & "</td>"
            JMail.Body = JMail.Body & "</tr>"
            JMail.Body = JMail.Body & "<tr>"
            JMail.Body = JMail.Body & "<td class=""td-main"" width=""500""
align=""left"">"
   
            JMail.Body = JMail.Body & "<table width=""490"">"
            JMail.Body = JMail.Body & "<tr>"
            JMail.Body = JMail.Body & "<td width=""490"">"
   
            JMail.Body = JMail.Body & "<h3>" & "Tak for din tilmelding" & "</h3>" &
vbCrLf & vbCrLf
            JMail.Body = JMail.Body & "<img
src=""http://www.havensupport.dk/grafik/nyheds-billeder/tifo_roeg_flag.jpg""
align=""left"">"
            JMail.Body = JMail.Body & "Hej " & Navn & "." & " Velkommen til
havensupport.dk's nyheds service via email." & vbCrLf
            JMail.Body = JMail.Body & "Vi er glade for at du valgte at tilmelde dig
til denne service og ser frem til at sende dig de seneste nyheder via email
s&aring; snart de oprettes p&aring; hjemmesiden." & vbCrLf & vbCrLf
            JMail.Body = JMail.Body & "</td>"
            JMail.Body = JMail.Body & "</tr>"
            JMail.Body = JMail.Body & "</table>"
   
            JMail.Body = JMail.Body & "</td>"
            JMail.Body = JMail.Body & "</tr>"
            JMail.Body = JMail.Body & "<tr>"
            JMail.Body = JMail.Body & "<td class=""td-main"" width=""500""
align=""left"" bgcolor=""#003366"">"
            JMail.Body = JMail.Body & "Hej " & Navn & " (" & Email & ")" & vbCrLf &
vbCrLf
            JMail.Body = JMail.Body & "Hvis du af en eller anden grund ikke ønsker at
modtage flere nyheder via email, eller du mener du er blevet oprettet ved en
fejl, "
            JMail.Body = JMail.Body & "kan du afmelde dig ved at gå til <a
href=""http://www.havensupport.dk/nyhedsbrev.asp"">Nyheder via email</a> og
indtaste dine oplysninger i denne email."
            JMail.Body = JMail.Body & "</td>"
            JMail.Body = JMail.Body & "</tr>"
            JMail.Body = JMail.Body & "</table>"
   
            JMail.Body = JMail.Body & "</body>"
            JMail.Body = JMail.Body & "</html>"

            JMail.AddRecipient Email
            JMail.AddRecipientbcc "thomas@havensupport.dk"
   
            JMail.Priority = 3
            JMail.Execute
            set JMail = nothing
         
         Response.Write "Du er nu tilmeldt vores mailingliste og vil fremover
modtage de sidste nyheder fra Herf&oslash;lge Boldklub"
         End If

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Thomas Møller Nexø (30-03-2003)
Kommentar
Fra : Thomas Møller Nexø


Dato : 30-03-03 20:41

Og så glemte jeg selvfølgelig i farten at inkludere det stykke kode der skaber
problemet

Navn = Request.Querystring( "Navn" )
Email = Request.Querystring( "Email" )

Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "nyhedsbrev", Conn, 2, 2

' Valider om email allerede eksisterer
Do While Not Rs.EOF
If Email = Rs("Email") Then
Response.Write "Den indtastede email er allerede oprettet i vores
database."
Rs.MoveNext
Loop

Som skrevet før. Der er ikke umiddelbart problemer med selve If-sætningen, men
problemet opstår så snart jeg inkluderer løkken.

Selve valideringen virker - dog kun hvis den indtastede emailadresse er den
første i databasen. Jeg forsøger at lave en løkke, der render alle poster
igennem og validerer mod den indtastede emailadresse -
Request.Querystring("Email").

Håber nogen kan regne problemet ud.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Henrik Hejbøl Jensen (30-03-2003)
Kommentar
Fra : Henrik Hejbøl Jensen


Dato : 30-03-03 21:26

> ' Valider om email allerede eksisterer
> Do While Not Rs.EOF
> If Email = Rs("Email") Then
> Response.Write "Den indtastede email er allerede oprettet i vores
> database."
> Rs.MoveNext
> Loop

Problemet er stadig som jeg skrev ( måske ikke tydeligt nok) Du afslutter
ikke din If sætning før din DO

Du har en Ifsætning inde i en Do-Loop.. If sætningen skal afsluttes før du
afslutter din Do-Loop

Start_Do-Loop
Start_If
Slut_Do-Loop
Snip
Slut_If

Er ikke gyldig

Det er

Start_Do-Loop
Start_If

Slut_If
Slut_Do-Loop

derimod..

\Henrik



Thomas Møller Nexø (30-03-2003)
Kommentar
Fra : Thomas Møller Nexø


Dato : 30-03-03 21:48

> Problemet er stadig som jeg skrev ( måske ikke tydeligt nok) Du afslutter
> ikke din If sætning før din DO

Ok, jeg tror jeg forstår.

Nogen ideer til hvordan man ellers kommer omkring, da jeg jo skal have en
betingelse som enten skriver en fejl hvis emailen allerede eksisterer og
ellers opretter emailen i databasen:

If Email = Rs("Email") Then
Response.Write "Den indtastede email er allerede oprettet i vores database."
            
Else
Opret den i databasen...

Med venlig hilsen
Thomas

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Henrik Hejbøl Jensen (30-03-2003)
Kommentar
Fra : Henrik Hejbøl Jensen


Dato : 30-03-03 21:54

> If Email = Rs("Email") Then
> Response.Write "Den indtastede email er allerede oprettet i vores
database."
>
> Else
> Opret den i databasen...

Du kan sagtens bruge din kode... Loop skal bare flyttes noget længere ned
( til slutningen af din Ifsætning.

\Henrik



Jens Gyldenkærne Cla~ (31-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 31-03-03 09:58

Thomas Møller Nexø skrev:

> Jeg vil gerne validere en emailadresse fra en form på en
> forgående side for at se om emailadressen allerede er oprettet i
> DB.

Udmærket idé.

> ' Valider om email allerede eksisterer
> Do While Not Rs.EOF
> If Email = Rs("Email") Then

- men det er en langsom måde at teste det på.

SQL er et forespørgselssprog der er skabt til bl.a. at undersøge
spørgsmål som det du nu bruger en løkke til.

Prøv at se følgende kodeudsnit:

'*************************
strSQL = "SELECT * FROM nyhedsbrev WHERE email = '" & Email & "'"

Rs.Open strSQL, Conn, 2, 2

If rs.EOF Then
   ' emailadressen findes ikke - fortsæt med oprettelsen
Else
   ' emailadressen findes allerede - udskriv fejlmeddelelse
End If
'*************************

Hvis du har et unikt indeks på dit emailfelt kan du også bruge
INSERT direkte og så teste for fejl. I skitseform vil det se
således ud:

On Error Resume Next

strSQL = "INSERT INTO nyhedsbrev (navn, email) VALUES ('" & navn &
"', '" & email & "')"

Conn.Execute strSQL

If err.Number > 0 Then
   handleError() ' kald til rutine der håndterer fejlen
Else
   ' fortsæt normalt
End IF


Sub handleError()
   If err.Number = <det nummer der betyder indsætfejl på grund af
dubleret nøgleværdi> Then
       ' Udskriv "email findes allerede"
   Else
       ' udskriv anden fejlmeddelelse.
   End IF
End Sub
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Thomas Møller Nexø (31-03-2003)
Kommentar
Fra : Thomas Møller Nexø


Dato : 31-03-03 12:41

> strSQL = "SELECT * FROM nyhedsbrev WHERE email = '" & Email & "'"
>
> Rs.Open strSQL, Conn, 2, 2
>
> If rs.EOF Then
>    ' emailadressen findes ikke - fortsæt med oprettelsen
> Else
>    ' emailadressen findes allerede - udskriv fejlmeddelelse
> End If

Takker for svaret Jens. Jeg kan helt sikkert bruge denne metode.

Med venlig hilsen
Thomas


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

jensop (31-03-2003)
Kommentar
Fra : jensop


Dato : 31-03-03 15:08

Jeg har selv med held benyttet denne metode:

strquery = "SELECT * from database where email='"&email&"'"
set objrs = objcon.execute(strquery)
antal=0
do while (not objrs.eof)
antal=antal+1
objrs.movenext
loop
objcon.close
set objcon=nothing
set objrs=nothing
if antal <> "0"Then
response.write "emailadressen er allerede anvendt"
end if

--
/Jens Ole Pedersen


"Thomas Møller Nexø" <thomas@havensupport.dk> skrev i en meddelelse
news:b699h4$rik$1@sunsite.dk...
> > strSQL = "SELECT * FROM nyhedsbrev WHERE email = '" & Email & "'"
> >
> > Rs.Open strSQL, Conn, 2, 2
> >
> > If rs.EOF Then
> > ' emailadressen findes ikke - fortsæt med oprettelsen
> > Else
> > ' emailadressen findes allerede - udskriv fejlmeddelelse
> > End If
>
> Takker for svaret Jens. Jeg kan helt sikkert bruge denne metode.
>
> Med venlig hilsen
> Thomas
>
>
> --
> Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
> - Pædagogiske tutorials på dansk
> - Kom godt i gang med koderne
> KLIK HER! => http://www.html.dk/tutorials



Jens Gyldenkærne Cla~ (31-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 31-03-03 15:28

jensop skrev:

> Jeg har selv med held benyttet denne metode:
>
> antal=0
> do while (not objrs.eof)
> antal=antal+1
> objrs.movenext
> loop
> objcon.close
> set objcon=nothing
> set objrs=nothing
> if antal <> "0"Then
> response.write "emailadressen er allerede anvendt"
> end if


Det virker men er noget mere omstændeligt end blot at tjekke for
EOF.

NB: Læs venligst min signatur.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408534
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste