Avatar billede ktad Nybegynder
20. oktober 2009 - 23:10 Der er 26 kommentarer og
1 løsning

Problemer med tilføjelse af data fra formular til DB

Hej

Er der nogle der vil hjælpe mig med at finde problemet med nedenstående kode, kan ikke få den til at tilføje data til databasen efter jeg har tilføjet den skal tage flere felter fra den forudgående formular. Laver jeg en enkelt insert info sætning med kun et request.form virker det fint og den indsætter data, men efter jeg har ændret til at den skal tage flere funker det ikke rigtigt. Håber en kan rette koden til så det vil virke.

På forhånd tak.

<!--#include file="database_con.asp"-->
<%
strSQL = "Insert into tblTilmeldinger ("

strSQL = strSQL & "Medlemsnummer, "
strSQL = strSQL & "Spillernavn, "
strSQL = strSQL & "Klub, "
strSQL = strSQL & "Snit, "
strSQL = strSQL & "Raekke, "
strSQL = strSQL & "Bemaerkninger)"

strSQL = strSQL & "values('"
strSQL = strSQL & Request.Form("medlemsnummer"), "
strSQL = strSQL & Request.Form("spillernavn"), "
strSQL = strSQL & Request.Form("klub"), "
strSQL = strSQL & Request.Form("snit"), "
strSQL = strSQL & Request.Form("raekke"), "
strSQL = strSQL & Request.Form("bemaerkninger") & "')"

' SQL sætning eksekveres
Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
<h1>Din tilmelding er nu registreret</h1>
</body>
</html>
Avatar billede w13 Novice
21. oktober 2009 - 00:08 #1
Du får vel en fejlmeddelelse eller en "Siden kan ikke vises"? Det fortæller, hvori fejlen består.

Men mon ikke, du bare skal rette:

strSQL = strSQL & "Medlemsnummer, "
strSQL = strSQL & "Spillernavn, "
strSQL = strSQL & "Klub, "
strSQL = strSQL & "Snit, "
strSQL = strSQL & "Raekke, "
strSQL = strSQL & "Bemaerkninger)"

strSQL = strSQL & "values('"
strSQL = strSQL & Request.Form("medlemsnummer"), "
strSQL = strSQL & Request.Form("spillernavn"), "
strSQL = strSQL & Request.Form("klub"), "
strSQL = strSQL & Request.Form("snit"), "
strSQL = strSQL & Request.Form("raekke"), "
strSQL = strSQL & Request.Form("bemaerkninger") & "')"

til:

strSQL = strSQL & "Medlemsnummer, "
strSQL = strSQL & "Spillernavn, "
strSQL = strSQL & "Klub, "
strSQL = strSQL & "Snit, "
strSQL = strSQL & "Raekke, "
strSQL = strSQL & "Bemaerkninger)"

strSQL = strSQL & "values('"
strSQL = strSQL & Request.Form("medlemsnummer") &"', '"
strSQL = strSQL & Request.Form("spillernavn") &"', '"
strSQL = strSQL & Request.Form("klub") &"', '"
strSQL = strSQL & Request.Form("snit") &"', '"
strSQL = strSQL & Request.Form("raekke") &"', '"
strSQL = strSQL & Request.Form("bemaerkninger") & "')"
Avatar billede w13 Novice
21. oktober 2009 - 00:09 #2
Ment som svar! :)
Avatar billede ktad Nybegynder
21. oktober 2009 - 07:42 #3
Har sat ovenstående rettelse ind nu og jeg får stadig "Internal server Error 500" - mere detaljeret får jeg ikke fejlen desværre.

Og igen som skrevet så opstår fejlen når jeg sætter flere felter på den skal skrive til DB.
Avatar billede w13 Novice
21. oktober 2009 - 09:27 #4
Hvilken browser bruger du? Du kan slå visning af fejlbeskeder fra/til i indstillinger. I en dansk Internet Explorer hedder det vist noget i stil med "Slå visning af brugervenlige fejlbeskeder fra/til". Og det, du ser nu, er vist en "brugervenlig" fejlbesked, så der skal vist ikke være et kryds i feltet.

Måske skyldes fejlen et manglende mellemrum før VALUES:

strSQL = strSQL & "Medlemsnummer, "
strSQL = strSQL & "Spillernavn, "
strSQL = strSQL & "Klub, "
strSQL = strSQL & "Snit, "
strSQL = strSQL & "Raekke, "
strSQL = strSQL & "Bemaerkninger)"

strSQL = strSQL & " values ('"
strSQL = strSQL & Request.Form("medlemsnummer") &"', '"
strSQL = strSQL & Request.Form("spillernavn") &"', '"
strSQL = strSQL & Request.Form("klub") &"', '"
strSQL = strSQL & Request.Form("snit") &"', '"
strSQL = strSQL & Request.Form("raekke") &"', '"
strSQL = strSQL & Request.Form("bemaerkninger") & "')"
Avatar billede mitbrugernavn Praktikant
21. oktober 2009 - 10:08 #5
du mangler en tegnsætning - se nedenstående

strSQL = "Insert into tblTilmeldinger ("

strSQL = strSQL & "Medlemsnummer, "
strSQL = strSQL & "Spillernavn, "
strSQL = strSQL & "Klub, "
strSQL = strSQL & "Snit, "
strSQL = strSQL & "Raekke, "
strSQL = strSQL & "Bemaerkninger)"

strSQL = strSQL & "values("

'hvis medlemsnummer kolonnen er sat til tekst så således
strSQL = strSQL & "'" &Request.Form("medlemsnummer")&"', "
'men hvis medlemsnummer kolonnen er sat til tal så således
'strSQL = strSQL & "" &Request.Form("medlemsnummer")&", "

'og det er også gældendende for resten af kolonnerne

strSQL = strSQL & "'" &Request.Form("spillernavn")&"', "
strSQL = strSQL & "'" &Request.Form("klub")&"', "
strSQL = strSQL & "'" &Request.Form("snit")&"', "
strSQL = strSQL & "'" &Request.Form("raekke")&"', "
strSQL = strSQL & "'" &Request.Form("bemaerkninger") & "')"

' SQL sætning eksekveres
Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
Avatar billede ktad Nybegynder
21. oktober 2009 - 12:37 #6
Tusind tak for hjælpen, det sidste gjorde forskellen og nu funker det bare :-) Tænkte nok det var sådan noget, men havde stirret mig totalt blind på det.

Så bliver man nødt til at ringe til en ven som udvej :-)

Smid et svar
Avatar billede ktad Nybegynder
21. oktober 2009 - 13:53 #7
Lige en enkelt tilføjelse som jeg glemte at få styr på.

Hvis nu feltet er et Ja/Nej felt hvordan skal koden til at skrive i DB så se ud ?
Avatar billede w13 Novice
21. oktober 2009 - 16:23 #8
Der er vist smidt svar. =)

Ja/nej kan du bare skrive som "true" og "false" eller "1" og "0".
Avatar billede ktad Nybegynder
21. oktober 2009 - 19:36 #9
Hey igen. Hvordan får jeg den til at skrive true/false via ovenstående kode ? Kan sku ikke rigtig få den til spille.

Har et felt i DB der hedder Start1 som er Ja/Nej felt og har samme på website MEN hvordan får jeg den via koden til at sætte feltet i db til True/False via Form.Request? skal koden for den type felter se anderledes ud eller ?
Avatar billede ktad Nybegynder
21. oktober 2009 - 19:37 #10
Ser sådan her ud nu:

<%
strSQL = "Insert into tblTilmeldinger ("
strSQL = strSQL & "Medlemsnummer,"
strSQL = strSQL & "Spillernavn,"
strSQL = strSQL & "Klub,"
strSQL = strSQL & "Snit,"
strSQL = strSQL & "Raekke,"
strSQL = strSQL & "Bemaerkninger
strSQL = strSQL & "Email,"
strSQL = strSQL & "Telefon,"
strSQL = strSQL & "Ekstraspil,"
strSQL = strSQL & "Holdspil,"
strSQL = strSQL & "Holdspilmed,"
strSQL = strSQL & "Start1,"
strSQL = strSQL & "Start2,"
strSQL = strSQL & "Start3,"
strSQL = strSQL & "Start4,"
strSQL = strSQL & "Start5,"
strSQL = strSQL & "Start6,"
strSQL = strSQL & "Start7,"
strSQL = strSQL & "Start8,"
strSQL = strSQL & "Start9,"
strSQL = strSQL & "Start10,"
strSQL = strSQL & "Start11)"

strSQL = strSQL & "values("

'hvis medlemsnummer kolonnen er sat til tekst så således
strSQL = strSQL & "'" &Request.Form("medlemsnummersend")&"',"
'men hvis medlemsnummer kolonnen er sat til tal så således
'strSQL = strSQL & "" &Request.Form("medlemsnummer")&", "

'og det er også gældendende for resten af kolonnerne

strSQL = strSQL & "'" &Request.Form("spillernavn")&"',"
strSQL = strSQL & "'" &Request.Form("klub")&"',"
strSQL = strSQL & "" &Request.Form("snit")&","
strSQL = strSQL & "'" &Request.Form("raekke")&"',"
strSQL = strSQL & "'" &Request.Form("bemaerkninger")&"',"
strSQL = strSQL & "'" &Request.Form("email")&"',"
strSQL = strSQL & "" &Request.Form("telefon")&","
strSQL = strSQL & "'" &Request.Form("ekstraspil")&"',"
strSQL = strSQL & "'" &Request.Form("holdspil")&"',"
strSQL = strSQL & "'" &Request.Form("holdspilmed")&"',"
strSQL = strSQL & "'" &Request.Form("Start1")&"',"
strSQL = strSQL & "'" &Request.Form("Start2")&"',"
strSQL = strSQL & "'" &Request.Form("Start3")&"',"
strSQL = strSQL & "'" &Request.Form("Start4")&"',"
strSQL = strSQL & "'" &Request.Form("Start5")&"',"
strSQL = strSQL & "'" &Request.Form("Start6")&"',"
strSQL = strSQL & "'" &Request.Form("Start7")&"',"
strSQL = strSQL & "'" &Request.Form("Start8")&"',"
strSQL = strSQL & "'" &Request.Form("Start9")&"',"
strSQL = strSQL & "'" &Request.Form("Start10")&"',"
strSQL = strSQL & "'" &Request.Form("Start11")&"')"


' SQL sætning eksekveres
Conn.Execute(strSQL)
Avatar billede w13 Novice
21. oktober 2009 - 19:47 #11
Det kommer jo helt an på, hvad dit Start1-felt indeholder.

Men f.eks. hvis Start1 er en checkbox med value="true" så ret din kode til:

<%

Start1 = Request.Form("Start1")
If Not Start1 = "true" Then Start1 = "false"

strSQL = "Insert into tblTilmeldinger ("
strSQL = strSQL & "Medlemsnummer,"
strSQL = strSQL & "Spillernavn,"
strSQL = strSQL & "Klub,"
strSQL = strSQL & "Snit,"
strSQL = strSQL & "Raekke,"
strSQL = strSQL & "Bemaerkninger
strSQL = strSQL & "Email,"
strSQL = strSQL & "Telefon,"
strSQL = strSQL & "Ekstraspil,"
strSQL = strSQL & "Holdspil,"
strSQL = strSQL & "Holdspilmed,"
strSQL = strSQL & "Start1,"
strSQL = strSQL & "Start2,"
strSQL = strSQL & "Start3,"
strSQL = strSQL & "Start4,"
strSQL = strSQL & "Start5,"
strSQL = strSQL & "Start6,"
strSQL = strSQL & "Start7,"
strSQL = strSQL & "Start8,"
strSQL = strSQL & "Start9,"
strSQL = strSQL & "Start10,"
strSQL = strSQL & "Start11)"

strSQL = strSQL & "values("

'hvis medlemsnummer kolonnen er sat til tekst så således
strSQL = strSQL & "'" &Request.Form("medlemsnummersend")&"',"
'men hvis medlemsnummer kolonnen er sat til tal så således
'strSQL = strSQL & "" &Request.Form("medlemsnummer")&", "

'og det er også gældendende for resten af kolonnerne

strSQL = strSQL & "'" &Request.Form("spillernavn")&"',"
strSQL = strSQL & "'" &Request.Form("klub")&"',"
strSQL = strSQL & "" &Request.Form("snit")&","
strSQL = strSQL & "'" &Request.Form("raekke")&"',"
strSQL = strSQL & "'" &Request.Form("bemaerkninger")&"',"
strSQL = strSQL & "'" &Request.Form("email")&"',"
strSQL = strSQL & "" &Request.Form("telefon")&","
strSQL = strSQL & "'" &Request.Form("ekstraspil")&"',"
strSQL = strSQL & "'" &Request.Form("holdspil")&"',"
strSQL = strSQL & "'" &Request.Form("holdspilmed")&"',"
strSQL = strSQL & "'" &Start1&"',"
strSQL = strSQL & "'" &Request.Form("Start2")&"',"
strSQL = strSQL & "'" &Request.Form("Start3")&"',"
strSQL = strSQL & "'" &Request.Form("Start4")&"',"
strSQL = strSQL & "'" &Request.Form("Start5")&"',"
strSQL = strSQL & "'" &Request.Form("Start6")&"',"
strSQL = strSQL & "'" &Request.Form("Start7")&"',"
strSQL = strSQL & "'" &Request.Form("Start8")&"',"
strSQL = strSQL & "'" &Request.Form("Start9")&"',"
strSQL = strSQL & "'" &Request.Form("Start10")&"',"
strSQL = strSQL & "'" &Request.Form("Start11")&"')"


' SQL sætning eksekveres
Conn.Execute(strSQL)
Avatar billede ktad Nybegynder
21. oktober 2009 - 22:20 #12
Start 1 er en checkbox som angivet :-) Og feltet i DB er et True/False felt.

Synes bare ikke rigtig jeg kan få det til at spille. Den kommer med internal server error ved submit.

Koden ser således ud (har forsøgt med både "" omkring true og false og uden som nedenfor - Begge med samme negative resultat :-(

Start1=Request.Form("Start1")
If Not Start1=True Then Start1=False
Start2=Request.Form("Start2")
If Not Start2=True Then Start2=False
Start3=Request.Form("Start3")
If Not Start3=True Then Start3=False
Start4=Request.Form("Start4")
If Not Start4=True Then Start4=False
Start5=Request.Form("Start5")
If Not Start5=True Then Start5=False
Start6=Request.Form("Start6")
If Not Start6=True Then Start6=False
Start7=Request.Form("Start7")
If Not Start7=True Then Start7=False
Start8=Request.Form("Start8")
If Not Start8=True Then Start8=False
Start9=Request.Form("Start9")
If Not Start9=True Then Start9=False
Start10=Request.Form("Start10")
If Not Start10=True Then Start10=False
Start11=Request.Form("Start11")
If Not Start11=True Then Start11=False

strSQL = "Insert into tblTilmeldinger ("
strSQL = strSQL & "Medlemsnummer,"
strSQL = strSQL & "Spillernavn,"
strSQL = strSQL & "Klub,"
strSQL = strSQL & "Snit,"
strSQL = strSQL & "Raekke,"
strSQL = strSQL & "Bemaerkninger
strSQL = strSQL & "Email,"
strSQL = strSQL & "Telefon,"
strSQL = strSQL & "Ekstraspil,"
strSQL = strSQL & "Holdspil,"
strSQL = strSQL & "Holdspilmed,"
strSQL = strSQL & "Start1,"
strSQL = strSQL & "Start2,"
strSQL = strSQL & "Start3,"
strSQL = strSQL & "Start4,"
strSQL = strSQL & "Start5,"
strSQL = strSQL & "Start6,"
strSQL = strSQL & "Start7,"
strSQL = strSQL & "Start8,"
strSQL = strSQL & "Start9,"
strSQL = strSQL & "Start10,"
strSQL = strSQL & "Start11)"


strSQL = strSQL & "values("

'hvis medlemsnummer kolonnen er sat til tekst så således
strSQL = strSQL & "'" &Request.Form("medlemsnummersend")&"',"
'men hvis medlemsnummer kolonnen er sat til tal så således
'strSQL = strSQL & "" &Request.Form("medlemsnummer")&", "

'og det er også gældendende for resten af kolonnerne

strSQL = strSQL & "'" &Request.Form("spillernavn")&"',"
strSQL = strSQL & "'" &Request.Form("klub")&"',"
strSQL = strSQL & "" &Request.Form("snit")&","
strSQL = strSQL & "'" &Request.Form("raekke")&"',"
strSQL = strSQL & "'" &Request.Form("bemaerkninger")&"',"
strSQL = strSQL & "'" &Request.Form("email")&"',"
strSQL = strSQL & "" &Request.Form("telefon")&","
strSQL = strSQL & "'" &Request.Form("ekstraspil")&"',"
strSQL = strSQL & "'" &Request.Form("holdspil")&"',"
strSQL = strSQL & "'" &Request.Form("holdspilmed")&"',"
strSQL = strSQL & "'" &Start1&"',"
strSQL = strSQL & "'" &Start2&"',"
strSQL = strSQL & "'" &Start3&"',"
strSQL = strSQL & "'" &Start4&"',"
strSQL = strSQL & "'" &Start5&"',"
strSQL = strSQL & "'" &Start6&"',"
strSQL = strSQL & "'" &Start7&"',"
strSQL = strSQL & "'" &Start8&"',"
strSQL = strSQL & "'" &Start9&"',"
strSQL = strSQL & "'" &Start10&"',"
strSQL = strSQL & "'" &Start11&"')"

' SQL sætning eksekveres
Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
Avatar billede w13 Novice
21. oktober 2009 - 22:28 #13
Prøv at rette:

strSQL = strSQL & "'" &Start1&"',"
strSQL = strSQL & "'" &Start2&"',"
strSQL = strSQL & "'" &Start3&"',"
strSQL = strSQL & "'" &Start4&"',"
strSQL = strSQL & "'" &Start5&"',"
strSQL = strSQL & "'" &Start6&"',"
strSQL = strSQL & "'" &Start7&"',"
strSQL = strSQL & "'" &Start8&"',"
strSQL = strSQL & "'" &Start9&"',"
strSQL = strSQL & "'" &Start10&"',"
strSQL = strSQL & "'" &Start11&"')"

til:

strSQL = strSQL & "" &Start1&","
strSQL = strSQL & "" &Start2&","
strSQL = strSQL & "" &Start3&","
strSQL = strSQL & "" &Start4&","
strSQL = strSQL & "" &Start5&","
strSQL = strSQL & "" &Start6&","
strSQL = strSQL & "" &Start7&","
strSQL = strSQL & "" &Start8&","
strSQL = strSQL & "" &Start9&","
strSQL = strSQL & "" &Start10&","
strSQL = strSQL & "" &Start11&")"

Det allerbedste ville dog stadig være, at du slog det der fra i indstillinger. Så fortæller den dig, hvad der er galt.
Avatar billede ktad Nybegynder
21. oktober 2009 - 22:38 #14
Virker desværre stadig ikke :-( Der er ikke umiddelbart en indstilling i min IE der hedder noget lig det du tidligere har skrevet. Eneste der er der ligner er "Deaktiver script-fejlfinding (Internet Explorer) og en med "Anden" i ()

Hverken slået fra eller til hjælper det på fejlbeskederne, det er den totalt samme.

Har webserveren der arbejdes på i eget hus så har slået client-side og server-side script debugging til på website og på serveren kommer der følgende fejl

-----
Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x1858 Thread 0x1824 DBC 0x2c446004 Jet'.
-----
Avatar billede w13 Novice
21. oktober 2009 - 22:45 #15
Er der ikke noget, der hedder noget i stil med "brugervenlige fejlmeddelelser"? Script-fejlfinding er JavaScript.
Avatar billede ktad Nybegynder
21. oktober 2009 - 22:58 #16
Tror jeg har fundet den nu, den hedder noget så logisk som

Vis meddelelser om uskadelige HTTP-fejl
Avatar billede ktad Nybegynder
21. oktober 2009 - 22:59 #17
Får følgende fejl

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.

/tak.asp, line 124
Avatar billede w13 Novice
21. oktober 2009 - 23:12 #18
Det var dén, ja! :) "Uskadelige", nå ja..
Avatar billede w13 Novice
21. oktober 2009 - 23:14 #19
Prøv at indsætte dette lige før Conn.Execute:

Response.Write strSQL

Så burde vi få udskrevet på skærmen, hvordan vores database-streng bliver sammensat!
Avatar billede ktad Nybegynder
21. oktober 2009 - 23:18 #20
MS logik :-)

Hermed respons

Insert into tblTilmeldinger (Medlemsnummer,Spillernavn,Klub,Snit,Raekke,Bemaerkninger,Email,Telefon,Ekstraspil,Holdspil,Holdspilmed,Start1,Start2,Start3,Start4,Start5,Start6,Start7,Start8,Start9,Start10,Start11)values('210179-KIAN','Kim T. Andersen','Aalb. Bowl. Team',149,'Ulicenserede','','',,False,False,'',False,False,False,False,False,False,False,False,False,False,False)

ALLE checkbox felter var valgt.. så den må melde forkert værdi retur? De burde da være true ikke?
Avatar billede w13 Novice
22. oktober 2009 - 00:21 #21
Som du ser, har du to kommaer efter hinanden her:

'Ulicenserede','','',,False,False

og det er ugyldigt i en SQL-streng. Sæt derfor apostroffer ' omkring værdien, selvom den nok indeholder tal.
Avatar billede ktad Nybegynder
22. oktober 2009 - 00:43 #22
Jeps har jeg fundet ud af da jeg kunne indsætte efter at have indtastet noget i alle felter.

Er der ingen anden udvej end ændre felt fra tal til tekst i DB ?

Dog er der stadig det problem at den skal skriver falsk ved de felter som burde være sande. Så der bliver intet udfyldt i Ja/Nej felterne i DB selvom de er valgte i formular.

Hvad kan det være ?
Avatar billede w13 Novice
22. oktober 2009 - 12:55 #23
Jeg mener ikke, du behøver at ændre det i DB. Det er vist kun i ASP-koden, at du skal sætte ' omkring værdien. Så gør det nemlig ikke noget, hvis værdien er blank.
Avatar billede ktad Nybegynder
27. oktober 2009 - 22:30 #24
SÅ har jeg haft tid til at se på det igen og det er desværre ikke helt samarbejdsvilligt :-( Den sætter ikke felterne i databasen til Ja eller Nej selvom et felt er markeret til "JA" i formularen, men den tilføjer fint nok de øvrige data (tekst og tal felter)

Hvad pokker kan der være galt? Det begynder at presse lidt på.
Avatar billede ktad Nybegynder
29. oktober 2009 - 13:04 #25
Hej. Jeg har fundet fejlen.

Smid et svar og jeg kan lukke spørgsmålet :-)

Tak for hjælpen
Avatar billede w13 Novice
16. november 2009 - 14:48 #26
:)
Avatar billede w13 Novice
27. februar 2010 - 19:46 #27
Tak for point!
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