07. april 2004 - 12:03
Der er
33 kommentarer og 1 løsning
Problemer med en Update sætning
Hejsa, Jeg har lavet en fil der skulle opdatere i en database.. filen henter inholdet ud, og så skulle man kunne redigere i teksten, og opdatere filen. Når jeg skal opdatere vil den ikke.. og så lavede jeg en udskrift af hvad den gjorde, og fandt ud af at fejlen liggede i update sætningen, som ikke kan finde ID'et Min udskrift: UPDATE Users SET Username='Martin',Password='flæsks',Redirect='test1.asp',Group='3' WHERE Userid= Min kode: <!-- #include file="conn.asp" --> <link rel="stylesheet" type="text/css" href="style.css"> <% strCmd = Request.QueryString("cmd") openConn() If strCmd = "update" Then strUserid = Request.Form("Userid") strUsername = replace(Request.Form("username")&"","'","''") strPassword = replace(Request.Form("password")&"","'","''") strRedirect = replace(Request.Form("redirect")&"","'","''") strGroup = replace(Request.Form("group")&"","'","''") strSQL = "UPDATE Users SET Username='" & strUsername & "',Password='" & strPassword & "',Redirect='" & strRedirect & "',Group='" & strGroup & "' WHERE Userid=" & strUserid 'connection.Execute(strSQL) Response.Write(strSQL) %> <h2>Brugeren er nu rettet!</h2><br> <a href="overview.asp">Tilbage til oversigten</a> <% Else strId = Request.QueryString("id") strSQL = "SELECT username,password,redirect,group FROM Users WHERE UserId=" & strId Set rs = connection.Execute(strSQL) If Not (rs.EOF Or rs.BOF) Then %> <form method="post" action="edituser.asp?cmd=update"> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td>Brugernavn:<br><input type="text" name="username" value="<%=rs("username")%>" class="input"><br><br></td> </tr> <tr> <td>Adgangskode:<br><input type="text" name="password" value="<%=rs("password")%>" class="input"><br><br></td> </tr> <tr> <td>Redirect:<br><input type="text" name="redirect" value="<%=rs("redirect")%>" class="input"><br><br></td> </tr> <tr> <td>Gruppen:<br><input type="text" name="group" value="<%=rs("group")%>" class="input"><br><br></td> </tr> <tr> <td><input type="submit" value="Ret brugeren" class="knap"></td> </tr> </table><br><br> <a href="java script:this.history.go(-1);">Tilbage</a> </form> <% Else %> Fejl, brugeren eksisterer ikke<br><br> <a href="java script:this.history.go(-1);">Tilbage</a> <% End If End If closeConn() %>
Annonceindlæg fra Barco
07. april 2004 - 12:11
#1
Prøv at udskrive strUserid , for at se om du får den med over
07. april 2004 - 12:11
#2
Jeg går ud fra at UserID er fast, og derfor ikke er med i "retteformularen" Du skal derfor have den med i din post'ing. Med udgangsppunkt i at du allerede har Userid i din string, når brugeren kommer til siden skal det være noget a´la: <form method="post" action="edituser.asp?UserID=request.querystring("Userid")&cmd=update"> og nede i din kode skal du ændre strUserid = Request.Form("Userid") til strUserid = Request.querystring("Userid")
07. april 2004 - 12:13
#3
Når jeg udskriver strUserid og den udskriver ingenting...
07. april 2004 - 12:16
#4
Når jeg laver den anden metode siger den: Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "UserId=". /workspace/log/edituser.asp, line 30
07. april 2004 - 12:25
#5
har du Userid i toppen (i adresselinien), når du kommer ind til formularen ?
07. april 2004 - 12:25
#6
Hvor har du Userid på den foregående side - det må være der, der går noget galt... Du får ikke UserID med over
07. april 2004 - 12:27
#7
Det kommer fra min overview.asp <% session.LCID=1030 %> <!--#include file="protect.inc"--> <!-- #include file="conn.asp" --> <html> <head> <link rel="stylesheet" type="text/css" href="style.css"> <% openConn() SQL = "SELECT UserID, Username, LastLogin, Logintimes FROM Users ORDER BY LastLogin DESC" Set rs = connection.Execute(SQL) %> <script language="Javascript"> function showConfirm(id) { if (confirm("Er du sikker på du vil slette brugeren?")) { return true; }else{ return false; }} </script> </head> <body> <h1>Bruger oversigt</h1> <% if rs.EOF Then %> <p><i>Ingen brugere i databasen</i><br> <% Else %> </p> <table width="400" border="0" cellpadding="0" cellspacing="0"> <tr> <td><b>Brugernavn:</b></td> <td width="150" align="center"><b>Sidst logget ind:</b></td> <td width="75" align="center"><b>Antal login</b></td> </tr> <% While NOT rs.EOF %> <tr> <td style="padding-left:3px;">- <%= rs("Username") %></td> <td width="150" align="center"><%=FormatDateTime(rs("Lastlogin"), vbShortDate)%></td> <td width="75" align="center"><%= rs("Logintimes") %></td> <td width="47px"><a href="edituser.asp?id=<%=rs("UserId")%>">Rediger</a></td> <td width="30px"><a href="deleteuser.asp?id=<%=rs("UserId")%>" onclick="return showConfirm();">Slet</a></td> </tr> <% rs.MoveNext Wend %> </table> <br><div align="left"><hr style="height:1px; width: 400; color:FFFFFF;"></div> <a href="adduser.asp">Tilføj en bruger</a> <br><br><br><a href="logaf.asp">Log af</a> <% End if %> </body> </html> <% closeConn() %>
07. april 2004 - 12:27
#8
Men Userid er en kolonne i min database...
07. april 2004 - 12:28
#9
den kommer herfra: td width="47px"><a href="edituser.asp?id=<%=rs("UserId")%>">Rediger</a></td> så skal du ændre den tidligere beskrevede linie: strUserid = Request.querystring("id")
07. april 2004 - 12:29
#10
eller også skal du omvendt ændre dit "rette-link" til td width="47px"><a href="edituser.asp?Userid=<%=rs("UserId")%>">Rediger</a></td> c",)
07. april 2004 - 12:31
#11
Hvis jeg ændrer min edituser.asp til strUserid = Request.querystring("id") Men så skriver den; Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "UserId=". /workspace/log/edituser.asp, line 29
07. april 2004 - 12:32
#12
Min kode nu: <!-- #include file="conn.asp" --> <link rel="stylesheet" type="text/css" href="style.css"> <% strCmd = Request.QueryString("cmd") openConn() If strCmd = "update" Then strUserid = Request.querystring("id") strUsername = replace(Request.Form("username")&"","'","''") strPassword = replace(Request.Form("password")&"","'","''") strRedirect = replace(Request.Form("redirect")&"","'","''") strGroup = replace(Request.Form("group")&"","'","''") strSQL = "UPDATE Users SET Username='" & strUsername & "',Password='" & strPassword & "',Redirect='" & strRedirect & "',Group='" & strGroup & "' WHERE Userid=" & strUserid connection.Execute(strSQL) 'Response.Write(strSQL) %> <h2>Brugeren er nu rettet!</h2><br> <a href="overview.asp">Tilbage til oversigten</a> <% Else strId = Request.QueryString("id") strSQL = "SELECT username,password,redirect,group FROM Users WHERE UserId=" & strId Set rs = connection.Execute(strSQL) If Not (rs.EOF Or rs.BOF) Then %> <form method="post" action="edituser.asp?cmd=update"> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td>Brugernavn:<br><input type="text" name="username" value="<%=rs("username")%>" class="input"><br><br></td> </tr> <tr> <td>Adgangskode:<br><input type="text" name="password" value="<%=rs("password")%>" class="input"><br><br></td> </tr> <tr> <td>Redirect:<br><input type="text" name="redirect" value="<%=rs("redirect")%>" class="input"><br><br></td> </tr> <tr> <td>Gruppen:<br><input type="text" name="group" value="<%=rs("group")%>" class="input"><br><br></td> </tr> <tr> <td><input type="submit" value="Ret brugeren" class="knap"></td> </tr> </table><br><br> <a href="java script:this.history.go(-1);">Tilbage</a> </form> <% Else %> Fejl, brugeren eksisterer ikke<br><br> <a href="java script:this.history.go(-1);">Tilbage</a> <% End If End If closeConn() %>
07. april 2004 - 12:34
#13
29: strSQL = "SELECT username,password,redirect,group FROM Users WHERE UserId=" & strId Det er fordi du kun bruger StrID Den skal ændres til strSQL = "SELECT username,password,redirect,group FROM Users WHERE UserId=" & strUserid
07. april 2004 - 12:36
#14
Husk at ændre din kode i <Form> også: <form method="post" action="edituser.asp?id=<%=StrUserid%>&cmd=update">
07. april 2004 - 12:37
#15
Det kan ikke passe... :) For så kan den slet ikke hente data ud fra databasen :)
07. april 2004 - 12:38
#16
Så siger den: Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen. /workspace/log/edituser.asp, line 18
07. april 2004 - 12:38
#17
har du husket Form ?
07. april 2004 - 12:40
#18
Jepper
07. april 2004 - 12:41
#19
hvad siger din Response.Write(strSQL) ??
07. april 2004 - 12:42
#20
UPDATE Users SET Username='Martin',Password='flæsks',Redirect='test1.asp',Group='3' WHERE Userid=
07. april 2004 - 12:43
#21
Står ID i toppen ?
07. april 2004 - 12:43
#22
prøv evt. lige at smide koden igen - efter de sidste tilrettelser
07. april 2004 - 12:44
#23
<!-- #include file="conn.asp" --> <link rel="stylesheet" type="text/css" href="style.css"> <% strCmd = Request.QueryString("cmd") openConn() If strCmd = "update" Then strUserid = Request.querystring("id") strUsername = replace(Request.Form("username")&"","'","''") strPassword = replace(Request.Form("password")&"","'","''") strRedirect = replace(Request.Form("redirect")&"","'","''") strGroup = replace(Request.Form("group")&"","'","''") strSQL = "UPDATE Users SET Username='" & strUsername & "',Password='" & strPassword & "',Redirect='" & strRedirect & "',Group='" & strGroup & "' WHERE Userid=" & strUserid 'connection.Execute(strSQL) Response.Write(strSQL) %> <h2>Brugeren er nu rettet!</h2><br> <a href="overview.asp">Tilbage til oversigten</a> <% Else strId = Request.QueryString("id") strSQL = "SELECT username,password,redirect,group FROM Users WHERE UserId=" & strId Set rs = connection.Execute(strSQL) If Not (rs.EOF Or rs.BOF) Then %> <form method="post" action="edituser.asp?id=<%=StrUserid%>&cmd=update"> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td>Brugernavn:<br><input type="text" name="username" value="<%=rs("username")%>" class="input"><br><br></td> </tr> <tr> <td>Adgangskode:<br><input type="text" name="password" value="<%=rs("password")%>" class="input"><br><br></td> </tr> <tr> <td>Redirect:<br><input type="text" name="redirect" value="<%=rs("redirect")%>" class="input"><br><br></td> </tr> <tr> <td>Gruppen:<br><input type="text" name="group" value="<%=rs("group")%>" class="input"><br><br></td> </tr> <tr> <td><input type="submit" value="Ret brugeren" class="knap"></td> </tr> </table><br><br> <a href="java script:this.history.go(-1);">Tilbage</a> </form> <% Else %> Fejl, brugeren eksisterer ikke<br><br> <a href="java script:this.history.go(-1);">Tilbage</a> <% End If End If closeConn() %>
07. april 2004 - 12:46
#24
Okay! Det er fordi din StrUserid ligger inde i din if-sætning - så kommer den jo ikke med Prøv at flytte strUserid = Request.querystring("id") op over If strCmd = "update" Then
07. april 2004 - 12:48
#25
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen. /workspace/log/edituser.asp, line 20
07. april 2004 - 12:50
#26
hvad siger din Response.Write(strSQL) nu?? Hvis Userid er med nu er det højst sandsynligt en af to fejl: 1. Password er et reserveret ord 2. Din Group-kolonne er et tal-felt
07. april 2004 - 12:52
#27
Heh.. Min group er et talfelt.
07. april 2004 - 12:52
#28
så skal der ikke ' om strSQL = "UPDATE Users SET Username='" & strUsername & "',Password='" & strPassword & "',Redirect='" & strRedirect & "',Group=" & strGroup & " WHERE Userid=" & strUserid
07. april 2004 - 12:54
#29
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i UPDATE-sætningen. /workspace/log/edituser.asp, line 20 Browsertype:
07. april 2004 - 12:54
#30
<!-- #include file="conn.asp" --> <link rel="stylesheet" type="text/css" href="style.css"> <% strCmd = Request.QueryString("cmd") openConn() strUserid = Request.querystring("id") If strCmd = "update" Then strUsername = replace(Request.Form("username")&"","'","''") strPassword = replace(Request.Form("password")&"","'","''") strRedirect = replace(Request.Form("redirect")&"","'","''") strGroup = replace(Request.Form("group")&"","'","''") strSQL = "UPDATE Users SET Username='" & strUsername & "',Password='" & strPassword & "',Redirect='" & strRedirect & "',Group=" & strGroup & " WHERE Userid=" & strUserid connection.Execute(strSQL) 'Response.Write(strSQL) %> <h2>Brugeren er nu rettet!</h2><br> <a href="overview.asp">Tilbage til oversigten</a> <% Else strId = Request.QueryString("id") strSQL = "SELECT username,password,redirect,group FROM Users WHERE UserId=" & strId Set rs = connection.Execute(strSQL) If Not (rs.EOF Or rs.BOF) Then %> <form method="post" action="edituser.asp?id=<%=StrUserid%>&cmd=update"> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td>Brugernavn:<br><input type="text" name="username" value="<%=rs("username")%>" class="input"><br><br></td> </tr> <tr> <td>Adgangskode:<br><input type="text" name="password" value="<%=rs("password")%>" class="input"><br><br></td> </tr> <tr> <td>Redirect:<br><input type="text" name="redirect" value="<%=rs("redirect")%>" class="input"><br><br></td> </tr> <tr> <td>Gruppen:<br><input type="text" name="group" value="<%=rs("group")%>" class="input"><br><br></td> </tr> <tr> <td><input type="submit" value="Ret brugeren" class="knap"></td> </tr> </table><br><br> <a href="java script:this.history.go(-1);">Tilbage</a> </form> <% Else %> Fejl, brugeren eksisterer ikke<br><br> <a href="java script:this.history.go(-1);">Tilbage</a> <% End If End If closeConn() %>
07. april 2004 - 12:56
#31
prøv lige at indkapsle ordet Password: strSQL = "UPDATE Users SET Username='" & strUsername & "',[Password]='" & strPassword & "',Redirect='" & strRedirect & "',Group='" & strGroup & "' WHERE Userid=" & strUserid
07. april 2004 - 12:56
#32
hvis ikke det virker, kunne jeg godt tænke mig at se response.writen på din UPDATE igen :)
07. april 2004 - 12:59
#33
Sådan.. så virker den :) Takker :)
07. april 2004 - 13:01
#34
det var godt - tak for point
Kurser inden for grundlæggende programmering