Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 04:36 Der er 37 kommentarer og
1 løsning

Checkbox

Jeg har en checkbox:

<input type="checkbox" name="deletemail" value="<%=rs("mailid")%>">

som det tydeligt ses har en id-værdi.


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.
Avatar billede eagleeye Praktikant
12. juni 2002 - 08:35 #1
Jeg har dette sript:


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
%>
Avatar billede eagleeye Praktikant
12. juni 2002 - 08:36 #2
hmm det jeg har ikke fået rettet alle videofil til email :) i beskrivelsen men det går forhåbenligt.
Avatar billede yellow Nybegynder
12. juni 2002 - 08:39 #3
kald alle dene checkbokse det samme ( altsa samme "name" ):
<input type="checkbox" name="deletemail" value="1">
<input type="checkbox" name="deletemail" value="2">
<input type="checkbox" name="deletemail" value="3">
<input type="checkbox" name="deletemail" value="4">
<input type="checkbox" name="deletemail" value="5">

I asp kan du så bare gøre noget lignende det her:

<%
strDelete = ""
for each mail in( split( request("deletemail"),"," ) )
  strDelete = strDelete & " mailID = " & mail & " OR"
next
strDelete = left( strDelete, len(strDelete)-2 )
cnn.Execute("DELETE FROM Mail WHERE " & strDelete )
%>
Avatar billede eagleeye Praktikant
12. juni 2002 - 08:49 #4
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
Avatar billede yellow Nybegynder
12. juni 2002 - 08:52 #5
ohh, havde slet ikke tænkte på "IN"...smart :-)
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:25 #6
det vi likke rigtig virke... det lader til at deletemail, ikke returnere en id-værdi... hvad er der galt?
Avatar billede eagleeye Praktikant
12. juni 2002 - 13:27 #7
Laver du dine checkboks sådan her:
<input type="checkbox" name="deletemail" value="<%=rs("mailid")%>">
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:31 #8
<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...
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:32 #9
jeg laver dem præcis på den måde, derfor undre det mig også at det ikke virker
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:34 #10
jeg har for sjovt lavet denne her i stedet:

<a href="<%=rs("mailid")%>"><input type="checkbox" name="deletemail" value="<%=rs("mailid")%>"></a>

så kan jeg se at mailid er tilstede for den enkelte checkbox
Avatar billede eagleeye Praktikant
12. juni 2002 - 13:35 #11
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
Avatar billede eagleeye Praktikant
12. juni 2002 - 13:36 #12
Husker du at hendte mode i login.asp ??
mode = Request.QueryString("mode")
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:37 #13
hehe ingen udfald...

der er noget komplet galt her, ik?
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:37 #14
jep, det er de allerførste variabel der bliver loadet
Avatar billede eagleeye Praktikant
12. juni 2002 - 13:39 #15
har du en submit-knap på den form hvor checkboxene er?
Avatar billede eagleeye Praktikant
12. juni 2002 - 13:41 #16
Skriver den:  mailID'er:
Eller skriver den slet ikke noget?
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:41 #17
nej det er et link: <a href="login.asp?mode=deletemsg">Delete</a>
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:42 #18
den skriver mailID'er:  og så ikke mere...
Avatar billede eagleeye Praktikant
12. juni 2002 - 13:44 #19
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.
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:45 #20
ah... det skal være en knap :)

nu siger den nemlig ting og sager ...:)
Avatar billede eagleeye Praktikant
12. juni 2002 - 13:45 #21
Form'en kommer til at se sådan ud:

<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")%>">
<input Type="submit" name="Delete" value="Delete">
</form>
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:46 #22
NICE
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:46 #23
jep :)

nu virker det squ!
Avatar billede beldring Nybegynder
12. juni 2002 - 13:47 #24
NU kan jeg kun php, men jeg vil skyde på at du kan det samme med ASP.

Kan du lægge id'et i en variabel, og så sige noget i stil med

delete $id from tabel ... ???????  Eller har jeg misforstået det?
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:47 #25
der en logisk forklaring på alt :)
takker :)
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 13:48 #26
nej, problemet lå i submit-delen... resten virkede som det skulle ;)
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 14:00 #27
men kan det ikke lade sig gøre med et link alligevel?

det ser squ lidt pænere ud...
Avatar billede eagleeye Praktikant
12. juni 2002 - 14:13 #28
Man kan måske lavet et link som kalder noget Javascript for den enstemåde Request.Form kan hendte sine data er hvis de er blvet send via en Form.
Avatar billede eagleeye Praktikant
12. juni 2002 - 14:14 #29
måske du kan lave dit link sådan her:

<a href="formular.submit();">Delete</a>
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 14:17 #30
har prøvet... ie vil fortolke det som et link til http://formular.submit(); og det får jeg jo ikke meget ud af :-p
Avatar billede eagleeye Praktikant
12. juni 2002 - 14:17 #31
Jeg fandt lige dette hvordan et text-link kan submitte en form:
http://www.thesitewizard.com/archive/textsubmit.shtml
Avatar billede eagleeye Praktikant
12. juni 2002 - 14:19 #32
Så det blvier vel:

<a href="java script:formular.submit();">Delete</a>
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 14:22 #33
næsten: <a href="java script:document.formular.submit();">Delete</a>
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 14:22 #34
fandt lige noget i web-site mappen :)
Avatar billede eagleeye Praktikant
12. juni 2002 - 14:32 #35
arh ja ok... eller kender den ikke formular :)
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 15:06 #36
lige præcis

go' sommer :)
Avatar billede yellow Nybegynder
12. juni 2002 - 17:22 #37
Jeg vil dog anbefale at bruge onclick i stedet for pseudo protokolle (href=java script:blabla)...læs hvorfor her: http://jibbering.com/techniques/
Avatar billede easysoft_studios Nybegynder
12. juni 2002 - 17:33 #38
det kan jeg godt se, men jeg ligger et fint lille link til IE 6, så brugerne henter den hvis der er problemer :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester