23. juni 2008 - 18:01Der er
20 kommentarer og 1 løsning
Slet flere MySQL-poster via Submit knap
Hej alle. Jeg ønsker at lave en liste af poster fra MySQL, hvor der er mulighed for at markere flere poster til sletning. Jeg lister posterne med while ()med 1 post på hver sin linje. Forrest i hver linje vil jeg placere en Checkbox, som kan afkrydses, hvis posten ønskes slettet. Og ved tryk på Submit, skal alle markerede poster så slettes.
Men hvordan får jeg posterne slettet. Når jeg sletter en post, gør jeg normalt dette:
$sql = "DELETE FROM tabelnavn WHERE id = '".$id."'"; database($sql);
Min nuværende kode ser sådan her ud, men er godt klar over, at det selvfølgelig ikke virker. Jeg kan sagtens liste posterne, og jeg mener også, at navngivningen af chekcboksene er OK. Men det er mere, når jeg skal slette, det kniber.
<?php if(isset($_GET['update']) && $_GET['update']) { $id = mysqlRealEscapeString($_POST['name']); $sql = "DELETE FROM kundeliste WHERE id = '".$id."'"; database($sql);
Hej Olebole. Din sidste kommentar er jeg helt med på. Jeg har også afprøvet dit forslag til kode, og det virker præcis som ønsket. Så tusind tak for denne hjælp. Jeg vil bare også gerne forstå, hvad der sker. Jeg forstår nemlig ikke, hvordan du sletter flere poster på én gang, når DELETE kommandoen ikke er en del af "for"-løkken. Måske fordi de valgte poster er smidt i et Array ($a)?? Send bare et svar.:-))
Jeg har ændret koden, så du kun bruger post-variabler (det skjulte felt 'context'). Dels er det mere tro mod idéen bag HTTP metoderne get og post, ikke at blande dem sammen - og dels er det rart at vide præcis, hvor alle ens variabler kommer fra.
Derudover backtick'er jeg alle felt- og tabelnavne i MySQL kald af hensyn til evt. reserverede navne. Ordet 'by' har f.eks. en betydning i MySQL, hvorfor du enten må kalde feltet for 'city' - eller bruge backticks
Øh - jeg har lige en lille udfordring mere. Hvis der nu ikke er markeret nogle checkbokse og der klikkes på knappen, så får jeg en MySQL-fejl. Jeg vil derfor lave et tjek på om Arrayet er tomt, og hvis ja, så skriver jeg en fejltekst. Men hvad er syntax for om et Array er tomt??
Showsource: Skal jeg forstå dit forslag som en løsning til at undgå MySQL fejl, hvis der ikke er markeret nogen checkbokse eller mener du, det er bedre kode, end det olebole har leveret eller????? Og brugerinput bliver vist nok ikke tjekket inden der skrives i databasen. Dette sker jo i den anden kode med funktionen "mysqlRealEscapeString"
$sql = "DELETE FROM `kundeliste` WHERE `id` IN (".$delete.")";
database($sql);
}
Synes godt om
Ny brugerNybegynder
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.