Avatar billede hjemmeskoen Nybegynder
20. april 2005 - 21:35 Der er 8 kommentarer og
1 løsning

Skjul Zero Length

Hejsa.

Jeg har lavet et system hvor der er nogle felter der skal udfyldes. Og i det system har jeg så gjot sådan at hvis felter ikke er udfyldt gives der en fejl:

<b><font color="red">
<% if Request.Form("titel") = "" Then response.write "Du skal skrive en overskrift.<br>" end if%>
<% if Request.Form("Nyhed") = "" Then response.write "Du skal skrive en nyhed.<br>" end if%>
<% if Request.Form("Billede") = "" Then response.write "Du skal angive et billede.<br>" end if%>
</font></b>

Men nu er problemet så bare at den samtidig viser en anden fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Field 'nyheder.Titel' cannot be a zero-length string.

/Nyheder/Skriv.asp, line 34


Så det kommer til at se således ud:


Du skal skrive en overskrift.
Du skal skrive en nyhed.

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Field 'nyheder.Titel' cannot be a zero-length string.

/Nyheder/Skriv.asp, line 34


Så jeg ville høre hvordan man kan skjule den fejl der med Zero-Length?
Avatar billede cpufan Juniormester
20. april 2005 - 21:40 #1
du sætter din sql-insert execute inden i en betingelse:

if Request.Form("titel") <> "" and Request.Form("Nyhed") <> "" and Request.Form("Billede") <> "" then
conn.execute(dinsql)
end if
Avatar billede moejensen Nybegynder
20. april 2005 - 21:40 #2
det skyldes sikkert at du stadig forsøger at indsætte felternes værdier i databsen selvom de er tomme
Avatar billede cpufan Juniormester
20. april 2005 - 21:41 #3
og der skal måske lidt paranteser på:

if (Request.Form("titel") <> "") and (Request.Form("Nyhed") <> "") and (Request.Form("Billede") <> "") then
conn.execute(dinsql)
end if
Avatar billede moejensen Nybegynder
20. april 2005 - 21:42 #4
Hvis det skal være helt rigtigt burde du lavet det tjek på felterne ved hjælp af javascript på clienten. Der er ingen grund til at sende hele din form over til serveren for at den skal sende en side retur hvor der står at nogle felter ikke er udfyldt.
Avatar billede hjemmeskoen Nybegynder
20. april 2005 - 21:51 #5
Hvis så man skal skrive noget skal det så se således ud:

if (Request.Form("titel") <> "Tekst her") and (Request.Form("Nyhed") <> "Tekst her") and (Request.Form("Billede") <> "Tekst her") then
conn.execute(dinsql)
end if

Eller er det umuligt i denne kode?
Avatar billede cpufan Juniormester
21. april 2005 - 10:50 #6
nej så skal det se sådan ud:

if (Request.Form("titel") <> "") and (Request.Form("Nyhed") <> "") and (Request.Form("Billede") <> "") then
conn.execute(dinsql)
end if

den tjekker på at felterne er forskellig fra ingenting, og kun hvis de alle 3 er forskellige fra ingenting, bliver sql eksekveret.
Avatar billede cpufan Juniormester
21. april 2005 - 10:54 #7
du kan også bare gøre sådan i din nuværende kode:

<b><font color="red">
<% tjektal = 0 %>
<% if Request.Form("titel") = "" Then
response.write "Du skal skrive en overskrift.<br>"
tjektal = 1
end if%>
<% if Request.Form("Nyhed") = "" Then
response.write "Du skal skrive en nyhed.<br>"
tjektal = 1
end if%>
<% if Request.Form("Billede") = "" Then
response.write "Du skal angive et billede.<br>"
tjektal = 1
end if%>
</font></b>
<% if tjektal = 0 then
conn.execute(sql)
end if %>
Avatar billede hjemmeskoen Nybegynder
21. april 2005 - 13:23 #8
Hu? :S

Kan ikke finde ud af hvordan dulan jeg skal smide det ind i:

<html>
<!--#Include file="../Plus/title.asp"-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title><%=titlen%></title>
<link rel="stylesheet" href="../Skrift/css.css">
<form method="post" action="Skriv.asp">
</head>

<!--#include file="../Plus/beskyt.asp" -->
<!--#include file="../Plus/Tjek.asp" -->
<!-- #include file = "../Plus/Online.asp" -->
<!--#Include file="../Plus/Tid.asp"-->
<!--#Include file="../Moentsystem/moenter.asp"-->
<b><font color="red">
<% if Request.Form("titel") = "" Then response.write "Du skal skrive en overskrift.<br>" end if%>
<% if Request.Form("Nyhed") = "" Then response.write "Du skal skrive en nyhed.<br>" end if%>
<% if Request.Form("Billede") = "" Then response.write "Du skal angive et billede.<br>" end if%>
</font></b>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
' Husk at angive den rigtige sti til din database
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/Nyheder.mdb")
' Åben databaseforbindelsen
Conn.Open DSN
Forfatter = session("brugernavn")
Brugerid = session("id")
ip = Request.ServerVariables("REMOTE_ADDR")
tekst = Replace(Request.form("Nyhed"), VbCrlf, "<br>")
dato =  DanskDatoTid(Now)
strSQL = "INSERT INTO nyheder (titel,brugerid,nyhed,dato,billede,forfatter,ip) VALUES('" & Request.Form("titel") & "','" & Brugerid & "','" & tekst & "','" & dato & "','" & Request.Form("billede") & "','" & Forfatter & "', '" & ip & "')"
Conn.Execute(strSQL)
response.redirect("../Forside.asp")
Set conn = Nothing
%>


Hjælp :)
Avatar billede hjemmeskoen Nybegynder
24. april 2005 - 19:52 #9
Tror bare jeg opgiver det der. ellers 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