Vonbo Skrevet 3. april 2006 Del Skrevet 3. april 2006 Hei... Jeg trodde ikke at dette skulle bli noe problem, men akk.. Jeg ønsker å ha en liten checkbox til høyre for hver rad i en tabell. Alle markerte rader skal kunne slettes med en knapp nederst på siden. Problemet mitt kom da jeg skal submitte formen. Hvis jeg da har krysset av for 3 'slettinger' kommer jo disse slik i url'en: ...index.php?del=6&del=37&del=156 Hvordan kan jeg få sendt alle over slik at jeg kan hente veridene på vanlig måte? Kan jeg evt. få lagt dem inn i en enkel variabel som array før jeg sender? Lenke til kommentar
JohnRichard Skrevet 3. april 2006 Del Skrevet 3. april 2006 Denne skulle nok ha vært i PHP-delen av forumet. Får nok mer hjelp der. har rapportert denne for deg. Lenke til kommentar
mikk- Skrevet 3. april 2006 Del Skrevet 3. april 2006 Om jeg ikke tar helt feil, kan du kalle checkboxene for del[1], del[2], del[3], osv, for å få dem som et array i targetfila. Så bruker du bare en foreach() eller while() for å generere de ulike checkboxene. Lenke til kommentar
Paull Skrevet 3. april 2006 Del Skrevet 3. april 2006 Er det ikke bare del[] for alle sammen? Så vil man i $_POST/GET['del'] ha et array bestående av de valgte valuene ? Lenke til kommentar
Alastor Skrevet 3. april 2006 Del Skrevet 3. april 2006 Flyttes fra webdesign til php. Lenke til kommentar
trondes Skrevet 3. april 2006 Del Skrevet 3. april 2006 Om jeg ikke tar helt feil, kan du kalle checkboxene for del[1], del[2], del[3], osv, for å få dem som et array i targetfila. Så bruker du bare en foreach() eller while() for å generere de ulike checkboxene. 5860246[/snapback] Det går også greit å kalle alle sammen del[] osv. Er ikke sikker på om dette går når du sender dem som GET, men med POST virker det Lenke til kommentar
hockey500 Skrevet 3. april 2006 Del Skrevet 3. april 2006 (endret) ikke noe problem det: <input type="checkbox" name="slett[]" value="1"><br> <input type="checkbox" name="slett[]" value="2"><br> <input type="checkbox" name="slett[]" value="3"><br> osv... Du kan jo her bruke php til å generere riktige value-verdier. foreach($_POST['slett'] as $element) { mysql_query("spørring for å slette."); Sånn jeg ville gjort det tror jeg, men har aldri laget dette før Endret 3. april 2006 av hockey500 Lenke til kommentar
ThaMezzy Skrevet 3. april 2006 Del Skrevet 3. april 2006 (endret) Jeg har gjort det sånn: form.php <form action="slett.php"> <input type="checkbox" name="slett[]" value="1"><br> <input type="checkbox" name="slett[]" value="2"><br> <input type="checkbox" name="slett[]" value="3"><br> <input type="submit" name="submit" value="Slett valgte elementer"> </form> slett.php <?php // Mysql kobling her. Legg til! $query = "DELETE FROM innlegg WHERE "; if(sizeof($_POST['slett']) < 1) { echo " Du har ikke valgt en ID! <br /><br /><a href=\"javascript:history.back(-1)\">Tilbake</a> "; } else { foreach ($_POST['slett'] as $id) { $sjekker_id = mysql_query("SELECT * FROM innlegg WHERE id = '".$id."'") or die(mysql_error()); if(mysql_num_rows($sjekker_id) == 0) { echo " Denne ID'en <strong><u>".$id."</u></strong> finnes ikke! <br /><br /><a href=\"javascript:history.back(-1)\">Tilbake</a> "; exit; } $query .= " `id` = '$id' OR"; } $query = substr($query, 0, -3); $result = mysql_query($query) or die(mysql_error()); if(sizeof($_POST['slett']) == 1) { $print = "Innlegget"; } else { $print = "Innleggene"; } echo " ".$print." ble slettet! <br /><br /><a href=\"javascript:history.back(-1)\">Tilbake</a> "; } ?> Her har du noe å starte med. Endret 3. april 2006 av ThaMezzy Lenke til kommentar
trondes Skrevet 3. april 2006 Del Skrevet 3. april 2006 MEn samme hvilken måte du velger, håpe at du sjekker om brukern har rettigheter til å gjør det han prøver å gjør. Lenke til kommentar
Paull Skrevet 3. april 2006 Del Skrevet 3. april 2006 @ThaMezzy: Enn om noen poster en slett[] med value="1'; delete from innlegg .... ? Eller er det kun èn operasjon per mysql_query i PHP ? Lenke til kommentar
ThaMezzy Skrevet 4. april 2006 Del Skrevet 4. april 2006 Ser du ikke hva jeg gjør. Jeg starter query'en før foreach() og ender den etter foreach(). Selve queryen består kun av: `id` = '$id' OR Det vil si at den går gjennom alle i foreach(), i dette tilfelle. Når foreach er slutt så tar jeg å minuser tegn slik at OR ikke står tomhendt på slutten. Got it? Lenke til kommentar
Paull Skrevet 4. april 2006 Del Skrevet 4. april 2006 Jo, jeg ser hva du gjør, poenget mitt var "hva om det kommer en ondsinnet pøbel og tar et frekt, lite SQL-injectionangrep på deg?". Det jeg ville frem til, var at escaping og validering av brukerinput er alfa og omega. Lenke til kommentar
Ernie Skrevet 4. april 2006 Del Skrevet 4. april 2006 (endret) ThaMezzy: Noen tips til koden din her: Først og fremst er du meget utsatt for sql-injection. Personlig ville jeg løst det med følgende funksjon function is_numeric_array($array) { if (is_array($array)) { $count = count($array); for ($i = 0; $i < $count; $i++) if (!is_numeric($array[$i])) return false; return true; } else return is_numeric($array); } Det andre er at arrayen du får inn er sammenhengende numerisk indeksert. Derfor bør du bruke for og ikke foreach siden foreach er en del treigere enn for. Edit: I tillegg er det særdeles unødvendig å sjekke om de IDene finnes. Det genereres ikke noen feilmelding hvis det ikke finnes noen rad med den bestemte IDen i en DELETE-spørring. Endret 4. april 2006 av Ernie Lenke til kommentar
ThaMezzy Skrevet 4. april 2006 Del Skrevet 4. april 2006 Jeg skrev den koden nå rett inn i nettleseren. Jeg la ikke til slike valideringer nå siden jeg ville bare gi han en god start. Jeg validerer alltid input til vanlig så vær så snill. Og den som sjekker om id'en finnes funker garantert. Prøvde den ut selv. Lenke til kommentar
Cucum(r) Skrevet 4. april 2006 Del Skrevet 4. april 2006 (endret) Og den som sjekker om id'en finnes funker garantert. Prøvde den ut selv. 5867858[/snapback] Klart den fungerer, men kvifor køyre den når MySQL ikkje sender ei feilmelding i DELETE-spørringer? Det er berre dårlig ressursbruk, om du spør meg. Endret 4. april 2006 av Henrik Lied Lenke til kommentar
Ernie Skrevet 4. april 2006 Del Skrevet 4. april 2006 Og den som sjekker om id'en finnes funker garantert. Prøvde den ut selv. 5867858[/snapback] Klart den fungerer, men kvifor køyre den når MySQL ikkje sender ei feilmelding i DELETE-spørringer? Det er berre dårlig ressursbruk, om du spør meg. 5868543[/snapback] Nettopp Finnes de ikke så er de jo slettet, noe som jo også er poenget med scriptet. Lenke til kommentar
ThaMezzy Skrevet 4. april 2006 Del Skrevet 4. april 2006 Og den som sjekker om id'en finnes funker garantert. Prøvde den ut selv. 5867858[/snapback] Klart den fungerer, men kvifor køyre den når MySQL ikkje sender ei feilmelding i DELETE-spørringer? Det er berre dårlig ressursbruk, om du spør meg. 5868543[/snapback] Nettopp Finnes de ikke så er de jo slettet, noe som jo også er poenget med scriptet. 5868691[/snapback] Jeg sjekker jo før den sletter. Ser du ikke det? Hvis den ikke finnes så bruker jeg exit; til å avslutte resten. Lenke til kommentar
Ernie Skrevet 4. april 2006 Del Skrevet 4. april 2006 Og den som sjekker om id'en finnes funker garantert. Prøvde den ut selv. 5867858[/snapback] Klart den fungerer, men kvifor køyre den når MySQL ikkje sender ei feilmelding i DELETE-spørringer? Det er berre dårlig ressursbruk, om du spør meg. 5868543[/snapback] Nettopp Finnes de ikke så er de jo slettet, noe som jo også er poenget med scriptet. 5868691[/snapback] Jeg sjekker jo før den sletter. Ser du ikke det? Hvis den ikke finnes så bruker jeg exit; til å avslutte resten. 5869621[/snapback] Jamen, hvorfor bruker du tid på det? Om du kjører en DELETE-spørring med bare en masse verdier som ikke eksisterer så får du aldri noen warning e.l uannsett! Poenget mitt er at det er totalt unødvendig å sjekke det på forhånd. Lenke til kommentar
ThaMezzy Skrevet 4. april 2006 Del Skrevet 4. april 2006 På den måten ja. Jeg trodde du mente at det ikke ville fungere. At det er unødvendig er jo en annen ting. Men nå får man hvertfall en feilmelding og da vet man hva som er feil. Lenke til kommentar
Ernie Skrevet 4. april 2006 Del Skrevet 4. april 2006 På den måten ja. Jeg trodde du mente at det ikke ville fungere.At det er unødvendig er jo en annen ting. Men nå får man hvertfall en feilmelding og da vet man hva som er feil. 5869703[/snapback] Ja, også kjører du ørten unødvendige SELECT-spørringer. Slikt tar tid, mer tid enn en unødvendig DELETE-spørring, men for all del 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å