18. juni 2004 - 14:47
Der er
56 kommentarer og 3 løsninger
Opdatering af database
Hej! Jeg har en database, som jeg ikke kan opdatere! Der sker ingen opdateringer når der trykkes på knappen opdater Er der nogen der kan se fejlen? <% if request("UserLoggeIn") <> "" then Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath(".../database/databaselog.mdb") Conn.Open DSN strSQL = "Update user set" strSQL = strSQL & "navn= '" & request.Form("navn") & "', " strSQL = strSQL & "efternavn= '" & request.Form("efternavn") & "', " strSQL = strSQL & "adresse= '" & request.Form("adresse") & "', " strSQL = strSQL & "telefon= '" & request.Form("telefon") & "', " strSQL = strSQL & "email= '" & request.Form("email") & "', " strSQL = strSQL & "foedselsdag= '" & request.Form("foedselsdag") & "', " strSQL = strSQL & "civil stand= '" & request.Form("civil stand") & "', " strSQL = strSQL & "born= '" & request.Form("born") & "', " strSQL = strSQL & "password= '" & request.Form("password") & "', " strSQL = strSQL & "Where id=" & session("UserLoggedIn") Conn.Execute(strSQL) Conn.Close Set Conn = Nothing end if %> <form method="post" action="test1.asp"> <input name="navn" type="text" class="body" size="30"> <input name="efternavn" type="text" class="body" size="30"> <textarea name="civil stand" cols="35" rows="4" class="body"></textarea> <input name="telefon" type="text" class="body" size="30"> <input name="foedselsdag" type="text" class="body" size="30"> <textarea name="civil stand" cols="35" rows="4" class="body"></textarea> <textarea name="born" cols="35" rows="4" class="body"></textarea> <input name="password" type="password" class="body" size="30"> <input name="password2" type="password" class="body" size="30"> <input name="send" type="submit" class="body" value="Opdater"> </form>
Annonceindlæg fra HP
if session("UserLoggeIn") <> "" then
Der sker stadig ingenting!!!
Skal jeg bruge denne sætning strSQL = "Insert into user(navn) values('" & Request.Form("navn") & "')"
if not session("UserLoggedIn") = Empty then Ville jeg bruge i stedet
Peter: Nu får jeg denne fejl! Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. /test1.asp, line 173 Hvilket er Conn.Execute(strSQL)
jep det er fordi rekord ikke findes. Så skal du insert i stedet for update, du skriver faktisk selv svaret
nej - hvis record ikke fandtes ville den bare ikke opdatere nogen. Fejlen kan derimod skyldes at der ikke tages højde for felttyper. Hvilke felttyper er de forskellige kolonner i tabellen?
skal du ikke requeste din session også altså Request.session("UserloggefIn")
id = autonumber navn = tekst efternavn = tekst adresse = memo telefon = tekst e-mail = tekst foedselsdato = memo civil stand = memo born = memo arbejde = memo password = memo
18. juni 2004 - 15:13
#10
strSQL = strSQL & "civil stand= '" & request.Form("civil stand") & "', " tænker godt den linie kan drille, brug aldrig mellemrum i tabeller. Har du sat born til tal i access så skriv i stedet for. strSQL = strSQL & "born= '" & cLng(request.Form("born")) & "', " Har du sat telefon til tal i access så skriv i stedet for. strSQL = strSQL & "telefon= '" & cLng(request.Form("telefon")) & "', " OSV. cLng laver dem om til en tal streng i stedet for en tekst.
18. juni 2004 - 15:16
#11
Problemmet med mellemrum har jeg ikke haft, når der hentes oplysninger fra databasen...
18. juni 2004 - 15:17
#12
strSQL = strSQL & "Where id='" & session("UserLoggedIn") & "'"
18. juni 2004 - 15:21
#13
phuc69: Giver samme fejl
18. juni 2004 - 15:22
#14
strSQL = strSQL & "Where id=" & session("UserLoggedIn") sådan ellers var phuc på sporet
18. juni 2004 - 15:22
#15
strSQL = "Update user set" strSQL = strSQL & "navn= '" & request.Form("navn") & "', " strSQL = strSQL & "efternavn= '" & request.Form("efternavn") & "', " strSQL = strSQL & "adresse= '" & request.Form("adresse") & "', " strSQL = strSQL & "telefon= '" & request.Form("telefon") & "', " strSQL = strSQL & "email= '" & request.Form("email") & "', " strSQL = strSQL & "foedselsdag= '" & request.Form("foedselsdag") & "', " strSQL = strSQL & "[civil stand]= '" & request.Form("civil stand") & "', " strSQL = strSQL & "born= '" & request.Form("born") & "', " strSQL = strSQL & "password= '" & request.Form("password") & "', " strSQL = strSQL & "Where id=" & session("UserLoggedIn")
18. juni 2004 - 15:23
#16
har fjenet ' efter = kan godt være svært at se
18. juni 2004 - 15:23
#17
prøv at udskrive din sql response.write strsql
18. juni 2004 - 15:31
#18
keyserzone: Det virker heller ikke... phuc69: hvad mener du? Hvorhenne?
18. juni 2004 - 15:34
#19
strSQL = "Update user set" strSQL = strSQL & "navn= '" & request.Form("navn") & "', " strSQL = strSQL & "efternavn= '" & request.Form("efternavn") & "', " strSQL = strSQL & "adresse= '" & request.Form("adresse") & "', " strSQL = strSQL & "telefon= '" & request.Form("telefon") & "', " strSQL = strSQL & "email= '" & request.Form("email") & "', " strSQL = strSQL & "foedselsdag= '" & request.Form("foedselsdag") & "', " strSQL = strSQL & "[civil stand]= '" & request.Form("civil stand") & "', " strSQL = strSQL & "born= '" & request.Form("born") & "', " strSQL = strSQL & "password= '" & request.Form("password") & "', " strSQL = strSQL & "Where id=" & session("UserLoggedIn") response.write strsql response.end Conn.Execute(strSQL)
18. juni 2004 - 15:38
#20
der hvor keysesrsoze indsætter den. Du kan bagefter indsætte dit output i en sql forespørgelse i access det kan være den kan komme med en bedre fejlmedelse
18. juni 2004 - 15:38
#21
Nu viser den Update user setnavn= '', efternavn= '', adresse= '', telefon= '', foedselsdag= '', [civil stand]= '', born= '', password= '', Where id=true
18. juni 2004 - 15:44
#22
strSQL = "Update user set "
18. juni 2004 - 15:45
#23
samme resultat
18. juni 2004 - 15:56
#24
så er det derfor den fejl - id er et tal (autonumber) og du forsøger at finde tallet "true" og det findes jo ikke. Du bliver nødt til at finde id'et på den bruger der skal opdateres og indsætte det i stedet for session("UserLoggedIn")
18. juni 2004 - 15:58
#25
Hvordan kan jeg så sikre mig, at når brugeren opdaterer sine oplysninger, at det virkelig er vedkomnes oplysninger der opdateres! der er ca 35 id numre i databasen...
18. juni 2004 - 16:01
#26
Lad mig omformulere! Skal jeg så have 35 opdateringssider?
18. juni 2004 - 16:05
#27
nej - hvis brugeren skal logge ind for at opdatere sin side så gem vedkommendes id i en session
18. juni 2004 - 16:07
#28
Hvordan gør jeg det? Min session ser således ud: <% Response.Expires = -1000 'Makes the browser not cache this page Response.Buffer = True 'Buffers the content so our Response.Redirect will work Dim Error_Msg login = Request.Form("login") If login = "logout" Then Session("UserLoggedIn") = "" ShowLogin Else If Session("UserLoggedIn") = "true" Then AlreadyLoggedIn Else If login = "true" Then CheckLogin Else ShowLogin End If End If End If Sub ShowLogin Response.Write(Error_Msg & "<br>") %>
18. juni 2004 - 16:08
#29
nej strSQL = strSQL & "Where navn ='" & request.Form("navn") & "' and efternavn = '" & request.Form("efternavn") % "'" fidusen her at finde en unik nøgle feks igennem din autonummerering. Men ovennævnte kunne godt bruges hvis ingen hedder det samme....
18. juni 2004 - 16:10
#30
Ups % istedet for & strSQL = strSQL & "Where navn ='" & request.Form("navn") & "' and efternavn = '" & request.Form("efternavn") & "'"
18. juni 2004 - 16:10
#31
Hvor skal det sættes ind?
18. juni 2004 - 16:12
#32
strSQL = "Update user set" strSQL = strSQL & "navn= '" & request.Form("navn") & "', " strSQL = strSQL & "efternavn= '" & request.Form("efternavn") & "', " strSQL = strSQL & "adresse= '" & request.Form("adresse") & "', " strSQL = strSQL & "telefon= '" & request.Form("telefon") & "', " strSQL = strSQL & "email= '" & request.Form("email") & "', " strSQL = strSQL & "foedselsdag= '" & request.Form("foedselsdag") & "', " strSQL = strSQL & "[civil stand]= '" & request.Form("civil stand") & "', " strSQL = strSQL & "born= '" & request.Form("born") & "', " strSQL = strSQL & "password= '" & request.Form("password") & "', " strSQL = strSQL & "Where navn ='" & request.Form("navn") & "' and efternavn = '" & request.Form("efternavn") & "'" Conn.Execute(strSQL)
18. juni 2004 - 16:22
#33
Virker ikke! Hvis jeg nu vil lave 35 opdateringssider, hvordan får jeg så requested "id" Eksempel: der er en side med brugerens oplysninger, hvorfra der linkes til denne brugers opdateringsside. Hvordan skal det så sættes op i dette script? <% if request("UserLoggeIn") <> "" then Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath(".../database/databaselog.mdb") Conn.Open DSN strSQL = "Update user set" strSQL = strSQL & "navn= '" & request.Form("navn") & "', " strSQL = strSQL & "efternavn= '" & request.Form("efternavn") & "', " strSQL = strSQL & "adresse= '" & request.Form("adresse") & "', " strSQL = strSQL & "telefon= '" & request.Form("telefon") & "', " strSQL = strSQL & "email= '" & request.Form("email") & "', " strSQL = strSQL & "foedselsdag= '" & request.Form("foedselsdag") & "', " strSQL = strSQL & "civil stand= '" & request.Form("civil stand") & "', " strSQL = strSQL & "born= '" & request.Form("born") & "', " strSQL = strSQL & "password= '" & request.Form("password") & "', " strSQL = strSQL & "Where id=" & session("UserLoggedIn") Conn.Execute(strSQL) Conn.Close Set Conn = Nothing end if %> <form method="post" action="test1.asp"> <input name="navn" type="text" class="body" size="30"> <input name="efternavn" type="text" class="body" size="30"> <textarea name="civil stand" cols="35" rows="4" class="body"></textarea> <input name="telefon" type="text" class="body" size="30"> <input name="foedselsdag" type="text" class="body" size="30"> <textarea name="civil stand" cols="35" rows="4" class="body"></textarea> <textarea name="born" cols="35" rows="4" class="body"></textarea> <input name="password" type="password" class="body" size="30"> <input name="password2" type="password" class="body" size="30"> <input name="send" type="submit" class="body" value="Opdater"> </form>
18. juni 2004 - 16:24
#34
en rigtig dårlig løsning - hvad nu hvis man ændrer navn i formfelterne så vil den jo ikke opdatere noget? bbworld >> tjecker du slet ikke op på noget brugernavn/password når man logger ind?
18. juni 2004 - 16:27
#35
Hvad mener du? Den tjekker brugernavn og password i databasen!!!
18. juni 2004 - 16:33
#36
Keysersoze: Nu var det mest ment som et eksempel. :-) Der hvor du checker brugernavn og password start da en en session som du sætter lige med database id
18. juni 2004 - 16:34
#37
det kan jeg ikke lige se - anyway. Det du skal er, at når du laver dit brugertjeck så hiver du samtidig id'et ud på brugeren der logger ind og lægger dette id i en session session("userid") = rs("id") og så kan du lave din update-sql sådan strSQL = "Update user set" strSQL = strSQL & "navn= '" & request.Form("navn") & "', " strSQL = strSQL & "efternavn= '" & request.Form("efternavn") & "', " strSQL = strSQL & "adresse= '" & request.Form("adresse") & "', " strSQL = strSQL & "telefon= '" & request.Form("telefon") & "', " strSQL = strSQL & "email= '" & request.Form("email") & "', " strSQL = strSQL & "foedselsdag= '" & request.Form("foedselsdag") & "', " strSQL = strSQL & "[civil stand]= '" & request.Form("civil stand") & "', " strSQL = strSQL & "born= '" & request.Form("born") & "', " strSQL = strSQL & "password= '" & request.Form("password") & "', " strSQL = strSQL & "Where id=" & session("userid")
18. juni 2004 - 16:41
#38
Skal jeg så gøre sådan i min login session? <% Response.Expires = -1000 'Makes the browser not cache this page Response.Buffer = True 'Buffers the content so our Response.Redirect will work Dim Error_Msg login = Request.Form("login") If login = "logout" Then Session("userid") = rs("id") ShowLogin Else If Session("Userid") = "true" Then AlreadyLoggedIn Else If login = "true" Then CheckLogin Else ShowLogin End If End If End If Sub ShowLogin Response.Write(Error_Msg & "<br>") %>
18. juni 2004 - 16:48
#39
jeg kan ikke se hvornår du slår op i databasen så jeg kan ikke se hvor du kan sætte din session
18. juni 2004 - 16:55
#40
Ved ikke om dette kan hjælpe? <% End Sub Sub CheckLogin Dim Conn, cStr, sql, RS, username, password username = Request.Form("username") password = Request.Form("password") Set Conn = Server.CreateObject("ADODB.Connection") cStr = "DRIVER={Microsoft Access Driver (*.mdb)};" cStr = cStr & "DBQ=" & Server.MapPath(".../database/databaselog.mdb") & ";" Conn.Open(cStr) sql = "select username from user where username = '" & LCase(username) & "'" sql = sql & " and password = '" & LCase(password) & "'" Set RS = Conn.Execute(sql) If RS.BOF And RS.EOF Then Error_Msg = "Login Failed. Try Again." Response.Redirect "ikkelogind.asp" Else Session("UserLoggedIn") = "true" Response.Redirect "minside.asp" End If End Sub %>
18. juni 2004 - 17:00
#41
<% End Sub Sub CheckLogin Dim Conn, cStr, sql, RS, username, password username = Request.Form("username") password = Request.Form("password") Set Conn = Server.CreateObject("ADODB.Connection") cStr = "DRIVER={Microsoft Access Driver (*.mdb)};" cStr = cStr & "DBQ=" & Server.MapPath(".../database/databaselog.mdb") & ";" Conn.Open(cStr) sql = "select id, username from user where username = '" & LCase(username) & "'" sql = sql & " and password = '" & LCase(password) & "'" Set RS = Conn.Execute(sql) If RS.BOF And RS.EOF Then Error_Msg = "Login Failed. Try Again." Response.Redirect "ikkelogind.asp" Else Session("UserLoggedIn") = "true" Session("userid") = rs("id") Response.Redirect "minside.asp" End If End Sub %> herefter kan du så bruge session("userid") for at skelne de forskellige brugere fra hinanden
18. juni 2004 - 17:12
#42
Tror det er tæt på det virker! Får dog denne fejl: Microsoft VBScript compilation error '800a0400' Expected statement /test1.asp, line 184 end if ^
18. juni 2004 - 17:14
#43
fjern den end if
18. juni 2004 - 17:17
#44
Får denne fejl! Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. /test1.asp, line 180 <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath(".../database/databaselog.mdb") Conn.Open DSN strSQL = "Update user set" strSQL = strSQL & "navn= '" & request.Form("navn") & "', " strSQL = strSQL & "efternavn= '" & request.Form("efternavn") & "', " strSQL = strSQL & "adresse= '" & request.Form("adresse") & "', " strSQL = strSQL & "telefon= '" & request.Form("telefon") & "', " strSQL = strSQL & "foedselsdag= '" & request.Form("foedselsdag") & "', " strSQL = strSQL & "[civil stand]= '" & request.Form("civil stand") & "', " strSQL = strSQL & "born= '" & request.Form("born") & "', " strSQL = strSQL & "password= '" & request.Form("password") & "', " strSQL = strSQL & "Where id=" & session("userid") Conn.Execute(strSQL)- fejl her Conn.Close Set Conn = Nothing %>
18. juni 2004 - 17:19
#45
prøv at uskive sql sætning igen
18. juni 2004 - 17:31
#46
Skal jeg have noget før: altså en if sætning eller lign. her Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath(".../database/databaselog.mdb") Conn.Open DSN Får igen dette: men den finder den rigtige id Update user set navn= '', efternavn= '', adresse= '', telefon= '', foedselsdag= '', [civil stand]= '', born= '', password= '', Where id=16
18. juni 2004 - 17:42
#47
prøv at poste hele fil i stedet samt komplet sti til både fil og database
18. juni 2004 - 17:47
#48
<%
if request("UserLoggeIn") <> "" then
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("
www.service2004.dk/database/databaselog.mdb" )
Conn.Open DSN
strSQL = "Update user set"
strSQL = strSQL & "fornavn= '" & request.Form("navn") & "', "
strSQL = strSQL & "efternavn= '" & request.Form("efternavn") & "', "
strSQL = strSQL & "adresse= '" & request.Form("adresse") & "', "
strSQL = strSQL & "telefon= '" & request.Form("telefon") & "', "
strSQL = strSQL & "foedselsdag= '" & request.Form("foedselsdag") & "', "
strSQL = strSQL & "civil stand= '" & request.Form("civil stand") & "', "
strSQL = strSQL & "born= '" & request.Form("born") & "', "
strSQL = strSQL & "password= '" & request.Form("password") & "', "
strSQL = strSQL & "Where id=" & session("userid")
Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
end if
%>
<form method="post" action="test1.asp">
<input name="navn" type="text" class="body" size="30">
<input name="efternavn" type="text" class="body" size="30">
<textarea name="civil stand" cols="35" rows="4" class="body"></textarea>
<input name="telefon" type="text" class="body" size="30">
<input name="foedselsdag" type="text" class="body" size="30">
<textarea name="civil stand" cols="35" rows="4" class="body"></textarea>
<textarea name="born" cols="35" rows="4" class="body"></textarea>
<input name="password" type="password" class="body" size="30">
<input name="password2" type="password" class="body" size="30">
<input name="send" type="submit" class="body" value="Opdater">
</form>
www.bruger.service2004.dk/test1.asp
18. juni 2004 - 17:50
#49
det var stien til database der var forkert
<%
if request("UserLoggeIn") <> "" then
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("./database/databaselog.mdb")
Conn.Open DSN
strSQL = "Update user set"
strSQL = strSQL & "fornavn= '" & request.Form("navn") & "', "
strSQL = strSQL & "efternavn= '" & request.Form("efternavn") & "', "
strSQL = strSQL & "adresse= '" & request.Form("adresse") & "', "
strSQL = strSQL & "telefon= '" & request.Form("telefon") & "', "
strSQL = strSQL & "foedselsdag= '" & request.Form("foedselsdag") & "', "
strSQL = strSQL & "civil stand= '" & request.Form("civil stand") & "', "
strSQL = strSQL & "born= '" & request.Form("born") & "', "
strSQL = strSQL & "password= '" & request.Form("password") & "', "
strSQL = strSQL & "Where id=" & session("userid")
Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
end if
%>
<form method="post" action="test1.asp">
<input name="navn" type="text" class="body" size="30">
<input name="efternavn" type="text" class="body" size="30">
<textarea name="civil stand" cols="35" rows="4" class="body"></textarea>
<input name="telefon" type="text" class="body" size="30">
<input name="foedselsdag" type="text" class="body" size="30">
<textarea name="civil stand" cols="35" rows="4" class="body"></textarea>
<textarea name="born" cols="35" rows="4" class="body"></textarea>
<input name="password" type="password" class="body" size="30">
<input name="password2" type="password" class="body" size="30">
<input name="send" type="submit" class="body" value="Opdater">
</form>
www.bruger.service2004.dk/test1.asp
18. juni 2004 - 17:53
#50
Får denne fejl Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0xae8 Thread 0x6d0 DBC 0x9d9c00c Jet'. /test1.asp, line 167
18. juni 2004 - 17:56
#51
Vil se noget fodbold! Vender tilbage efter kampen...
18. juni 2004 - 20:25
#52
strSQL = "Update user set" strSQL = strSQL & "navn= '" & request.Form("navn") & "', " strSQL = strSQL & "efternavn= '" & request.Form("efternavn") & "', " strSQL = strSQL & "adresse= '" & request.Form("adresse") & "', " strSQL = strSQL & "telefon= '" & request.Form("telefon") & "', " strSQL = strSQL & "foedselsdag= '" & request.Form("foedselsdag") & "', " strSQL = strSQL & "[civil stand]= '" & request.Form("civil stand") & "', " strSQL = strSQL & "born= '" & request.Form("born") & "', " strSQL = strSQL & "password= '" & request.Form("password") & "' " strSQL = strSQL & "Where id=" & session("userid")
18. juni 2004 - 20:29
#53
Jeg fatter simpelthen ikke, hvorfor det ikke virker! Skal der være skrevet noget i alle form felter?
18. juni 2004 - 20:34
#54
kun hvis databasen er sat op til det - og så ville fejlen også være en anden. ovenstående fejl skyldes somregel at databasen ikke findes hvor angivet
18. juni 2004 - 22:35
#55
Gider ikke bøvle med det mere! Smid et svar peter hansen og keysersoze, som tak for jeres ihærdige indsats...
18. juni 2004 - 22:58
#56
lidt for hurtigt at give op syntes jeg... oppe i toppen angiver du stien til databasen til at være
DSN = DSN & "DBQ=" & Server.MapPath(".../database/databaselog.mdb")
længere nede ændrer du den til
DSN = DSN & "DBQ=" & Server.MapPath("
www.service2004.dk/database/databaselog.mdb" )
og samtidig angiver peter_hansen den til
DSN = DSN & "DBQ=" & Server.MapPath("./database/databaselog.mdb")
Der er altså meget stor forskel på hvordan stien ser ud - så sørg for at den ser rigtigt ud! derefter så det ud som om din sql også var på rette vej
19. juni 2004 - 00:46
#57
Stien som virker når, jeg trækker informationerne fra databasen er: DSN = DSN & "DBQ=" & Server.MapPath(".../database/databaselog.mdb") og det virker fint... Så det er også sådan den sat op i dette script...
19. juni 2004 - 02:50
#58
Beklager jeg lige smed dig på vildspor med database så ikke du kørte med subdomain i farten. Pinligt... (".../database/databaselog.mdb") er selvfølgelig den rigtige. send det hele til mig via mail, så skal jeg rette det til for dig, og smide kommentare, er kørt lidt fast. Kan nemmelig ikke umiddelbart se, hvor fejl er ud fra de nuværende oplysninger.
30. juli 2004 - 12:53
#59
lukketid eller?
Kurser inden for grundlæggende programmering