Avatar billede babyworm Nybegynder
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()
%>
Avatar billede oversjanten Nybegynder
07. april 2004 - 12:11 #1
Prøv at udskrive strUserid , for at se om du får den med over
Avatar billede Jman Praktikant
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")
Avatar billede babyworm Nybegynder
07. april 2004 - 12:13 #3
Når jeg udskriver strUserid og den udskriver ingenting...
Avatar billede babyworm Nybegynder
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
Avatar billede Jman Praktikant
07. april 2004 - 12:25 #5
har du Userid i toppen (i adresselinien), når du kommer ind til formularen ?
Avatar billede Jman Praktikant
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
Avatar billede babyworm Nybegynder
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()
%>
Avatar billede babyworm Nybegynder
07. april 2004 - 12:27 #8
Men Userid er en kolonne i min database...
Avatar billede Jman Praktikant
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")
Avatar billede Jman Praktikant
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",)
Avatar billede babyworm Nybegynder
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
Avatar billede babyworm Nybegynder
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()
%>
Avatar billede Jman Praktikant
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
Avatar billede Jman Praktikant
07. april 2004 - 12:36 #14
Husk at ændre din kode i <Form> også:

<form method="post" action="edituser.asp?id=<%=StrUserid%>&cmd=update">
Avatar billede babyworm Nybegynder
07. april 2004 - 12:37 #15
Det kan ikke passe... :)

For så kan den slet ikke hente data ud fra databasen :)
Avatar billede babyworm Nybegynder
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
Avatar billede Jman Praktikant
07. april 2004 - 12:38 #17
har du husket Form ?
Avatar billede babyworm Nybegynder
07. april 2004 - 12:40 #18
Jepper
Avatar billede Jman Praktikant
07. april 2004 - 12:41 #19
hvad siger din    Response.Write(strSQL) ??
Avatar billede babyworm Nybegynder
07. april 2004 - 12:42 #20
UPDATE Users SET Username='Martin',Password='flæsks',Redirect='test1.asp',Group='3' WHERE Userid=
Avatar billede Jman Praktikant
07. april 2004 - 12:43 #21
Står ID i toppen ?
Avatar billede Jman Praktikant
07. april 2004 - 12:43 #22
prøv evt. lige at smide koden igen - efter de sidste tilrettelser
Avatar billede babyworm Nybegynder
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()
%>
Avatar billede Jman Praktikant
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
Avatar billede babyworm Nybegynder
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
Avatar billede Jman Praktikant
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
Avatar billede babyworm Nybegynder
07. april 2004 - 12:52 #27
Heh..

Min group er et talfelt.
Avatar billede Jman Praktikant
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
Avatar billede babyworm Nybegynder
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:
Avatar billede babyworm Nybegynder
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()
%>
Avatar billede Jman Praktikant
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
Avatar billede Jman Praktikant
07. april 2004 - 12:56 #32
hvis ikke det virker, kunne jeg godt tænke mig at se response.writen på din UPDATE igen :)
Avatar billede babyworm Nybegynder
07. april 2004 - 12:59 #33
Sådan.. så virker den :)

Takker :)
Avatar billede Jman Praktikant
07. april 2004 - 13:01 #34
det var godt - 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