Jag vill gärna veta hur man ska göra när man vill radera flera poster i en databas där alla IDn är olika, typ så som man gör när man ska radera flera mail i exempelvis Hotmail... jag har fått total blackout, så lite hjälp på traven skulle sitta fint. Resultatet av ASP sidan för inkorgen: Om du vill göra en säker lösning, bör du kontrollera IN satsen: En fråga här: Id IN (1, 2, 3)Markera checkbox o radera i databasen.. [LÖST]
Jag har alla checkboxar klara där alla har 'name' = ID, samt 'value' enligt ID numren i databasen. Frågan är hur jag ska göra sen. Så här har jag nu:
<code>
ID = Request.querystring("ID")
set con=server.createobject("ADODB.connection")
con.Open "DSN=EJ_Web"
SQL = "DELETE * From Mess WHERE ID = " & ID
rs = con.execute(SQL)
con.Close
Set con = nothing
set rs = nothing
</code>
men det händer inget...
Tack på förhand!
//SusanneSv: Markera checkbox o radera i databasen..
<code>
<input type=checkbox name=ID value=1>
<input type=checkbox name=ID value=2>
<input type=checkbox name=ID value=3>
<input type=checkbox name=ID value=4>
<input type=checkbox name=ID value=5>
osv...
</code>
Sidan som tar bort det:
<code>
ID = Request.querystring("ID")
set con=server.createobject("ADODB.connection")
con.Open "DSN=EJ_Web"
con.execute "DELETE * From Mess WHERE ID IN (" & ID & ")"
con.Close
Set con = nothing
</code>Sv: Markera checkbox o radera i databasen..
<code>
Function SQLNumericIn(Text)
Dim Count
Dim Index
Dim Value
Dim Values
Dim Offset
Values = Split(Text, ",")
Count = UBound(Values)
For Index = 0 To Count
Value = Values(Index)
If IsNumeric(Value) Then
Values(Index - Offset) = CLng(Value)
Else
Offset = Offset + 1
End If
Next
If Offset Then
If Offset <= Count Then
ReDim Preserve Values(Count - Offset)
SQLNumericIn = Join(Values, ", ")
End If
Else
SQLNumericIn = Join(Values)
End If
End Function
strIN = SQLNumericIn(Request.querystring("ID")=
If Len(strIN) Then
set con=server.createobject("ADODB.connection")
con.Open "DSN=EJ_Web"
con.execute "DELETE * From Mess WHERE ID IN (" & ID & ")"
con.Close
Set con = nothing
Else
Response.Write "Du har inte markerat några poster!"
End If
</code>
Funktionen separerar strängen och kontrollerar dess element. Om det inte är numeriska ignoreras dem. Vilket bör göra det säkert från att kunna infoga SQL-satser i din SQL-sats.
Du bör lägga en koll så man inte kan ta bort andras poster. Om det rör sig om poster som är indeviduella:
<code>
con.execute "DELETE * FROM Mess WHERE UserID=" & Session("UserID") & " AND ID IN (" & ID & ")"
</code>
Säkerhet är viktigt. Ibland tänker man inte på att man lämnar dörren öppen för en hacker att göra intrång eller skada. Så låt säkerhet vare en aktiv del i ert programmerande. Kunskap är det viktigaste vapnet och att vara ordentlig. Data skall kontrolleras innan den används.Sv: Markera checkbox o radera i databasen..
Vad betyder/gör ordet "IN" i sql-satsen???
/JockeSv: Markera checkbox o radera i databasen..
Innebär att ID skall vara en av det följande id-numren. Istället för att skriva:
(Id = 1 OR Id = 2 OR Id = 3)
Du kan även använda en underfråga:
SELECT * FROM Users WHERE UserId IN (SELECT UserId FROM Admins)