Avatar billede mcp_dk Nybegynder
15. november 2004 - 13:54 Der er 5 kommentarer og
1 løsning

validering af felter i Formular

Hej eksperter

jeg skal lave en konkurrence på nettet og har i den anledning lavet mig et script som folk kan udfylder for at være med i konkurrencen. Dog er det vigtigt at folk udfylder alle felter i formularen + at der skal laves et check på om mailadressen allerede har tilmeldt sig adresse hvorefter svaret skal afvises.
jeg har sat felterne i access databasen til obligatorisk=ja tillad nullængde=nej og emailfeltet er sat ti "indekseret - Ja ingen dubletter"

Det skal lige siges at jeg er n00b til programmering og meget scriptet er henten på en "free scripts" side og tilpasset..

sådan ser min form ud
---------------------------
    <form method="post" action="received.asp">
<font face="Arial" size="3">
<input type="hidden" name="subject" value="<%= title %>">
            </font>
            <tr>
                <td width="346" valign="top"><font face="Arial">Answer (A,B or C)<br>
                </font><font face="Arial" size="3">
<input type="text" name="u_7svar" size="1"></font></td>
                <td width="50%" valign="top">&nbsp;</td>
            </tr>
            <tr>
                <td width="346" valign="top"><font face="Arial">First Name<br>
                </font><font face="Arial" size="3">
<input type="text" name="u_1name" size="30"></font></td>
                <td width="50%" valign="top"><font face="Arial">Last Name<br>
                </font><font face="Arial" size="3">
<input type="text" name="u_2name" size="30"></font></td>
            </tr>
            <tr>
                <td valign="top" colspan="2"><font face="Arial">Adress<br>
                </font><font face="Arial" size="3">
<input type="text" name="u_3adresse" size="30"></font></td>
            </tr>
            <tr>
                <td width="346" valign="top"><font face="Arial">Areacode<br>
                </font><font face="Arial" size="3">
<input type="text" name="u_4areacode" size="10"></font></td>
                <td width="50%" valign="top"><font face="Arial">City <br>
                </font><font face="Arial" size="3">
<input type="text" name="u_4city" size="30"></font></td>
            </tr>
            <tr>
                <td width="346" valign="top"><font face="Arial">Email<br>
                </font><font face="Arial" size="3">
<input type="text" name="u_6epost" size="30"></font><font face="Arial"><br>
&nbsp;</font></td>
                <td width="50%" valign="top"><font face="Arial">Country<br>
                </font><font face="Arial" size="3">
<input type="text" name="u_5land" size="30"></font></td>
            </tr>
            <tr>
                <td width="346" valign="top">
<font face="Arial" size="3">
<input type="submit" value="Submit"></font></td>
                <td width="50%" valign="top">&nbsp;</td>
            </tr>
            <tr>
                <td valign="top" colspan="2"></td>
            </tr>
            </form></td>
--------------------------------------

og sådan her ser den fil ud som modtager formen.

------------------------------------------
<html>
<head>
</head>
<body link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF" text="#FFFFFF" bgcolor="#000000">
<% u_1name=request.form("u_1name")
  u_2name=request.form("u_2name")
  u_3adresse=request.form("u_3adresse")
  u_4areacode=request.form("u_4areacode")
  u_4city=request.form("u_4city")
  u_5land=request.form("u_5land")
  u_6epost=request.form("u_6epost")
  u_7svar=request.form("u_7svar")
%>

<%
accessdb="testinputdb"
cn="DRIVER={Microsoft Access Driver (*.mdb)};"
cn=cn & "DBQ=" & server.mappath(accessdb)
set rs = server.createobject("ADODB.Recordset")

SQL = "insert into testtable (1name, 2name, 3adresse, 4areacode, 4city, 5land, 6epost, 7svar) "

SQL = SQL & "values ('" & u_1name
SQL = SQL & "','" & u_2name
SQL = SQL & "','" & u_3adresse
SQL = SQL & "','" & u_4areacode
SQL = SQL & "','" & u_4city
SQL = SQL & "','" & u_5land
SQL = SQL & "','" & u_6epost
SQL = SQL & "','" & u_7svar & "')"

    rs.Open sql, cn
%><font face="arial" size="2">Thank you for entering our Competition. The winners will be contacted by E-mail<br>
</font>
</body>
</html>

-------------------------------------

1) jeg vil gerne have den til at sige noget i retning af "Alle felter er ikke udfyldt. Gå tilbage og udfyld resten" eller noget lignende.

2) Hvis emailadressen allerede findes i databasen skal den sige "du har allerede deltaget i konkurrencen."

Jeg håber nogen kan hjælpe mig.
Avatar billede michaelfp Nybegynder
15. november 2004 - 23:51 #1
Funktion, som viser fejlbesked;

  Function Visfejl(message)
    %>
    <SCRIPT>
    alert('<%=message%>');
    </SCRIPT>
    <%
  end Function

Funktion som validere om alle felter er udfyldt:

  Funktion validateform
    if not isnull(Request.form("u_1name")) and (request.form("u_1name") <> "") And
      not isnull(request.form("u_2name")) and (request.form("u_2name") <> "") and.. Then
    Visfejl " Et eller flere felter er ikke udfyldt!"
    validateform = false
else
    validateform = true
  End function


Funktion som chekker om email er anvendt:

  Function ValidateEmail(em)
  Dim Rs, Found
    ...du skal åbne en coooenction til din db
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open "testtable", conn, 3, 3
    ' du skal sikre dig at feltet i tabellen virtkelig hedder email!
    Found = False
    While Rs.EOF and not found Do
      If Rs("email") = em Then
        Found = True
      Else
        Rs.Movenext
      End if
    Loop
    validateemail = Found
    If Found Then
      Visfejl " Den indtastede emailadresse hár allerede deltaget!"
    End if
  End function

Nederst i din kode skal du så:

  If validateform And validateemail request.form("u_6epost") then
    rs.Open sql, cn
  End if
Avatar billede michaelfp Nybegynder
15. november 2004 - 23:53 #2
Nej:

det skal være

  If validateform And not validateemail request.form("u_6epost") then
    rs.Open sql, cn
  End if
Avatar billede mcp_dk Nybegynder
16. november 2004 - 09:31 #3
skal det skrives i selve formen eller i recieved.asp (den som modtager formen) ?? skal det bare indføres i toppen af siden?
Avatar billede michaelfp Nybegynder
16. november 2004 - 20:37 #4
Jeg foreslår du sætter det ind på den side som modtager formen. Koden indsættes i <Body>.
Avatar billede michaelfp Nybegynder
21. november 2004 - 13:39 #5
skal vi have lukket spørgsmålet - eller fik du ikke problemet løst?
Avatar billede mcp_dk Nybegynder
22. november 2004 - 09:47 #6
hej Michael

Jeg fik en til at hjælpe mig med at lave det i fredags. Han brugte noget af det kode du foreslog så du får lige lidt point. tak for hjælpen.
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