Avatar billede aerobee Nybegynder
08. juli 2005 - 18:37 Der er 10 kommentarer og
1 løsning

Slet mange poster vha checkboxes?

Hejsa..

Først lidt details:
Kode i ASP VBScript med en tilhørende Access database.

Problem:
Jeg har lavet en formular med checkboxes som kan markeres for at slette poster der er i min database.

Når jeg så trykker "submit" for f.eks at slette 9 markerede poster giver min sql mig dette resultat:
DELETE FROM Breve WHERE PostID=105, 104, 101, 100, 99, 98, 97, 96, 95

Se det dur jo ikke...
Det indgår i et loop dvs at input type="checkbox" er KUN angivet 1 gang med navnet deletemails derfor ovenstående resultat..

Men hvordan kommer jeg uden om det?

Hvis info mangler, let me know :P
Avatar billede aerobee Nybegynder
08. juli 2005 - 18:47 #1
For god ordens skylde vil jeg da lige vise hvordan min sql ser ud

delmail = request.Form("delmail")
sql = "DELETE FROM Breve WHERE PostID="&delmail
conn.execute(sql)

Ved godt ovenstående er forkert men kan ikke lure hvordan jeg kommer udenom det.
Avatar billede aerobee Nybegynder
08. juli 2005 - 18:54 #2
Der er faktisk 2 x
<input type="checkbox" value="<%=tab(i,1)%>" name="delmail">
<input type="checkbox" value="<%=tab(i+1,1)%>" name="delmail">

Bemærk, samme navn, og bemærk jeg bruger tabs...

Er mere kode nødvendigt?
Avatar billede aerobee Nybegynder
08. juli 2005 - 18:58 #3
Kunne også godt bruge et script der gør sådan at ved tryk på 1 knap/link så bliver alle checkboxe markeret... det er vel javascript?
Avatar billede nielle Nybegynder
08. juli 2005 - 19:15 #4
Prøv med denne SQL i stedet:

DELETE FROM Breve WHERE PostID IN (105, 104, 101, 100, 99, 98, 97, 96, 95)
Avatar billede aerobee Nybegynder
08. juli 2005 - 19:19 #5
Ok.. Måske misforstår jeg dig men husk på at tallene ikke er faste.. Det kan ligeså godt være tallene 1 2 3 4 5 6 7 8 9 eller 300 andre kombinationer..
Avatar billede aerobee Nybegynder
08. juli 2005 - 19:25 #6
Det er et email system, hvor hver email har hver deres unikke ID og det er det ID jeg bruger her for at slette emailen.. Der kommer hele tiden nye mails, derfor nye ID´s så kan jeg jo ikke bruge en sql hvor ID der skal slettes er forud defineret da det jo aldrig er de samme ID.
Avatar billede aerobee Nybegynder
08. juli 2005 - 19:26 #7
Øhh gav det mening? *lol*
Avatar billede steent Nybegynder
08. juli 2005 - 19:35 #8
Du skal give checkboksene samme navn i formen og give dem en value der svarer til det id den modsvarer, når du så laver en Request.Form("CHECKBOX") vil den indeholde alle dem der er markeret i en kommasepereret streng.

Så kan du benytte:

DELETE FROM Breve WHERE PostID IN (" & Request.Form("CHECKBOX") & ")
Avatar billede nielle Nybegynder
08. juli 2005 - 19:37 #9
Selvfølgelig giver det mening, men du lagde ud med at skrive:

Når jeg så trykker "submit" for f.eks at slette 9 markerede poster giver min sql mig dette resultat:
DELETE FROM Breve WHERE PostID=105, 104, 101, 100, 99, 98, 97, 96, 95

- og der får mig jo til at tro at du allerede har noget kode som kan lave din SQL-sætning for dig, altså lige bortset fra at det var en forkert SQL til frmålet. Hvis du har denne kode burde det være lige til at rette den til at den i stedet laver en SQL som kan bruges:

DELETE FROM Breve WHERE PostID IN (105, 104, 101, 100, 99, 98, 97, 96, 95)

Men det er måske forkert opfattet at du har sådan et stykke kode?
Avatar billede aerobee Nybegynder
08. juli 2005 - 19:42 #10
Ja så har vi desværre misforstået hinanden nielle..
Men den sql jeg ledte efter var den steent kom med :P

Tak for det steent, du får points..

Du har måske også svaret på den her?
"Kunne også godt bruge et script der gør sådan at ved tryk på 1 knap/link så bliver alle checkboxe markeret... det er vel javascript?"
Avatar billede aerobee Nybegynder
08. juli 2005 - 20:10 #11
Stiller sids nævnte spørgsmål i en ny tråd så vedkommende også kan få points for det :)
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