Hjälp

ASP

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 →
Medlem sedan aug. 20011 099 inlägg
#21

funkar inte

Medlem sedan aug. 20011 099 inlägg
#22

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")
%>
Medlem sedan dec. 200012 464 inlägg
#23

Hur ser din tabell ut? Felet beror på att det är något kolumnnamn i delete-satsen som inte stämmer med tabelldefinitionen.

Medlem sedan aug. 20011 099 inlägg
#24

öö fattar ej

Medlem sedan aug. 20011 099 inlägg
#25

id = id
username = användarnamn
fnamn = förnamn
enamn = efternamn

Medlem sedan aug. 20011 099 inlägg
#26

Gäsbokens databas

ID
TillID
datum
namn
text

Medlem sedan dec. 200012 464 inlägg
#27

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") & ")"
Medlem sedan aug. 20011 099 inlägg
#28

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

Medlem sedan aug. 20011 099 inlägg
#29

snälla nån snart är det klart säkert bara några fel snuttar

Medlem sedan aug. 20011 099 inlägg
#30

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")
%>
Medlem sedan dec. 200012 464 inlägg
#31

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

Medlem sedan aug. 20011 099 inlägg
#32

tack så mycket :-) LarsG äntligen

Medlem sedan dec. 200012 464 inlägg
#33

så bra.

Medlem sedan aug. 20011 099 inlägg
#34

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")
%>
Medlem sedan dec. 19998 577 inlägg
#35

Ursäkta min okunnighet, men vad gör 'rows'?

Testa detta:

connect.execute sql,,128
Medlem sedan aug. 20011 099 inlägg
#36

det blir ju samma sak

Medlem sedan juni 200032 967 inlägg
#37

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,

Medlem sedan aug. 20011 099 inlägg
#38

id
tillid
datum
namn
text

Medlem sedan aug. 20011 099 inlägg
#39

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")
%>
Medlem sedan juni 200032 967 inlägg
#40

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,

252 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)