Avatar billede Slettet bruger
24. november 2004 - 15:07 Der 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??
Avatar billede fennec Nybegynder
24. november 2004 - 15:29 #1
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???
Avatar billede 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.
Avatar billede fennec Nybegynder
24. november 2004 - 16:00 #3
Jeps.

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
Avatar billede fennec Nybegynder
24. november 2004 - 16:04 #4
... 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.
Avatar billede 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)
Avatar billede fennec Nybegynder
25. november 2004 - 08:27 #6
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.
Avatar billede 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.
Avatar billede fennec Nybegynder
25. november 2004 - 09:33 #8
Kan/vil du vise hele koden fra begge filer??
Avatar billede Slettet bruger
25. november 2004 - 09:35 #9
Det kan jeg nok godt men det fylder sindsygt meget hvis jeg poster det her.
Avatar billede fennec Nybegynder
25. november 2004 - 09:38 #10
så gør det ikke...
Avatar billede fennec Nybegynder
25. november 2004 - 09:39 #11
Havd med koden i den fil hvor du gemmer oplysninger, er den også stor???
Avatar billede Slettet bruger
25. november 2004 - 09:41 #12
Nu gøre jeg det alligevel
Avatar billede 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>&nbsp;:: 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();">
       
        <table>
            <tr>
                <td style="width: 125px"><p class="black-12">Navn:</p></td>
                <td><input type="text" name="navn" id="navn" size="25" style="border: 1 solid Black; width: 180px;"></td>
            </tr>
            <tr>
                <td><p class="black-12">E-mail adresse:</p></td>
                <td><input type="text" name="email" id="email" size="25" style="border: 1 solid Black; width: 180px;"></td>
            </tr>
            <tr>
                <td></td>
                <td style="text-align: right"><input name="submit" type="image" id="submit" src="grafik/knapper/tilmeld.gif"></td>
            </tr>
        </table>
       
        </form>
        <form action="ForbrugerNyhedsbrevAfmeld.asp" method="post">
        <p class="black-12">
        <br>
        Hvis du ønsker at afmelde nyhedsbrevet skal du skrive din e-mail adresse i feltet nedenunder og trykke "Afmeld".
        <br><br>
        </p>
        <table>
            <tr>
                <td style="width: 125px"><p class="black-12">E-mail adresse:</p></td>
                <td><input type="text" name="email" size="25" style="border: 1 solid Black; width: 180px;"></td>
            </tr>
            <tr>
                <td></td>
                <td style="text-align: right"><input type="image" src="grafik/knapper/afmeld.gif"></td>
            </tr>
        </table>
       
        </form>
        <br>
       
        </td>
    </tr>
</table>
Avatar billede Slettet bruger
25. november 2004 - 09:43 #14
Her er den der modtager og registrere oplysningerne:

<%
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
response.redirect "default.asp?err=E-mailen er allerede registreret i databasen"

else

        set Database= Server.CreateObject("ADODB.Connection")
        Database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/brugere.mdb") & "; UID=; PWD=;"
        sql = "INSERT INTO brugere (navn,email) VALUES ('"&request.form("navn")&"','"&request.form("email")&"');"
        Database.Execute(sql)
        Database.Close
%>
<!--#include file="include/mailsend.inc"-->
<%
SendersName            = "nyhedsbrev"
sender                 = "nyhedsbrev@xxx.dk"
Subject             = "nyhedsbrev"
Recipient             = request.form("email")
Navn                 = request.form("navn")
Priority             = 3
stil                 = "text/html"
Link                = "<a href='default.asp?status=ForbrugerNyhedsbrevGodkendt&mail="&Recipient&"'>her</a>"

'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 %>
Avatar billede fennec Nybegynder
25. november 2004 - 10:13 #15
Jeg kikke på det om et par timer da jeg ikke har tid lige nu.
Avatar billede Slettet bruger
25. november 2004 - 17:06 #16
Jeg har fundet fejlen, ellers tak for hjælpen.

Den tog ikke variablen email adresse ordentligt med.
Avatar billede fennec Nybegynder
26. november 2004 - 08:38 #17
Fint nok :o)
og undskyld jeg ikke fik kikket på det, men jeg havde simpelthen ikke tid til det.
Avatar billede Slettet bruger
26. november 2004 - 09:09 #18
Sådan går det jo, hov troede jeg havde givet dig halvdelen af pointene, men du har ikke lagt noget svar kan jeg se.
Avatar billede fennec Nybegynder
26. november 2004 - 09:12 #19
Det er helt i orden. ´
Point er ikke så vigtigt, og du løste jo også problemet selv :o)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester