Hej! Finns säkert en miljon sätt att lösa det hela på .. så hör löste jag det vid ett tillfälle: Jag skull nog gjort något såhär: Tack för svaren!! Förutsätter att du vet hur du upprättar en ado anslutning mot en databas. Hmm....jag får det inte att fungera! Missade ett enkelt citat tecken i If satsen... :O) Stort tack för att du orkar!!! Hur ser loopen ut som bygger check boxarna? Är namnet på checkbox'arna "Recivers"? Den ser ut så här: <html> Hittade ett litet fel. Test det här: Det funkade!! Stort tack för all hjälp och engagemang! Felet jag hittade var:Problem med checkboxar
Jag har en sida, kallad "showlist.asp", där jag skriver ut alla poster i en tabell. Vid varje post finns en checkbox som ska fyllas i om man man vill ta bort en post.
Koden som skriver ut tabellen ser ut så här:
---------------------------------------------------
<table>
While Not RS.EOF
Response.Write "<tr><td><input type='checkbox' value='yes' name='" & RS("Email") & "'></td><td>" & RS("Email") & "</td><td width='5'></td></tr>"
RS.MoveNext
Wend
</table>
--------------------------------------------------
Undrar nu hur jag ska få de markerade posterna att tas bort när man klickar på "Skicka"-knappen
Tack på förhand
/DanneSv: Problem med checkboxar
<p>
1) Skapa ett hidden fält som skickas med vid submit, låt det innehålla alla namnen. Låte det vara separerat av tex ;
<p>
2) på mottagar sidan, splitta upp hidden fältet till en array med hjälp av <code> Split(str, delim) </code>
<p>
3) använd <code> For Each xxx In vXxx </code> för att loopa igenom alla fälten och kolla om den är satt på ON .. isf tabort.. Sv: Problem med checkboxar
Skicka sida:
<table>
<%
Dim fldEmail
Set fldEmail = RS("Email")
Do Until RS.EOF
%>
<tr>
<td><input type="checkbox" value="<%=fldEmail%>" name="Recivers"></td>
<td><%=fldEmail%></td>
<td width="5"></td></tr>
<%
RS.MoveNext
Loop
%>
</table>
Action sida:
<%
Dim vTemp
If Request.Form("Recivers").Count > 0 Then
For each vTemp in Request.Form("Recivers")
Response.Write vTemp & "<BR>" & vbCrLf
Next
Else
Response.Write "Du har inte angivit några mottagare!"
End if
%>Sv: Problem med checkboxar
Jag provade den senare lösningen med Do loop och det funkade fint. Nu får jag med mig de "klickade" checkboxarnas värde till nästa sida. Undrar nu om ni har nåt tips om hur man tar bort dessa värden från databasen??
MVH
/DanneSv: Problem med checkboxar
<%
'Conn är ett ADODB:Connection opjekt som är öppnad mot rätt databas
Dim vTemp
Dim sIn
If Request.Form("Recivers").Count > 0 Then
For each vTemp in Request.Form("Recivers")
If Len(vTemp) Then
sIn = sIn & ", '" & vTemp & "'"
Else
sIn = "'" & vTemp & "'"
End if
Next
Conn.Execute "DELETE * FROM tabell WHERE EMail IN (" & sIn & ")"
End if
%>
Rekomenderar att du använder primär nyckeln istället för email i värdet för kryss rutorna. Om din primärnyckel är ett tal, behövs inte enkel citat tecknen:
If Len(vTemp) Then
sIn = sIn & ", " & vTemp
Else
sIn = vTemp
End ifSv: Problem med checkboxar
Min kod på sidan som ska ta bort poster, ser ut så här nu:
-------------------------------------------------------------------
<html>
<head>
<%
Dim ConnDB, RS, SSQL
Set ConnDB = Server.CreateObject("ADODB.connection")
Set RS = Server.CreateObject("ADODB.recordset")
ConnDB.Provider="microsoft.jet.OLEDB.4.0"
ConnDB.Properties("data source")="D:\wwwroot\hemsidan\DB\database.mdb"
ConnDB.Open
SSQL = "DELETE * FROM tblMailinglist WHERE Email ='" & vTemp & "';"
RS.Open SSQL,ConnDB,1,3
%>
</head>
<body>
<%
Dim vTemp
Dim sIn
If Request.Form("Recivers").Count > 0 Then
For each vTemp in Request.Form("Recivers")
If Len(vTemp) Then
sIn = sIn & "', " & vTemp & "'"
Else
sIn = "'" & vTemp & "'"
End if
Next
ConnDB.Execute "DELETE * FROM tblMailinglist WHERE Email IN (" & sIn & ")"
End if
%>
</body>
</html>
-------------------------------------------------------------------
Vad exakt gör vTemp och sIn??
MVH
/DanneSv: Problem med checkboxar
vTemp - Variabel som loopar igenom "kryssrutor"
sIn - Slår ihop email adresser och komma separerar dem. Ska bli nåt sånt här:
'a@aaa.aa', 'b@bbb.bb', 'c@ccc.cc'
Används sedan i Where Satsen
WHERE Email IN ('a@aaa.aa', 'b@bbb.bb', 'c@ccc.cc')
Ska tolkas något sånt här:
Om email adressen överensstämmer med någon post i listan.
Behöver då bara köra en fråga.
-------------------------------------------------------------------
<html>
<head>
</head>
<body>
<%
If Request.Form("Recivers").Count > 0 Then
Dim ConnDB
Dim SSQL
Dim vTemp
Dim sIn
Dim sList
Set ConnDB = Server.CreateObject("ADODB.connection")
ConnDB.Provider="microsoft.jet.OLEDB.4.0"
ConnDB.Properties("data source")="D:\wwwroot\hemsidan\DB\database.mdb"
ConnDB.Open
For each vTemp in Request.Form("Recivers")
If Len(vTemp) Then
sIn = sIn & ", '" & vTemp & "'"
Else
sIn = "'" & vTemp & "'"
End if
sList = sList & vTemp & "<BR>" & vbCrLf
Next
SSQL = "DELETE * FROM tblMailinglist WHERE Email IN (" & sIn & ")"
ConnDB.Execute SSQL
Response.Write "<B>Följande adresser har tagits bort:</B><BR>" & vbcrlf
Response.Write sList
Else
%>
<H1>Inga adresser markerade!</H1>
<%
End if
%>
</body>
</html>Sv: Problem med checkboxar
När jag kör koden, hoppar den direkt till "Inga adresser markerade!" Vad kan det bero på?
mvh
/danneSv: Problem med checkboxar
Sv: Problem med checkboxar
-------------------------------------------
For each vTemp in Request.Form("Recivers")
If Len(vTemp) Then
sIn = sIn & ", '" & vTemp & "'"
Else
sIn = "'" & vTemp & "'"
End if
sList = sList & vTemp & "<BR>" & vbCrLf
Next
SSQL = "DELETE * FROM tblMailinglist WHERE Email IN (" & sIn & ")"
ConnDB.Execute SSQL
Response.Write "<B>Följande adresser har tagits bort:</B><BR>" & vbcrlf
Response.Write sList
Else
%>
<H1>Inga adresser markerade!</H1>
<%
End if
-------------------------------------------
/DanneSv: Problem med checkboxar
<head><title></title>
<%
Dim ConnDB, RS
Set ConnDB = Server.CreateObject("ADODB.connection")
Set RS = Server.CreateObject("ADODB.recordset")
ConnDB.Provider="microsoft.jet.OLEDB.4.0"
ConnDB.Properties("data source")="D:\wwwroot\hemsidan\DB\database.mdb"
ConnDB.Open
SSQL = "SELECT Email FROM tblMailinglist;"
RS.Open SSQL,ConnDB,1,3
%>
</head>
<body>
<h1>
<b>NYHETSBREV</b>
</h1>
<form method='post' action='listdeletecheck.asp' name='listform'>
<table>
<tr>
<td colspan='3'><b>Epost adresser</b></td>
</tr>
<%
Dim fldEmail
Set fldEmail = RS("Email")
Do Until RS.EOF
%>
<tr>
<td><input type="checkbox" value="<%=fldEmail%>" name="Recivers"></td>
<td><%=fldEmail%></td>
<td width="5"></td></tr>
<%
RS.MoveNext
Loop
%>
</table>
<br>
<input type='submit' value='Ta Bort Adress' name='submit'> <input type='reset' value='Töm Checkboxar' name='reset'>
</form>
</body>
</html>Sv: Problem med checkboxar
--------------------------------------------------------------
Page1.asp
--------------------------------------------------------------
<html>
<head><title></title>
<%
Dim ConnDB, RS, SSQL
Set ConnDB = Server.CreateObject("ADODB.connection")
Set RS = Server.CreateObject("ADODB.recordset")
ConnDB.Provider="microsoft.jet.OLEDB.4.0"
ConnDB.Properties("data source")="D:\wwwroot\hemsidan\DB\database.mdb"
ConnDB.Open
SSQL = "SELECT Email FROM tblMailinglist;"
RS.Open SSQL,ConnDB,1,3
%>
</head>
<body>
<h1>
NYHETSBREV
</h1>
<form method='post' action='listdeletecheck.asp' name='listform'>
<table>
<tr>
<td colspan='3'>Epost adresser</td>
</tr>
<%
Dim fldEmail
Set fldEmail = RS("Email")
Do Until RS.EOF
%>
<tr>
<td><input type="checkbox" value="<%=fldEmail%>" name="Recivers"></td>
<td><%=fldEmail%></td>
<td width="5"></td></tr>
<%
RS.MoveNext
Loop
%>
</table>
<br>
<input type='submit' value='Ta Bort Adress' name='submit'> <input type='reset' value='Töm Checkboxar' name='reset'>
</form>
</body>
</html>
--------------------------------------------------------------
listdeletecheck.asp
--------------------------------------------------------------
<html>
<head>
</head>
<body>
<%
If Request.Form("Recivers").Count > 0 Then
Dim ConnDB
Dim SSQL
Dim vTemp
Dim sIn
Dim sList
Set ConnDB = Server.CreateObject("ADODB.connection")
ConnDB.Provider="microsoft.jet.OLEDB.4.0"
ConnDB.Properties("data source")="D:\wwwroot\hemsidan\DB\database.mdb"
ConnDB.Open
For each vTemp in Request.Form("Recivers")
If Len(sIn) Then
sIn = sIn & ", '" & vTemp & "'"
Else
sIn = "'" & vTemp & "'"
End if
sList = sList & vTemp & "<BR>" & vbCrLf
Next
SSQL = "DELETE * FROM tblMailinglist WHERE Email IN (" & sIn & ")"
ConnDB.Execute SSQL
Response.Write "<B>Följande adresser har tagits bort:</B><BR>" & vbcrlf
Response.Write sList
Else
%>
<H1>Inga adresser markerade!</H1>
<%
End if
%>
</body>
</html>Sv: Problem med checkboxar
Vad var det som var fel förresten?
MVH
/DanneSv: Problem med checkboxar
If Len(vTemp) Then
sIn = sIn & ", '" & vTemp & "'"
Else
sIn = "'" & vTemp & "'"
End if
Ska ju vara:
If Len(sIn) Then
sIn = sIn & ", '" & vTemp & "'"
Else
sIn = "'" & vTemp & "'"
End if
Nån gång måste jag lärt mig att testa koden innan jag publicerar den... :O)