24. november 2004 - 15:07Der er
18 kommentarer og 1 løsning
Check af en form
Jeg har lavet en form som bliver tjekket af et Javascript før det sendes videre til databasen, den tjekker for om navn er udfyldt og for om email indeholder det den skal.
Nu vil jeg godt have den til at tjekke for om e-mail adressen allerede findes i databasen, jeg har lavet den sidste tjek, men kan man overhoved det og hvordan skal det sætte op???
<SCRIPT LANGUAGE=JAVASCRIPT> <!-- function CheckForm () {
//kontroller at navn er udfyldt if (document.afsend.navn.value == ""){ alert("Skriv venligst dit navn"); document.afsend.navn.select(); document.afsend.navn.focus(); return false }
//kontroller at email er udfyldt og indeholder @ og punktum if (document.afsend.email.value.indexOf('@') == '-1' || document.afsend.email.value.indexOf('.') == '-1' | document.afsend.email.value.indexOf('.') == '-1') { alert("Check venligst din e-mail adresse"); document.afsend.email.select(); document.afsend.email.focus(); return false }
//findes emailen i databasen <% mail = Request.QueryString("mail") Set Conn = Server.CreateObject("ADODB.Connection") Database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/brugere.mdb") & ";UID=; PWD=;" Set rs = Conn.execute ("SELECT * FROM brugere WHERE mail='" & mail & "'") %> if (document.afsend.email.value.indexOf('') == '-1') { alert("E-mail adressen er registreret i vores database"); document.afsend.email.select(); document.afsend.email.focus(); return false } return true } //--> </SCRIPT>
Den nye er den findes email i datbasen, jeg har oprette lidt ligesom de andre, men hvordan gør jeg helt præcist herfra??
Du kan ikke tjekke det på den måde i JavaScript/ASP. Du kan tjekke om formatet på mailadressen er rigtigt. Derefter sender du formen (som om du vil til at gemme informationerne), men inden du gør det, laver du et tjek for om emailen er i databasen, hvis den er afbryder du "gem" funktionen.
Var det til at forstå, for jeg synes jeg har svært ved at forklare det???
Synes godt om
Slettet bruger
24. november 2004 - 15:54#2
ja den er til at forstå, men hvordan gør jeg så det, for så skal jeg vel gøre det i det dokument som formen bliver sendt til, der skal indsætte info i databasen.
Der tjekker du bare om den er optaget. Du har allerede vist noget af koden, så dette burde virke:
mail = Request.QueryString("mail") Set Conn = Server.CreateObject("ADODB.Connection") Database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/brugere.mdb") & ";UID=; PWD=;" Set rs = Conn.execute ("SELECT * FROM brugere WHERE mail='" & mail & "'") if not rs.eof then ' Email eksistere allerede i systemet response.write "Email er brugt" response.end else 'Email OK, så vi indsætter data. conn.execute("insert into brugere(....) values(....)") end if
... Du kan evt lave en redirekt tilbage til form siden, i stedet for at bare afbryde koden. Så skal du bare udskifte: response.write "Email er brugt"
med: response.redirect "formDide.asp?err=Email er brugt"
på form siden kan du så udskrive request.querystring("err") for at få fejlmeddelsen.
Synes godt om
Slettet bruger
24. november 2004 - 16:43#5
Nu har jeg sat følgende ind i den .asp fil det hele bliver sendt videre til
//findes emailen i databasen <% mail = Request.QueryString("email") Set Database = Server.CreateObject("ADODB.Connection") Database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/brugere.mdb") & "; UID=; PWD=;" Set rs = Database.execute ("SELECT * FROM Brugere WHERE Email='" & mail & "'") if not rs.eof then ' Email eksistere allerede i systemet response.redirect "default.asp?status=ForbrugerNyhedsbrev&err=E-mailen er allerede registreret i databasen" else %> her kommer den INSERT kode den ellers skal køre....
Problemet er at den redirecter alt, lige meget hvilken mail adresse man skriver bliver man smidt tilbage, hvad har jeg gjort forkert?? (Jeg har testet om email adressen er i databasen)
Det kan jeg ikke forstå. Du selecter kun de brugere hvor email='indtastet email'. Så tjekker du for om der nogle resultater. Hvis der er, redirecter du, ellers indsætter du.
Synes godt om
Slettet bruger
25. november 2004 - 09:26#7
Nej jeg er også lidt blank, men den retunerer altid tilbage til siden med at den er i databasen i forvejen.
Havd med koden i den fil hvor du gemmer oplysninger, er den også stor???
Synes godt om
Slettet bruger
25. november 2004 - 09:41#12
Nu gøre jeg det alligevel
Synes godt om
Slettet bruger
25. november 2004 - 09:41#13
Her er den side det bliver sendt fra, altså den med formen og Javascript tjekkene:
<script type="text/javascript" language="javascript"> <!-- function CheckForm () {
//kontroller at navn er udfyldt if (document.Nyhedsbrev.navn.value == ""){ alert("Skriv venligst dit navn"); document.Nyhedsbrev.navn.select(); document.Nyhedsbrev.navn.focus(); return false }
//kontroller at email er udfyldt og indeholder @ og punktum if (document.Nyhedsbrev.email.value.indexOf('@') == '-1' || document.Nyhedsbrev.email.value.indexOf('.') == '-1' || document.Nyhedsbrev.email.value.indexOf('.') == '-1') { alert("Check venligst din e-mail adresse"); document.Nyhedsbrev.email.select(); document.Nyhedsbrev.email.focus(); return false } return true } //--> </SCRIPT>
<table cellspacing="0" cellpadding="0" style="width: 100%;"> <tr> <td style="height: 3px;"></td> </tr> </table> <table style="width: 100%;"> <tr> <td style="background-image: url(grafik/baggrunde/blue.gif); height: 18px; border-top-width: 1px; border-top-color: #000000; border-top-style: solid; border-bottom-width: 1px; border-bottom-color: #000000; border-bottom-style: solid; text-align: left;"> <p class="white-12"><b> :: Nyhedsbrev</b></p> </td> </tr> <tr> <td> <img src="grafik/forbrugernyhedsbrev/banner-hvid-bg.gif" alt="" width="300" height="60" border="0"> <p class="black-12"> <br><br> Tilmeld dig vores forbruger nyhedsbrev, og få besked om ændringer og nye tiltag <br><br> </p> <p class="black-12"> Nyhedsbrevet udsendes ca. en gang pr. måned, og indeholder informationer om nye tiltag på , evt. nyt fra butikkerne, liste over nyeste butikker som er blevet tilmeldt og evt. tilbud fra butikkerne. <br><br> Nyhedsbrevet kan indeholde reklamer, hvilket du accepterer ved at udfylde nedenstående form. Nyhedsbrevet kan til enhver tid afmeldes igen. </p> <br><br> <% If request.querystring("err") <> "" then Response.write("<p class="black-12">"request.querystring("err")"</p>") %> <form action="ForbrugerNyhedsbrevSendconfirm.asp" name="Nyhedsbrev" id="Nyhedsbrev" method="post" onSubmit="return CheckForm();">
'henter filen hvor html mailen er i Set fso = CreateObject("Scripting.FileSystemObject") filespec = Server.Mappath("/mails/ForbrugerNyhedsbrevConfirm.html") Set f = fso.OpenTextFile(filespec,1) do while not f.AtEndOfStream body = body + f.readline loop
'erstatter tekst i html body = replace(body,"//NAVN//",Navn) body = replace(body,"//E-MAIL//",Recipient) body = replace(body,"//LINK//",Link)
call Sendmail(sendername, sender, subject, recipient, body, priority , stil) response.redirect "default.asp?status=ForbrugerNyhedsbrevSendt" %> <% end if %>
Det er helt i orden. ´ Point er ikke så vigtigt, og du løste jo også problemet selv :o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.