webForumDet fria alternativet

Ta bort funktion

ASP

23 svar · 495 visningar · startad av asp

Medlem sedan aug. 2002733 inlägg
Frågan#1

Hej,

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
%>
Medlem sedan juni 20019 519 inlägg
#2

ändra till:

<%

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
%>

om ID är räknare så ska du inte använda '

Medlem sedan sep. 20026 425 inlägg
#3
Set Rs = Conn.Execute("DELETE * FROM Post Where Id=" & deleteID)

Din kod är lite skum, du plockar ut alla fält från databasen och vill visa alla poster, och sedan raderar någon liten post?

Medlem sedan aug. 2002733 inlägg
#4

Nej, jag vill lista upp alla Inlägg för att sedan radera dem..

Medlem sedan sep. 20026 425 inlägg
#5

Ännu bättre:

[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!

Medlem sedan apr. 20003 174 inlägg
#6

Hmm.. denna borde funka:

[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]
Medlem sedan aug. 2002733 inlägg
#7

allt fungerar nästam perfekt nu. man måste klicka två gånger för att radera ett inlägg.

hur skall jag skriva för att få fram id utanför aspkoden?

<%= "& intID &" %> fungerar inte

Medlem sedan apr. 20003 174 inlägg
#8

Detta räcker:

[red]<%= intID %>[/RED]
Medlem sedan aug. 2002733 inlägg
#9

Men man måste fortfarande klicka två gånger..

Medlem sedan aug. 2002733 inlägg
#10

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!

Medlem sedan apr. 20003 174 inlägg
#11

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]
Medlem sedan aug. 2002733 inlägg
#12

tackar!

Medlem sedan aug. 2002733 inlägg
#13

Behöver hjälp med att uppdatera inlägg också. Kan ni tänka er att hjälpa mig?

Medlem sedan jan. 20032 285 inlägg
#14

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
%>

/red Redigerat koden. :)

Medlem sedan aug. 2002733 inlägg
#15
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("db/gastbok.mdb")
%>
<html>
<head>
<title>Gästbok 1.1 av Marcus Christiansson</title>
<style type="text/css">
BODY {font-family: verdana; font-size: 11px; color: #000000; margin: 0px; text-align: center}
TABLE, TD {font-family: verdana; font-size: 11px; color: #000000}
INPUT, SELECT, TEXTAREA {font-family: verdana; font-size: 11px; color: #000000; border: 1px solid #000000; width: 100%; height: 17}
A {text-decoration: none; color: #000000}
A:VISIT {text-decoration: none; color: #000000}
A:HOVER {text-decoration: none; color: #000000}
</style>
</head>
<body>

<table width="300" cellpadding="0" cellspacing="0">
<tr>
<td height="30"></td>
</tr>
<tr>
<td>

<table width="100%" cellpadding="2" cellspacing="0" style="border: 1px solid #000000; text-align: center">
<tr>
<td width="33%" style="border-right: 1px solid #000000; background-color: #F9F9F9; cursor: hand" onMouseOver="this.style.backgroundColor='#CCCCCC'"; onMouseOut="this.style.backgroundColor='#F9F9F9';" onClick="location.href('gb.asp?visa=skriv')";>Skriv ett inlägg</td>
<td width="34%" style="border-right: 1px solid #000000; background-color: #F9F9F9; cursor: hand" onMouseOver="this.style.backgroundColor='#CCCCCC'"; onMouseOut="this.style.backgroundColor='#F9F9F9';" onClick="location.href('gb.asp?visa=las')";>Läs i gästboken</td>
<td width="33%" style="background-color: #F9F9F9; cursor: hand" onMouseOver="this.style.backgroundColor='#CCCCCC'"; onMouseOut="this.style.backgroundColor='#F9F9F9';" onClick="location.href('gb.asp?visa=admin')";>Aministration</td>
</td>
</tr>
</table>

</td>
</tr>
<tr>
<td height="20"></td>
</tr>
<tr>
<td>

<%
visa = Request("visa") 
Select case visa
Case "skriv"
%>

<table width="300" cellpadding="2" cellspacing="5" style="border: 1px solid #000000; background-color: #F9F9F9">
<tr>
<form method="post" name="post" action="gb.asp?visa=spara">
<td width="100">Namn</td>
<td width="200"><input name="namn" type="text" /></td>
</tr>
<tr>
<td width="100">E-post</td>
<td width="200"><input name="epost" type="text" /></td>
</tr>
<tr>
<td width="100">Ort</td>
<td width="200"><input name="ort" type="text" /></td>
</tr>
<tr>
<td width="100" valign="top">Meddelande</td>
<td width="200"><textarea name="meddelande" style="height: 80"></textarea>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Skicka meddelande" onClick="B1_OnClick(); return false;">
</td>
</tr>
</table>
</form>
<script language="JavaScript">
function B1_OnClick() {
  var nam = document.post.namn.value;
  var med = document.post.meddelande.value;
  
  if((nam.length !=0) && (med.length !=0)) {
    document.post.submit();
  } else {
    alert("Namn och meddelande måste fyllas i!");
  }
}
</script>

<%
Case "spara"
  
Dim namn, epost, ort, meddelande
namn = Trim(Request.Form("namn"))
epost = Trim(Request.Form("epost"))
ort = Trim(Request.Form("ort"))
meddelande = Trim (Request.Form("meddelande"))
  
If Len(namn) > 0 Then
  Dim datum
  datum = date()
  SQL = "INSERT INTO Post (Namn, Epost, Ort, Meddelande, Datum) VALUES ('" & namn & "','" & epost & "','" & ort & "','" & meddelande & "','" & datum & "')"
  Conn.Execute(SQL)
  Response.Redirect"gb.asp?visa=las"
  Conn.Close
  Set Conn = Nothing
End If
  
Case "las"
  
Set Rs = Conn.Execute("SELECT * FROM Post ORDER BY ID DESC")
Do Until Rs.EOF
  
%>
<table width="300" cellpadding="3" cellspacing="0" style="border: 1px solid #000000; background-color: #F9F9F9">
<tr>
<td><%= rs("meddelande") %></td>
</tr>
<tr>
<td style="font-size: 10px; background-color: #CCCCCC">Skrivet av
<% If rs("epost") < "0" then
response.write"" & rs("namn") & ""
Else
response.write"<a href='mailto:" & rs("epost") & "'>" & rs("namn") & "</a>"
End if %>
<% If rs("ort") < "0" then
response.write""
Else
response.write" från " & rs("ort") & ""
End if
response.write" , "
Session.LCID = 1053
Response.Write(FormatDateTime(rs("datum"), vbLongDate))
%>.</td>
</tr>
</table>
<br>
<%
Rs.Movenext
Loop
Rs.Close : Set Rs = Nothing
Conn.Close : Set Conn = Nothing
  
Case "admin"
  
Dim deleteID, updateID
deleteID = Trim(Request.QueryString("tabort"))
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&rtabort"
End if
Do Until Rs.EOF 
%>
<table width="300" cellpadding="2" cellspacing="5" style="border: 1px solid #000000; background-color: #F9F9F9">
<tr>
<td width="250" style="font-size: 10px">Skrivet av <%= rs("namn") %>,
<%
Session.LCID = 1053
Response.Write(FormatDateTime(rs("datum"), vbLongDate))
%></td>
<td width="50" style="text-align: right">
<a href="gb.asp?visa=admin&redigera=<%= rs("id") %>"><img src="bilder/redigera.gif" title="Redigera" border="0" width="11" height="12"></a>
<a href="gb.asp?visa=admin&tabort=<%= rs("id") %>"><img src="bilder/tabort.gif" title="Radera" border="0" width="11" height="12"></a></td>
</tr>
</table>
<br>
<%
Rs.Movenext
Loop
Rs.Close : Set Rs = Nothing
Conn.Close : Set Conn = Nothing
%>
<table width="300" cellpadding="2" cellspacing="5" style="border: 1px solid #000000; background-color: #F9F9F9">
<tr>
<td width="100">Lösenord</td>
<td width="200">
<form name="login" method="post" action="gb.asp?visa=admin">
<input type="password" name="pass"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Logga in.."></td>
</tr>
</table>
</form>

<%
Case Else
Response.Redirect"gb.asp?visa=las"
End Select
%>

</td>
</tr>
</table>

</body>
</html>
Medlem sedan aug. 2002733 inlägg
#16

Ingen som kan hjälpa mig?

Medlem sedan juni 200032 967 inlägg
#17

Det är lättare att få någon att hjälpa till om du berättar vad problemet är. :i

Jag är inte sugen på att lusläsa hundra rader kod om jag inte vet vad jag ska titta efter.

Mvh

Medlem sedan aug. 2002733 inlägg
#18

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:

<a href="gb.asp?visa=admin&redigera=<%= rs("id") %>"><img src="bilder/redigera.gif" title="Redigera" border="0" width="11" height="12"></a>
<a href="gb.asp?visa=admin&tabort=<%= rs("id") %>"><img src="bilder/tabort.gif" title="Radera" border="0" width="11" height="12"></a>
Medlem sedan aug. 2002733 inlägg
#19

Ingen som vet?

Medlem sedan apr. 200315 inlägg
#20

Du ska lägga till denna querystringen.

Request.Querystring("redigera")

Så SQL raden bör se ut så här:

Conn.Execute("UPDATE Post SET "& namn & "','" & epost & "','" & ort & "','" & meddelande & " WHERE ID = " & request.querystring("redigera"))
277 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)