funkar inte
Hjälp
67 svar · 419 visningar · startad av jboy_87 · sida 2 av 4
Trådstarten, av jboy_87
jag har gjort så att alla medlemmar får en egen gästbok och lagt in så att användaren kan ta bort inläggen fast andra användare kan också ta bort inlägg. Hur gör jag så bara den som e inloggad kan ta bort inläggen?? dodelete2.asp <% Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open "driver={Microsoft Access Driver (.mdb)};dbq=" & Server.MapPath("Database/gb.mdb")&";"
Läs hela trådstarten →do_delete2
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/do_delete2.asp, line 15
<!-- #include file="adovbs.inc" -->
<% If NOT session("login") = "ok" THEN %>
<%Session("meddelande") = "Du måste logga in för att kunna besöka den begärda sidan" %>
<script language = "javascript">
top.location.href='default.asp';
</script>
<% end if%>
<%Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("Database/gb.mdb")&";"
sql = "delete From gb Where ID=" &Request.QueryString("delID")
sql = sql & " and (name = '" & session("name") & "' or tillid = " & session("id") & ")"
[b]connect.execute sql,rows,128[/b]
if rows = 0 then
response.write "Du får bara ta bort dina inlägg eller de som är skriva till dig"
end if
connect.close
Set Connect = nothing
Response.Redirect "read_gb.asp?tillid=" & session("id")
%>
Hur ser din tabell ut? Felet beror på att det är något kolumnnamn i delete-satsen som inte stämmer med tabelldefinitionen.
öö fattar ej
id = id
username = användarnamn
fnamn = förnamn
enamn = efternamn
Det skall vara namn istf name i deleete-satsen
sql = "delete From gb Where ID=" &Request.QueryString("delID")
sql = sql & " and (namn = '" & session("namn") & "' or tillid = " & session("id") & ")"
nu går det inte och radera bort igen
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'ID= and (namn = 'Josef Kalkana' or tillid = 2)'.
/do_delete2.asp, line 15
snälla nån snart är det klart säkert bara några fel snuttar
skriver ut ta bort länken:
<% If clng(recset("tillid")) = clng(Session("id")) or cstr(session("namn")) = cstr(recset("namn")) Then %>
- <a href="do_delete2.asp?id=<%=RecSet("ID")%>">
<font size="1" face="Verdana">Ta bort.</font></a></font><%End If%>
</td>
</tr>
Delete:
<%Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("Database/gb.mdb")&";"
sql = "delete From gb Where ID=" &Request.QueryString("delID")
sql = sql & " and (id = '" & session("namn") & "' or tillid = " & session("namn") & ")"
connect.execute sql,rows,128
if rows = 0 then
response.write "Du får bara ta bort dina inlägg eller de som är skriva till dig"
end if
connect.close
Set Connect = nothing
Response.Redirect "read_gb.asp?tillid=" & session("id")
%>
I delete-länken så står det
delete_2.asp?id
men sedan i delete_2 så använder du
request.querystring("delid").
Då det inte finns någon sådan variabel i querystring så blir det en tom sträng när du bygger ihop delete-satsen.
Om du ändrar till
delete_2.asp?delid
så kanske
tack så mycket :-) LarsG äntligen
så bra.
men Lars fan ännu ett problem när jag klickar på användaren och kollar in hans gästbok och vill radera de inlägg jag skrev så funkar det får felmeddelandet:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.
/do_delete2.asp, line 15
<%Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("Database/gb.mdb")&";"
sql = "delete From gb Where ID=" &Request.QueryString("delID")
sql = sql & " and (id = '" & session("namn") & "' or tillid = " & session("id") & ")"
[b]connect.execute sql,rows,128[/b]
if rows = 0 then
response.write "Du får bara ta bort dina inlägg eller de som är skriva till dig"
end if
connect.close
Set Connect = nothing
Response.Redirect "read_gb.asp?tillid=" & session("id")
%>
det blir ju samma sak
Vide: rows borde efter execute innehålla RecordsAffected, alltså ett värde som berättar hur många poster som påverkades av SQL-frågan.
JBoy, vad är det för datatyper i tabellen på de fält du använder i SQL-frågan?
Mvh,
id
tillid
datum
namn
text
har gjort såhär:
och det funkar tror jag!!
<%Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("Database/gb.mdb")&";"
Set RecSet = Server.CreateObject("ADODB.Recordset")
sql = "delete From gb Where ID=" &Request.QueryString("delID")
sql = sql & " and (id = '" & session("namn") & "' or tillid = " & session("id") & ")"
on error resume next
connect.execute sql,,128
Addera = "Select * From gb Where ID=" &Request.QueryString("delID")
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet.Delete
RecSet.Update
RecSet.Close
Set RecSet = nothing
Set Connect = nothing
connect.close
Set Connect = nothing
Response.Redirect "read_gb.asp?tillid=" & session("id")
%>
Uhm, vad var det svar på? Vad är vad?
Din SQL-fråga ser konstig ut. Du anger id på två ställen, den ena anger du som ett textfält, den andra som ett tal, och dessutom jämför du med olika värden och ett AND emellan.
Jag markerar med fett nedan. Skall det id verkligen vara ID, inte något annat fält?
sql = "delete From gb Where ID=" &Request.QueryString("delID")
sql = sql & " and ([b]id[/b] = '" & session("namn") & "' or tillid = " & session("id") & ")"
Mvh,

