Ellingsen Skrevet 29. april 2007 Del Skrevet 29. april 2007 (endret) Hei. Trenger litt hjelp, har prøvd og løse problemet ved og lage til en løsning selv, men dette fungerte ikke optimalt. Jeg har skrevet ett internt meldingssystem på en side, men på denne så vil jeg gjerne ha en check-box forran hver melding som ligger i inboxen til brukeren så de kan huke av flere og trykke på "Slett Alle" "marker som lest" "markert som ulest" osv. Gjerne med en checkbox i toppen som merker alle meldingene. (må vel få hjelp av en med kompetanse i JS da) Noen som har noe sånt liggende, eller som har en ide om ossen det kan løses? Takker for all hjelp. Endret 14. mai 2007 av Ellingsen Lenke til kommentar
grimjoey Skrevet 29. april 2007 Del Skrevet 29. april 2007 (endret) Løsning på javascriptet vertfall.. <html> <body> <script type="text/javascript"> function superCheck () { var checkCount = document.theForm.sub.length; for(i=0;i<checkCount;i++) { document.theForm.sub[i].checked = document.theForm.super.checked; }; }; </script> <form name="theForm"> <input type="checkbox" name="super" onClick="superCheck();"> <input type="checkbox" name="sub"> <input type="checkbox" name="sub"> <input type="checkbox" name="sub"> </form> </body> </html> php delen blir litt verre ettersom jeg ikke vet hva du har fra før. Endret 29. april 2007 av grimjoey Lenke til kommentar
Ellingsen Skrevet 12. mai 2007 Forfatter Del Skrevet 12. mai 2007 Se der ja, det er flott. Nei, det jeg har fra før er jo greit, men når jeg kommer til funksjonen som lister opp alle meldingene i inboxen, hvordan skal jeg navngi checkboxene i HTML'n, for så og kunne hente opp igjen hvilke av dem som er merket i en slettfunksjon? Mulig jeg suger på og forklare, men om det er noen som skjønner så hadde jeg vært veldig takknemelig. Lenke til kommentar
Ståle Skrevet 13. mai 2007 Del Skrevet 13. mai 2007 Løsning på javascriptet vertfall.. <html> <body> <script type="text/javascript"> function superCheck () { var checkCount = document.theForm.sub.length; for(i=0;i<checkCount;i++) { document.theForm.sub[i].checked = document.theForm.super.checked; }; }; </script> <form name="theForm"> <input type="checkbox" name="super" onClick="superCheck();"> <input type="checkbox" name="sub"> <input type="checkbox" name="sub"> <input type="checkbox" name="sub"> </form> </body> </html> php delen blir litt verre ettersom jeg ikke vet hva du har fra før. 8501730[/snapback] burde det ikke blitt brukt id istedenfor name, siden $_POST bruker name? Hvordan skal man fa tak i verdiene i PHP-scriptet? Lenke til kommentar
Crowly Skrevet 13. mai 2007 Del Skrevet 13. mai 2007 Har ikke lagd noe tilsvarende dette før, så dette blir litt synsing fra min side. Men jeg ville ha gitt hver checkbox ett unikt navn, og en egen checkbox for alle så det blir noe tilsvarende dette: <input type="checkbox" name="sub1"> <input type="checkbox" name="sub2"> <input type="checkbox" name="sub3"> ... <input type="checkbox" name="subN"> <input type="checkbox" name="alle"> I PHP delen så kan man gjør en sjekk om $_POST['alle']=='on' og så utføre det man ønsker for alle forekomster. En FOREACH må vel til får å håntere resterende checkbox'er. Dette er så langt jeg har tenkt foreløpig, håper det er til noe hjelp Lenke til kommentar
Ellingsen Skrevet 13. mai 2007 Forfatter Del Skrevet 13. mai 2007 (endret) hehe, takk for forslag =) men det som er problemet er jo at antall poster endrer seg jo, så når man kommer til slett funksjonen så veit den jo ikke hvor mange checkboxer den skal sjekke. Kunne gjort som du sier og lagt opp slik at alle heter box# med tall som stiger, men da må jo slett scriptet også sjekke alle $_POST['box1'] og opp til egentlig uendelig for og finne ut hva som skal slettes.. har ikke noe paging system. Tenkte kanskje at det fantes en enklere måte, og det tror jeg fortsatt at det gjør Endret 13. mai 2007 av Ellingsen Lenke til kommentar
Crowly Skrevet 13. mai 2007 Del Skrevet 13. mai 2007 Det som er kjekt med checkbox'er er at hvis de ikke er huket av, så blir de ikke med i $_POST, så selv om du har 1000 meldinger og du huker av kun 1, så får $_POST kun en forekomst. Test her PHP <pre> <?php print_r($_POST); ?> </pre> <form action="test.php" method="post"> I have a bike: <input type="checkbox" name="vehicle1" value="Bike" /> <br /> I have a car: <input type="checkbox" name="vehicle2" value="Car" /> <br /> I have an airplane: <input type="checkbox" name="vehicle3" value="Airplane" /> <input type="submit" value="ok" /> </form> Så ved å legge id'en i value så skulle det være en grei sak og sette sammen en sql settning. F.eks sletting PHP <?phpif (isset($_POST['alle'])) $sql="TRUNCATE meldinger"; else { $sql="DELETE FROM meldinger WHERE id="; foreach ($_POST as $key) $sql.=mysql_real_escape_string($key)." OR id="; $sql=substr($sql,0,length($sql)-7); } mysql_query($sql); ?> Dette er bare hvordan jeg tenker, fult mulig det er bedre og mer effektive løsninger, men prøver bare å sparke i gang noen tanker om mulige løsninger. Lenke til kommentar
Ellingsen Skrevet 13. mai 2007 Forfatter Del Skrevet 13. mai 2007 Ser man det ja, der tror jeg vi har en løsning. Konfigruerer det til jeg får det til og funke også poster jeg løsningen og skriver LØST i topic. Takk for all hjelp! Lenke til kommentar
Zandar Skrevet 13. mai 2007 Del Skrevet 13. mai 2007 (endret) Hadde samme problemstilling med checkbox'er og php for noen dager siden. Her er forenklet versjon av hvordan jeg løste det: HTML-kode med javascript. <html> <script language="JavaScript"> <!-- Hide JavaScript from old browsers function checkUncheckAll() { var currentState = document.messagesform.checkAll.checked; var checkboxes = document.messagesform['checklist[]']; if(currentState) { for(i = 0; i < checkboxes.length; i++) { checkboxes[i].checked = true; } } else { for(i = 0; i < checkboxes.length; i++) { checkboxes[i].checked = false; } } } // End hiding JavaScript --> </script> <body> <form name="messagesform" method="post"> <input type="checkbox" name="checkAll" onClick="checkUncheckAll()"> <input type="checkbox" name="checklist[]" value="1"> <input type="checkbox" name="checklist[]" value="2"> <input type="checkbox" name="checklist[]" value="3"> <input type="submit" name="delete" value="Slett markerte"> </form> </body> </html> Sett alle checkbox'ene i samme gruppe med name="checklist[]" . [] bak gruppenavnet gjør det lettere å lage en php array av checkbox'ene i etterkant. php-kode for mottaker-script: //Sjekke POST-data if(isset($_POST['delete']) && !empty($_POST['checklist])) { $checked= $_POST['checklist']; //Lage passende array av checkbox-verdiene $ids = (is_array($checked)) ? implode(',', $checked) : $checked; //SQL-spørring $q = "DELETE FROM messages WHERE id IN($ids) AND user_id='$myuserid'"; //Kjøre spørring mot database osv.... } Ved hjelp av sql-operatoren IN sendes array'et $ids med verdiene av checkboxene inn i spørringen. Dermed slipper man å "manuelt" generere en streng med WHERE id=1, id=2, osv. AND userid='$myuserid' kan legges til om man vil sikre at brukeren kun kan slette sine egne meldinger. Dersom du lurer på noe ved løsningen så er det bare å spørre. Endret 13. mai 2007 av Zandar Lenke til kommentar
Ellingsen Skrevet 14. mai 2007 Forfatter Del Skrevet 14. mai 2007 Brukte den løsningen du la ut her, og den fungerte as-intended på førte forsøk. La også til merk som lest/ulest også. Takk for all hjelp. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå