Avatar billede bimmer123 Nybegynder
16. april 2006 - 20:16 Der er 13 kommentarer og
2 løsninger

SQL fejl, løsning er tiltrængt hurtigts muligt!

Jeg får en Intern server fejl når jeg prøve at køre dette script, men jeg kan simpelthen ikke finde fejlen. Her er 200 nemme point til den der kan finde fejlen i en fart...

Har prøvet med On error resume next, og scriptet ser ud til at fungerer fint, men kan bare opdatere databasen...

Har også prøvet at skrive indholdet at variablerne ud på skærmen men indholdet bliver fint hentet med over fra formen...

<%

pIdCart = request.Form("cart")
pFornavn = request.Form("fornavn")
pEfternavn = request.Form("efternavn")
pEmail = request.Form("email")
pTelefon = request.Form("telefon")
pAdresse = request.Form("adresse")
pBy = request.Form("by")
pPostnr = request.Form("postnr")

' validation
if pFornavn="" or pEfternavn="" or pEmail="" or pTelefon="" or pAdresse="" or pBy="" or pPostnr="" then
response.write "Udfyld venligts alle felter" 
end if

' Her oprettes forbindelsen
Set DataConn = Server.CreateObject("ADODB.Connection")
conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=***Den her fungerer fint, så det er ikke fejlen***"
DataConn.Open conStr

' Her laver du din SQL statement
DataConn.Execute "INSERT INTO kunder (fornavn, efternavn, email, telefon, adresse, by, postnr, idCart) VALUES ('" & pFornavn & "','" & pEfternavn & "','" & pEmail & "','" & pTelefon & "','" & pAdresse & "','" & pBy & "','" & pPostnr & "','" & pIdCart & "')"

Set objRS = DataConn.Execute("SELECT * FROM kunder")

while not objRS.EOF

  strOutput = objRS("fornavn") & " " & objRS("efternavn")
  Response.Write Server.HTMLEncode(strOutput) & "<br>"
  objRS.Movenext
wend

' NB!!! Luk altid din forbindelse efter brug.
' Det holder din forbindelse stabil og frigøres
' samtidig hukommelse på serveren.
objRS.Close
DataConn.Close
Set objRS = Nothing
Set DataConn = Nothing


Response.Write "Succes!!!"

%>
Avatar billede hmortensen Nybegynder
16. april 2006 - 20:28 #1
By er et reserveret SQL ord, så du skal enten omdøbe feltet eller sætte klammer om:
[by]
Avatar billede bimmer123 Nybegynder
16. april 2006 - 21:09 #2
hmm...
Nu har jeg omdøbt by til city igennem hele scriptet, men det har ikke hjulpet på problemet...
Avatar billede hmortensen Nybegynder
16. april 2006 - 21:13 #3
Hvad får du af fejl?
Du kan få IE til at vise fejlen:
Funktioner -> Internetinstillinger -> Avanceret. Fjern flueben i Vis venlige HTTP-fejl.
Avatar billede bimmer123 Nybegynder
16. april 2006 - 21:23 #4
Arh, nu har jeg luret problemet...

Scriptet kører videre hvis man laver en fejl, ved indtastning af data...
Og trykker man så tilbage for at udfylde formen igen går det galt...
Avatar billede thesurfer Nybegynder
16. april 2006 - 22:59 #5
Løsning:

<%
if request.servervariables("request_method") = "POST" then

' der er postet.. indsæt din kode her..

%>

/theSurfer
Avatar billede thesurfer Nybegynder
16. april 2006 - 23:02 #6
Din validation bør ændres, så der ikke afvikles mere, når der er tomme felter..

F.eks.:

<%
if request.servervariables("request_method") = "POST" then

pIdCart = request.Form("cart")
pFornavn = request.Form("fornavn")
pEfternavn = request.Form("efternavn")
pEmail = request.Form("email")
pTelefon = request.Form("telefon")
pAdresse = request.Form("adresse")
pBy = request.Form("by")
pPostnr = request.Form("postnr")

' validation
if pFornavn="" or pEfternavn="" or pEmail="" or pTelefon="" or pAdresse="" or pBy="" or pPostnr="" then
  response.write "Udfyld venligts alle felter"
else

' der er postet.. indsæt din kode her..
' til og med sidste linie:
Response.Write "Succes!!!"


end if ' hører til validation
%>

/theSurfer
Avatar billede cyberkox Nybegynder
17. april 2006 - 07:08 #7
Og så ska det hele lige afsluttes med et "end if" til IF request_methoed = POST ;)
Avatar billede thesurfer Nybegynder
17. april 2006 - 12:20 #8
Yep :-)

<%
if request.servervariables("request_method") = "POST" then

pIdCart = request.Form("cart")
pFornavn = request.Form("fornavn")
pEfternavn = request.Form("efternavn")
pEmail = request.Form("email")
pTelefon = request.Form("telefon")
pAdresse = request.Form("adresse")
pBy = request.Form("by")
pPostnr = request.Form("postnr")

' validation
if pFornavn="" or pEfternavn="" or pEmail="" or pTelefon="" or pAdresse="" or pBy="" or pPostnr="" then
  response.write "Udfyld venligts alle felter"
else

' der er postet.. indsæt din kode her..
' til og med sidste linie:
Response.Write "Succes!!!"


end if ' hører til validation

end if ' hører til request.servervariables("request_method")
%>

/theSurfer
Avatar billede bimmer123 Nybegynder
17. april 2006 - 18:24 #9
> theSurfer

Tak for det men, jeg løste det ved bare at lave en else statement lige under validation delen. Det er jo også det du har vist kan jeg se men det med request.servervariables("request_method") kan jeg ikke se der er brug for.

Men det der virkelig hjalp mig på vej var at ændre opsætning af IE så jeg kan se fejlkoder, så hmortensen hvis du lige laver et svar skal du få point...
Avatar billede hmortensen Nybegynder
17. april 2006 - 18:28 #10
Vi kan da dele ;)
Avatar billede bimmer123 Nybegynder
17. april 2006 - 18:31 #11
det er op til jer, surfer lav et svar så du også kan få en bid af kagen...
Avatar billede thesurfer Nybegynder
17. april 2006 - 18:38 #12
Linien ( if request.servervariables("request_method") = "POST" then ) kontrollerer om man har submittet formen.
Hvis man ikke har det, er der overhovedet ikke noget at arbejde med..

- Svar

/theSurfer
Avatar billede thesurfer Nybegynder
17. april 2006 - 18:45 #13
.. og lidt mere:

Hvis du bare bruger pIdCart = request.Form("cart") eller ligende, når der ikke er submittet data, vil der være fejl..

I nogle tilfælde er det MEGET vigtigt at kontrollere..

Eksempel:

Du bruger 1 side, med en form hvor dine brugere kan kontakte dig. Koden ligner lidt det her:

<%

Set JMail = Server.CreateObject("JMail.SMTPMail")

JMail.AddRecipient request.form("tilemail")
..osv..
JMail.execute
response.write "mail er sendt."

%>

Hvis siden loades, vil der opstå en fejl i denne linien (egentligt i "JMail.execute"?)

JMail.AddRecipient request.form("tilemail")

da der ikke er postet nogen data.

For at undgå fejl, kan man gøre sådan:

<%
if request.servervariables("request_method") = "POST" then

Set JMail = Server.CreateObject("JMail.SMTPMail")

JMail.AddRecipient request.form("tilemail")
..osv..
JMail.execute
response.write "mail er sendt."

end if

%>

Man kunne også tilføje en ELSE til IF-blokken, så man kan vise formen, hvis man ikke har submittet..

<%
if ... then
' alt er ok, send mail
else
' siden er loadet, uden at være submittet
%>

<form ....>
<input...
...
</form>

<%
end if
%>

/theSurfer
Avatar billede thesurfer Nybegynder
17. april 2006 - 18:47 #14
Jeg ved godt at der er fejl i mit eksempel.. din email adresse ville jo være fast (recipient)..
Men hvis det var Sender i stedet for recipient, ville der opstår fejl..

Der er sikkert også bedre eksempler, men jeg kom i tanke om mail.. :-)

/theSurfer
Avatar billede thesurfer Nybegynder
17. april 2006 - 18:47 #15
Takker for points :-)

/theSurfer
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