Vonbo Skrevet 3. april 2006 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?
JohnRichard Skrevet 3. april 2006 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.
mikk- Skrevet 3. april 2006 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.
Paull Skrevet 3. april 2006 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 ?
trondes Skrevet 3. april 2006 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
hockey500 Skrevet 3. april 2006 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
ThaMezzy Skrevet 3. april 2006 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
trondes Skrevet 3. april 2006 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.
Paull Skrevet 3. april 2006 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 ?
ThaMezzy Skrevet 4. april 2006 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?
Paull Skrevet 4. april 2006 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.
Ernie Skrevet 4. april 2006 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
ThaMezzy Skrevet 4. april 2006 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.
Cucum(r) Skrevet 4. april 2006 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
Ernie Skrevet 4. april 2006 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.
ThaMezzy Skrevet 4. april 2006 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.
Ernie Skrevet 4. april 2006 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.
ThaMezzy Skrevet 4. april 2006 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.
Ernie Skrevet 4. april 2006 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
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å