14. januar 2008 - 15:09
Der er
15 kommentarer
Simpel indsæt data i tabel - Hvad gør jeg forkert?
Hejsa. Jeg har en side med en formular, hvor der indtastes en masse deltaljer. Disse data skal så skrives ned til en db. Min db connection virker helt fint, men data bliver ikke skrevet. Hvad er der galt?
Annonceindlæg fra Computerworld
14. januar 2008 - 15:10
#1
Min primære side med formularen ser således ud: <!--#include file="database_con.asp"--> <html> <head> <title>Hvornår har du lyst og mulighed for at raide?</title> </head> <body> <form method="post" action="udført.asp"> <p>Navn på Character: <input type="text" name="NavnCharacter"> <p><b>Tidspunkt er som altid - Invite 19.30, Start 20.00 og stop 23.00</b> <br> <input type="checkbox" name="Mandag" value="mandag"> Mandag <br> <input type="checkbox" name="Tirsdag" value="tirsdag"> Tirsdag <br> <input type="checkbox" name="Onsdag" value="onsdag"> Onsdag <br> <input type="checkbox" name="Torsdag" value="torsdag"> Torsdag <br> <input type="checkbox" name="Fredag" value="fredag"> Fredag <br> <input type="checkbox" name="Lordag" value="lordag"> Lørdag <br> <input type="checkbox" name="Sondag" value="sondag"> Søndag</p> <b>Hvor har du lyst til at raide?</b> <p> Karazhan <input type="checkbox" name="HvorKarazhanJa" value="HvorKarazhanJa"> Ja | <input type="checkbox" name="HvorKarazhanNej" value="HvorKarazhanNej"> Nej | <input type="checkbox" name="HvorKarazhanMangler" value="HvorKarazhanMangler"> Kun når der virkelig mangler</p> <p> Zul Aman <input type="checkbox" name="HvorZulAmanJa" value="HvorZulAmanJa"> Ja | <input type="checkbox" name="HvorZulAmanNej" value="HvorZulAmanNej"> Nej | <input type="checkbox" name="HvorZulAmanMangler" value="HvorZulAmanMangler"> Kun når der virkelig mangler</p> <p> Gruul <input type="checkbox" name="HvorGruulJa" value="HvorGruulJa"> Ja | <input type="checkbox" name="HvorGruulNej" value="HvorGruulNej"> Nej | <input type="checkbox" name="HvorGruulMangler" value="HvorGruulMangler"> Kun når der virkelig mangler</p> <p> Magtheridon <input type="checkbox" name="HvorMagtheridonJa" value="HvorMagtheridonJa"> Ja | <input type="checkbox" name="HvorMagtheridonNej" value="HvorMagtheridonNej"> Nej | <input type="checkbox" name="HvorMagtheridonMangler" value="HvorMagtheridonMangler"> Kun når der virkelig mangler</p> <p> Tempest Keep <input type="checkbox" name="HvorTempestKeepJa" value="HvorTempestKeepJa"> Ja | <input type="checkbox" name="HvorTempestKeepNej" value="HvorTempestKeepNej"> Nej | <input type="checkbox" name="HvorTempestKeepMangler" value="HvorTempestKeepMangler"> Kun når der virkelig mangler</p> <p> Serpentshrine Cavern <input type="checkbox" name="HvorSerpentshrineCavernJa" value="HvorSerpentshrineCavernJa"> Ja | <input type="checkbox" name="HvorSerpentshrineCavernNej" value="HvorSerpentshrineCavernNej"> Nej | <input type="checkbox" name="HvorSerpentshrineCavernMangler" value="HvorSerpentshrineCavernMangler"> Kun når der virkelig mangler</p> <p> <br> <b>Hvem vil du gerne raide på?</b><br> <input type="text" name="Hvem"></p> <p> <b>Hvad er dit raid spec? (ex. 5/16/40)<br> <input type="text" name="RaidSpec"></p></b></p> <p> <b>Hvordan passer tidspunktet dig? (19.30 - 23.00)<br> </b>Fint, ingen grund til at lave det om<b> <input type="checkbox" name="TidspunktFint" value="TidspunktFint"><br> </b>Dårligt. Jeg ville foretrække <input type="text" name="TidspunktHellere"><br> Havde ikke noget imod at udvide den til 19.00 - 23.30 (Invite 19.00 - Start 19.30) <input type="checkbox" name="TidspunktUdvide" value="TidspunktUdvide"></p> <p> <b>Øvrige kommentarer<br> <input type="memo" name="Kommentar" value="Kommentar" size="91"><br> </b><br> </p> </p></p></p> </p> </p> <p> <input type="submit"> </p> </form> </body> </html>
14. januar 2008 - 15:10
#2
Og svar siden ser således ud: <!--#include file="database_con.asp"--> <head> <meta http-equiv="Content-Language" content="da"> </head> <% strSQL = "INSERT INTO tbldata (NavnCaracter) values('" & Request.Form("Navncharacter") & "')" %>
14. januar 2008 - 15:11
#3
Dette er altså blot en test med det første felt
14. januar 2008 - 15:12
#4
Jeg ville starte med at omdøbe "udført.asp". æøå høre ikke hjemme i filnavne. Dernæst. Får du en fejlmeddelse?
14. januar 2008 - 15:13
#5
Husker du at eksikvere din SQL?? Det fremgår ikke af dit kode eks: <% strSQL = "INSERT INTO tbldata (NavnCaracter) values('" & Request.Form("Navncharacter") & "')" conn.execute(strSQL) %>
14. januar 2008 - 15:41
#6
Den havde jeg så glemt. Begynderfejl :p Men jeg har nu sat flere felter ind. Den ser nu sådan ud (Hvad er der galt, for der kommer fejl): <!--#include file="database_con.asp"--> <head> <meta http-equiv="Content-Language" content="da"> </head> <% strSQL = "Insert into tbldata (" strSQL = strSQL & "NavnCharacter, " strSQL = strSQL & "Mandag, " strSQL = strSQL & "Tirsdag, " strSQL = strSQL & "Onsdag, " strSQL = strSQL & "Torsdag, " strSQL = strSQL & "Fredag, " strSQL = strSQL & "Lordag, " strSQL = strSQL & "Sondag, " strSQL = strSQL & "HvornårKarazhanJa, " strSQL = strSQL & "HvornårKarazhanNej, " strSQL = strSQL & "HvornårKarazhanMangler, " strSQL = strSQL & "HvornårZulAmanJa, " strSQL = strSQL & "HvornårZulAmanNej, " strSQL = strSQL & "HvornårZulAmanMangler, " strSQL = strSQL & "HvornårGruulJa, " strSQL = strSQL & "HvornårGruulNej, " strSQL = strSQL & "HvornårGruulMangler, " strSQL = strSQL & "HvornårMagtheridonJa, " strSQL = strSQL & "HvornårMagtheridonNej, " strSQL = strSQL & "HvornårMagtheridonMangler, " strSQL = strSQL & "HvornårTempestKeepJa, " strSQL = strSQL & "HvornårTempestKeepNej, " strSQL = strSQL & "HvornårTempestKeepMangler, " strSQL = strSQL & "HvornårSerpentshrineCavernJa, " strSQL = strSQL & "HvornårSerpentshrineCavernNej, " strSQL = strSQL & "HvornårSerpentshrineCavernMangler, " strSQL = strSQL & "Hvem, " strSQL = strSQL & "RaidSpec, " strSQL = strSQL & "TidspunktFint, " strSQL = strSQL & "TidspunktHellere, " strSQL = strSQL & "TidspunktUdvide, " strSQL = strSQL & "Kommentar) " strSQL = strSQL & "values('" & " strSQL = strSQL & "Request.Form("NavnCharacter"), " strSQL = strSQL & "Request.Form("Mandag"), " strSQL = strSQL & "Request.Form("Tirsdag"), " strSQL = strSQL & "Request.Form("Onsdag"), " strSQL = strSQL & "Request.Form("Torsdag"), " strSQL = strSQL & "Request.Form("Fredag"), " strSQL = strSQL & "Request.Form("Lordag"), " strSQL = strSQL & "Request.Form("Sondag"), " strSQL = strSQL & "Request.Form("HvornårKarazhanJa"), " strSQL = strSQL & "Request.Form("HvornårKarazhanNej"), " strSQL = strSQL & "Request.Form("HvornårKarazhanMangler"), " strSQL = strSQL & "Request.Form("HvornårZulAmanJa"), " strSQL = strSQL & "Request.Form("HvornårZulAmanNej"), " strSQL = strSQL & "Request.Form("HvornårZulAmanMangler"), " strSQL = strSQL & "Request.Form("HvornårGruulJa"), " strSQL = strSQL & "Request.Form("HvornårGruulNej"), " strSQL = strSQL & "Request.Form("HvornårGruulMangler"), " strSQL = strSQL & "Request.Form("HvornårMagtheridonJa"), " strSQL = strSQL & "Request.Form("HvornårMagtheridonNej"), " strSQL = strSQL & "Request.Form("HvornårMagtheridonMangler"), " strSQL = strSQL & "Request.Form("HvornårTempestKeepJa"), " strSQL = strSQL & "Request.Form("HvornårTempestKeepNej"), " strSQL = strSQL & "Request.Form("HvornårTempestKeepMangler"), " strSQL = strSQL & "Request.Form("HvornårSerpentshrineCavernJa"), " strSQL = strSQL & "Request.Form("HvornårSerpentshrineCavernNej"), " strSQL = strSQL & "Request.Form("HvornårSerpentshrineCavernMangler"), " strSQL = strSQL & "Request.Form("Hvem"), " strSQL = strSQL & "Request.Form("RaidSpec"), " strSQL = strSQL & "Request.Form("TidspunktFint"), " strSQL = strSQL & "Request.Form("TidspunktHellere"), " strSQL = strSQL & "Request.Form("TidspunktUdvide"), " strSQL = strSQL & "Request.Form("Kommentar") & "')" Conn.Execute(strSQL) %>
14. januar 2008 - 15:49
#7
Du skal have dine Request.Form til at passe til dit DB felters datatype. Jeg går ikke ud fra at du vil indsætte "HvorKarazhanMangler" som værdi i databasen. Desuden har du fået skrevet dine " forkert på alle RF(), men det tager vi når du har svaret på forgående ? :o)
14. januar 2008 - 15:49
#8
Det er vel et true/false, NULL/1 eller 0/1 felter du har i databasen.
14. januar 2008 - 15:51
#9
Alle er ja/nej felter med undtagelse af NavnCharacter, Hvem, RaidSpec, TidspunktHellere, Kommentar - Disse er tekst
14. januar 2008 - 16:10
#10
Så bliver du nød til at lave en mellem "beregning" på alle de felter. Din kode bliver så: if Request.Form("HvornårKarazhanJa") <> "" then tmp = 1 else tmp = 0 strSQL = strSQL & tmp &", " if Request.Form("HvornårKarazhanNej") <> "" then tmp = 1 else tmp = 0 strSQL = strSQL & tmp &", " if Request.Form("HvornårKarazhanMangler") <> "" then tmp = 1 else tmp = 0 strSQL = strSQL & tmp &", " ...osv... Dette gør du bare på alle ja/nej felter. Databasen skulle godtage 1 som ja og 0 som nej, hvorfor jeg sætter tmp variablen til disse værdier.
14. januar 2008 - 16:13
#11
Checkbox felter er så smarte, at de kun sender deres værdi, hvis de er afkrydset. Det er derfor ligemeget hvad værdien er checkboxen (bare der er en). Vi tjekker bare for om der står noget eller ej. Du kan derfor også ændre din form kode: <input type="checkbox" name="HvorZulAmanJa" value="HvorZulAmanJa"> Kan lige så godt være: <input type="checkbox" name="HvorZulAmanJa" value="ON">
14. januar 2008 - 16:17
#12
Okay, blev lidt forvirret nu. Kan jeg får dig til at indsætte disse ting i min kode, så det er rigtigt?
14. januar 2008 - 16:36
#13
Det er ret simpelt. Da databasen ikke godtager tekst værdier fra dine checkboxe men kun 0 og 1, laver vi et simpelt tjek. Her bruger jeg "HvornårKarazhanJa" checkboxen som eks: if Request.Form("HvornårKarazhanJa") <> "" then Da checkboxen kun returnere en værdi hvis den er afkrydset kan vi nøjes med at tjekke om der står noget eller ej hvorfor <> "" bruges. Vi bruger så en tmp variabel til at angive 0 og 1. Hvis der er en værdi i checkboxen sættes den til 1 eller 0: if Request.Form("HvornårKarazhanJa") <> "" then tmp = 1 else tmp = 0 Nu har vi værdien vi vil indsætte i databasen og udvider derfor sql sætningen: strSQL = strSQL & tmp &", " Dette pricip fortsætte vi ned igennem alle checkbox elementer: if Request.Form("HvornårKarazhanJa") <> "" then tmp = 1 else tmp = 0 strSQL = strSQL & tmp &", " if Request.Form("HvornårKarazhanNej") <> "" then tmp = 1 else tmp = 0 strSQL = strSQL & tmp &", " if Request.Form("HvornårKarazhanMangler") <> "" then tmp = 1 else tmp = 0 strSQL = strSQL & tmp &", " ...osv... Det skulle du kunne skrive resten af selv. Jeg har nemlig ikke overblik over hvad der er checkboxe eller ej :o)
14. januar 2008 - 16:40
#14
Okay. Jeg må prøve. Du sagde at jeg havde forkerte tegn inde også? Jeg får lavet en ny kode og sætter ind, så alle checkboxe er inde. Men kommer først senere i dag eller i morgen. Vi finder lige ud af at du også kan få nogle flere points :-)
14. januar 2008 - 16:56
#15
De forkerte tegn har jeg rettet i den kode du har fået til alle checkbox indsættelserne, men du har egentlig stadig fejlen på de andre. Det var denne kode du har fejlen i: strSQL = strSQL & "Request.Form("Tirsdag"), " Der indsætter den ikke værdien fra Request.Form("Tirsdag") men "Request.Form("Tirsdag")". Det skulle i stedet have været: strSQL = strSQL & "'" & Request.Form("Tirsdag") &"', " eller: strSQL = strSQL & "" & Request.Form("Tirsdag") &", " Alt afhængig af om værdien skal ind i en tekst eller tal kolonne. Så det skal du også have rettet på alle indsættelserne.
Kurser inden for grundlæggende programmering