Avatar billede jensch Nybegynder
20. marts 2001 - 20:10 Der er 32 kommentarer og
3 løsninger

Fejl hvis et felt i formularen ikke er udfyldt

Jeg har en formular til en gæstebog den sender navn, email, og teksten videre til en Access database. Hvis en af felterne ikke er udfyldt kommer der en fejl, ikke særlig smart hvis en bruger ønsker at lilføje noget til gæstebogen uden at oplyse e-mail. Man burde vel bare kunne overføre en tom streng til dette felt i databasen. Så hvordan undgår jeg denne fejlmeddelelse ? Koden er som følger:

<%

Const adOpenKeyset = 1
Const adLockOptimistic = 3

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"

    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"Select * From gaestebogen\"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs(\"Navn\") = Request.form(\"Navn\")
      rs(\"Email\") = Request.form(\"Email\")
      rs(\"Besked\") = Request.form(\"Besked\")
        rs(\"Dato\") = date()
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
%>
Avatar billede keysersoze Ekspert
20. marts 2001 - 20:10 #1
det skal du gøre fra databasen..
Avatar billede netsrac Praktikant
20. marts 2001 - 20:12 #2
Du skal i databasen sætte feltet til at måtte indeholde null værdier.
Avatar billede keysersoze Ekspert
20. marts 2001 - 20:12 #3
hvis du har et tekstfelt skal:

oblikatorisk stå til NEJ
TilladNulLænge stå til JA
Avatar billede bjarke-b Nybegynder
20. marts 2001 - 20:12 #4
<%

Const adOpenKeyset = 1
Const adLockOptimistic = 3

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"

    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"Select * From gaestebogen\"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs(\"Navn\") = Request.form(\"Navn\")& \"&nbsp\"
      rs(\"Email\") = Request.form(\"Email\")& \"&nbsp\"
      rs(\"Besked\") = Request.form(\"Besked\")& \"&nbsp\"
        rs(\"Dato\") = date()
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing
%>
Avatar billede netsrac Praktikant
20. marts 2001 - 20:13 #5
bjarke-b >> Hvad er det ? Et hack ? :-)
Avatar billede bjarke-b Nybegynder
20. marts 2001 - 20:14 #6
en alternaitv måde, eller er det bare mig der tåger
Avatar billede netsrac Praktikant
20. marts 2001 - 20:15 #7
Det strider mod normal datastruktur, da man så ikke kan lave udtræk på hvilke felter der indeholder null, men okay, det kan vel bruges i denne sammenhæng.
Avatar billede jensch Nybegynder
20. marts 2001 - 20:38 #8
Jeg må give keysersoze ret, det er nok art rette det i database. Jeg er ikke intereseret i at gemme indlæg uden tekst, så hvis man kunne chekke for det og så sende brugeren hen på en anden side med en besked om at rette det indtastede ved at klikke tilbage ville det være rigtig godt. Har i et bud på det ?
Avatar billede netsrac Praktikant
20. marts 2001 - 20:41 #9
if request.form(\"navn\") = \"\" OR request.form(\"besked\") = \"\" then
response.write(\"navn og email skal udfyldes\")
else

Const adOpenKeyset = 1
Const adLockOptimistic = 3

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"

    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"Select * From gaestebogen\"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs(\"Navn\") = Request.form(\"Navn\")& \"&nbsp\"
      rs(\"Email\") = Request.form(\"Email\")& \"&nbsp\"
      rs(\"Besked\") = Request.form(\"Besked\")& \"&nbsp\"
        rs(\"Dato\") = date()
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing

end if
Avatar billede jensch Nybegynder
20. marts 2001 - 20:42 #10
Jeg er ikke intereseret i at gemme indlæg uden tekst //// eller navn !
Avatar billede netsrac Praktikant
20. marts 2001 - 20:47 #11
Det er præcis hvad den kode som jeg lige skrev ikke gør!

Se disse linier:
if request.form(\"navn\") = \"\" OR request.form(\"besked\") = \"\" then
response.write(\"navn og email skal udfyldes\")
else
Avatar billede jensch Nybegynder
20. marts 2001 - 20:55 #12
Ja tak det virker nogenlunde, men teksten står kun et øjeblik, og man kommer videre til gæstebogen. Kan man få en advarsel hvor man skal klikke ok, og så igen \"stå\" på indtastningsbillede ?
Avatar billede netsrac Praktikant
20. marts 2001 - 20:58 #13
Så må du have mere i din kode end det der står her ?
Avatar billede jensch Nybegynder
20. marts 2001 - 21:00 #14
Ok, det var heller ikke fordi jeg ikke forstod din kode, jeg havde bare sendt det ekstra, hvor du så ind imellem havde sendt et svar :-)
Avatar billede netsrac Praktikant
20. marts 2001 - 21:04 #15
Virker det så nu ?
Avatar billede jensch Nybegynder
20. marts 2001 - 21:14 #16
Ja det virker, men jeg tænkte på om man kunne bytte rundt så =\"\" blev til <>\"\"
Så kunne man springe ned i bunde med else og her kun have tekste med at navn osv skal udfyldes. Nu er det sådan at man både ser \"tak for dit indlæg\" og \"Navn og Tekst skal udfyldes\"
Avatar billede netsrac Praktikant
20. marts 2001 - 21:15 #17
if request.form(\"navn\") <> \"\" OR request.form(\"besked\") <> \"\" then

Const adOpenKeyset = 1
Const adLockOptimistic = 3

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"

    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"Select * From gaestebogen\"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs(\"Navn\") = Request.form(\"Navn\")& \"&nbsp\"
      rs(\"Email\") = Request.form(\"Email\")& \"&nbsp\"
      rs(\"Besked\") = Request.form(\"Besked\")& \"&nbsp\"
        rs(\"Dato\") = date()
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing

else

response.write(\"navn og email skal udfyldes\")

end if
Avatar billede jensch Nybegynder
20. marts 2001 - 21:19 #18
Præsis, Tak for din hjælp
Avatar billede netsrac Praktikant
20. marts 2001 - 21:21 #19
Det var så lidt :-)
Avatar billede jensch Nybegynder
20. marts 2001 - 21:34 #20
Jeg kom til at tænke på at det må være
if request.form(\"navn\") <> \"\" AND request.form(\"besked\") <> \"\" then

Ok ikke OR  men \"den\" er sku ligeglad, nu er det nok bare en af felterne er udfyldt suk.
Avatar billede netsrac Praktikant
20. marts 2001 - 21:37 #21
Ja det er rigtigt det skal være AND istedet.
Avatar billede jensch Nybegynder
20. marts 2001 - 21:38 #22
Nå nu har jeg det !

Det skal være And og ikke AND :-)
Avatar billede netsrac Praktikant
20. marts 2001 - 21:41 #23
Det burde ikke gøre nogen forskel da ASP da heldigvis ikke er Case-sensitive.
Avatar billede jensch Nybegynder
20. marts 2001 - 21:43 #24
Næ jeg forstår det heller ikke men nu virker det som det skal.
Avatar billede netsrac Praktikant
20. marts 2001 - 21:45 #25
Det er jo det vigtigste :-)
Avatar billede jensch Nybegynder
20. marts 2001 - 21:45 #26
Kan jeg forøvrigt sætte en forsinkelse ind og gøre teksten større ??
Avatar billede netsrac Praktikant
20. marts 2001 - 21:48 #27
En forsinkelse på hvad ?
Avatar billede jensch Nybegynder
20. marts 2001 - 21:51 #28
response.write(\"navn og email skal udfyldes\")
Avatar billede netsrac Praktikant
20. marts 2001 - 21:55 #29
Forsinkelse, ved jeg ikke lige hvad formålet skulle være med ?

response.write(\"<font size=\'5\'>navn og email skal udfyldes</font>\")

Avatar billede jensch Nybegynder
20. marts 2001 - 21:59 #30
Får at folk kan nå at se beskeden inde de vender tilbage til oversigten, ellers sider de måske og fårstår ikke hvorfor deres indlæg ikke kom med.
Avatar billede netsrac Praktikant
20. marts 2001 - 22:01 #31
Du må jo have mere i din kode siden de vender tilbage til oversigten ? Jeg kan ikke se noget i den kode som ligger her der skulle få folk til at vende tilbage til oversigten ?
Avatar billede jensch Nybegynder
20. marts 2001 - 22:05 #32
ja
<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=gaest.asp\">
Avatar billede netsrac Praktikant
20. marts 2001 - 22:09 #33
Fjern den du har nu og brug

if request.form(\"navn\") <> \"\" OR request.form(\"besked\") <> \"\" then

Const adOpenKeyset = 1
Const adLockOptimistic = 3

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"

    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"Select * From gaestebogen\"
    rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic

      rs.AddNew
      rs(\"Navn\") = Request.form(\"Navn\")& \"&nbsp\"
      rs(\"Email\") = Request.form(\"Email\")& \"&nbsp\"
      rs(\"Besked\") = Request.form(\"Besked\")& \"&nbsp\"
        rs(\"Dato\") = date()
      rs.Update

    rs.Close
    Set rs = Nothing

Conn.Close
set Conn = Nothing %>
<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=gaest.asp\">
<%else %>
<META HTTP-EQUIV=\"Refresh\" CONTENT=\"10;URL=gaest.asp\">
navn og email skal udfyldes
<% end if %>
Avatar billede jensch Nybegynder
20. marts 2001 - 22:13 #34
Ja meget fint tak for alt, jeg skal ikke tag mere af din tid.
Avatar billede netsrac Praktikant
20. marts 2001 - 22:15 #35
Så lidt :-)
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

IT-JOB