jag har en funktion som tar bort inlägg från en databas men jag får den ej att fungera. Här kommer koden:
<%
Case "admin"
Dim deleteID
deleteID = Trim(Request.QueryString("tabort"))
Set Rs = Conn.Execute("SELECT * FROM Post ORDER BY ID DESC")
Set Rs = Conn.Execute("DELETE * FROM Post WHERE ID = '" & deleteID & "'")
Do Until Rs.EOF
%>
<a href="gp.asp?vias=admin&tabort="' & deleteID & '">Ta bort inlägg</a>
<%
Rs.Movenext
Loop
Rs.Close : Set Rs = Nothing
Conn.Close : Set Conn = Nothing
%>
<%
Case "admin"
Dim deleteID
deleteID = Trim(Request.QueryString("tabort"))
Set Rs = Conn.Execute("DELETE * FROM Post WHERE ID = " & deleteID)
Do Until Rs.EOF
%>
<a href="gp.asp?vias=admin&tabort="' & deleteID & '">Ta bort inlägg</a>
<%
Rs.Movenext
Loop
Rs.Close : Set Rs = Nothing
Conn.Close : Set Conn = Nothing
%>
[blue]<%
Case "admin"
Dim deleteID
deleteID = Trim(Cint(Request.QueryString("tabort")))
If Not IsNumeric(deleteId) Then
Response.Write "Id-numret måste vara ett tal.."
Else
'anslut till databasen
Set Rs = Conn.Execute("SELECT Id FROM Post ORDER BY ID DESC")
If Rs.EOF Then
Response.Write "Finns inget att radera.."
Else
Do While Not Rs.EOF
Response.Write "<a href=""gp.asp?[b]visa[/b]=admin&tabort=" & deleteID & """>Ta bort inlägg</a>"
Rs.Movenext
Loop
Rs.Close : Set Rs = Nothing
Conn.Close : Set Conn = Nothing
If Len(Request.Querystring("tabort"))>0 Then
'anslut till databasen
Conn.Execute("DELETE * FROM Post WHERE Id=" & deleteId),,128
Conn.Close : Set Conn = Nothing
End If
End If
%>[/blue]
Du har klumpig kod, denna tror jag ska fungera lite bättre. :D
/r Jag använder ex. IsNumeric() för att kolla att id-numret som skickas med verkligen är ett tal. Lade till ,,128 i sista SQL-satsen också - man glömmer alltid bort det ju!
[RED]<%
Case "admin"
Dim deleteID, intID
deleteID = Trim(Request.QueryString("tabort"))
Set Rs = Conn.Execute("SELECT id FROM Post ORDER BY id DESC")
Do Until Rs.EOF
intID = Rs("id")
Response.Write "<a href=""gp.asp?vias=admin&tabort="& intID &""">Ta bort inlägg</a><br>"
Rs.Movenext
Loop
Rs.Close : Set Rs = Nothing
If Len(deleteID) > 0 Then
Conn.Execute("DELETE FROM Post WHERE ID = "& deleteID),,128
End If
Conn.Close : Set Conn = Nothing
%>[/RED]
Man måste inte klicka två gånger utan inlägget finns kvar fast man har tagit bort det. Inte förrän man har "upddaterat" sidan så försviner inlägget från admin!
Lägg till en redirect så du åker tillbaka till sidan igen..
Se fet stil i koden nedan.
[red]<%
Case "admin"
Dim deleteID, intID
deleteID = Trim(Request.QueryString("tabort"))
Set Rs = Conn.Execute("SELECT id FROM Post ORDER BY id DESC")
Do Until Rs.EOF
intID = Rs("id")
Response.Write "<a href=""gp.asp?vias=admin&tabort="& intID &""">Ta bort inlägg</a><br>"
Rs.Movenext
Loop
Rs.Close : Set Rs = Nothing
If Len(deleteID) > 0 Then
Conn.Execute("DELETE FROM Post WHERE ID = "& deleteID),,128
[b]Response.Redirect "gp.asp"[/b]
End If
Conn.Close : Set Conn = Nothing
%>[/red]
Om du redan har gjort form:en i html kanske ASP-koden kan se ut någonting såhär, om vi fortsätter på m_soderlund's kod?
<%
Case "admin"
Dim deleteID
deleteID = Trim(CInt(Request.QueryString("tabort")))
If NOT IsNumeric(deleteId) Then
Response.Write("Id-numret måste vara ett tal..")
Response.End
Else
Set Rs = Conn.Execute("SELECT Id FROM Post ORDER BY ID DESC")
If Rs.EOF Then
Response.Write("Finns inget att radera..")
Else
Do Until Rs.EOF
Response.Write("<a href=""gp.asp?visa=admin&tabort=" & Id & """>Ta bort inlägg</a><br>" & vbCrLf)
Response.Write("<a href=""gp.asp?visa=admin&redigera=" & Id & """>Redigera inlägg</a><br>" & vbCrLf)
Rs.Movenext
Loop
End If
Rs.Close
Set Rs = Nothing
Conn.Close
Set Conn = Nothing
End If
If Len(Request.QueryString("tabort")) > 0 Then
Conn.Execute("DELETE FROM Post WHERE Id=" & deleteId),,128
Response.Redirect("gb.asp")
Conn.Close
Set Conn = Nothing
End If
If Len(Request.QueryString("redigera")) > 0 AND IsNumeric(Request.QueryString("redigera")) Then
Conn.Execute("UPDATE Post SET namn = '" & Request.Form("namn") & "', mail = '" & Request.Form("mail") & "' WHERE Id = " & Request.QueryString("redigera")),,128 ' O.s.v
Response.Redirect("gb.asp")
Conn.Close
Set Conn = Nothing
End If
%>
Jag skall göra en funktion för att uppdatera resp. ta bort inläggen i min gästbok. Jag vet inte vad jag skall skriva efter WHERE ID på SQL satsen där jag uppdaterar. Så här långt har jag kommit:
<%
Case "admin"
Dim deleteID, updateID
deleteID = Trim(Request.QueryString("tabort"))
updateID = Trim(Request.QueryString("redigera"))
Set Rs = Conn.Execute("SELECT * FROM Post ORDER BY id DESC")
If Len(deleteID) > 0 Then
Conn.Execute("DELETE FROM Post WHERE ID = "& deleteID),,128
Response.Redirect"gb.asp?visa=admin&tabort"
End if
If Len(updateID) > 0 Then
Conn.Execute("UPDATE Post SET "& namn & "','" & epost & "','" & ort & "','" & meddelande & " WHERE ID = )
Response.Redirect"gb.asp?visa=admin&redigera"
End if
Do Until Rs.EOF
%>
Länkarna för att utföra funktionerna ser ut såhär: