Når jeg nu vil slette rækken fra tabellen mail, med den id-værdi checkbox'en der er markeret har, hvordan gør jeg så? Der er flere checkbox'e, som kan være markeret/ikke markeret. Faktisk det samme som med de fleste web-mail systemer. Alle marekede checkbox'es række skal slettes, ved et tryk på en knap eller link.
Pricipet: Den første side hvor man vælger hvilke der skal ændre, er lavet en checkbox ud fra hver Email. Alle checkboxe har samme navn (deletemail, checkboxens value (ID) sættes til mailid fra databasen. På den anden side er lavet et for loop som sletter email fra databasen hvor email ID er lig med emailID på de checkboxe som er valgt. Til hver film laves sådan en checkbox <input type="checkbox" name="deletemail" value=<%=rs("ID")%>>
Dette skal være i filen hvor man vælge checkboxne:
'Kør din SQL inden som han hendte Vidofilm ID som skal insættet i Checkboxen. If Not (rs.BOF Or rs.EOF) Then %> <form method="post" action=" slet_valgte.asp" name="hhabb"> <% Do While Not rs.EOF 'INDSÆT NOGET INFO OMKRING VIDEOFILM evt i tabel form!! %> <input type="checkbox" name=KAK value=<%=rs("ID")%>><br> <% rs.MoveNext Loop %> <p><input type="submit" value="Slet" name="Slet"></p> </form> <% Else ' Hvis der ikke er fundet poster på søgningen Response.Write "<p>Der er ikke fundet noget på denne søgning</p>" End If ' Rydder op efter os myConn.Close 'rs.Close Set myConn = Nothing
-- slet_valgte_film.asp------
<% 'nItem Antal checkbokse som er med [x]. nItems = Request.Form("deletemail").Count if (nItems >= 1) then 'Henter værdien fra sidste side For i = 1 To nItems strSQL = "DELETE FROM dintabel WHERE ID="&Request.Form("deletemail")(i) myConn.Execute(strSQL) Next myConn.Close else Response.Write "Mindst en vare skal vælges" end if %>
filen som sletter kan faktisk skæres lidt ned, da man kan benyte IN i SQL og ikke behøver slette en for en. Request.Form giver nemlig en komma seperetet streng når flere fleter har samme navn:
if Request.Form("deletemail") <> "" then strSQL = "DELETE FROM dintabel WHERE ID IN (" & Request.Form("deletemail") & ")" myConn.Execute(strSQL) end if
<form name="formular" method="post" action="login.asp?mode=deletemsg"> {en hele masse info om mail'en) <input type="checkbox" name="deletemail" value="<%=rs("mailid")%>"> </form>
Og koden der skal slette:
<% if mode = "deletemsg" then
if Request.Form("deletemail") <> "" then strSQL = "DELETE FROM dintabel WHERE ID IN (" & Request.Form("deletemail") & ")" Conn.Execute(strSQL) end if
end if %>
Der sker jo ingenting, og det er fordi kontroltjekket if Request.Form("deletemail") <> "" er lig "" og derfor fortsætter koden ikke... Hvorfor har deletemail ikke den værdi, som jeg så tydligt synes jeg har sat for den oppe i starten ? Jeg ved at <%=("mailid")%> har en værdi, for den bliver nemlig brugt til 2-3 andre funktioner...
Hvis du prøver at udskrive deltemail... inden if sætningen if Request.Form("deletemail") <> "" then og se om den skrive mailID ud på dem du har sat kryds i.
response.write "mailID'er: " & Request.Form("deletemail") if Request.Form("deletemail") <> "" then
Den kan ikke hendte fra en form kun ved tryk på et link. Du skal havde en Delete knap som enten er af typen Submit eller en knap som kalder formNavnet.Submit(); fumctionen:
En submit knap: <input Type="submit" name="Delete" value="Delete">
og i formtagen er action sat til at kalde login.asp med mode=deletemsg som querystring.
det kan jeg godt se, men jeg ligger et fint lille link til IE 6, så brugerne henter den hvis der er problemer :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.