Avatar billede maabjerg Nybegynder
15. april 2004 - 22:43 Der er 11 kommentarer

Slet mere end en ting af gangen i db'en?

Hej

Jeg sidder og laver et system, hvor jeg tit skal slette en masse ting fra en database. Derfor står jeg og mangler funktionen til hvordan man får php til at slette flere ting ad gangen, ved at sætte flugeben i en checkbox ud for det der skal slettes... - Håber i forstår hvad jeg mener

Hvordan går man det?


På forhånd tak for hjælpen

Mvh
Steffen Maabjerg
Avatar billede bromer Nybegynder
15. april 2004 - 22:47 #1
Du kan jo matche flere ting i en database. Hvis du normalt sletter ud fra et id som

DELETE FROM table WHERE id = something

kan du jo bare lave en smule om på din query som i

DELETE FROM table WHERE id = a OR id = b etc..

Når der er sat en masse flueben kan du lave din WHERE clause ud fra dem..

Bromer
Avatar billede detox Nybegynder
15. april 2004 - 22:48 #2
Fx:

DELETE FROM tabel WHERE id=1 OR id=5 OR id=10
Avatar billede dennismp Nybegynder
15. april 2004 - 22:49 #3
Hvis ud laver din form så
<form .. method="post">
<input type="checkbox" name="slet[1]"> slet #1<br>
<input type="checkbox" name="slet[7]"> slet #7<br>
<input type="checkbox" name="slet[42]"> slet #42<br>
</form>
så er det ret nemt

if( isset($_POST['slet']) && is_array($_POST['slet']) ) {
  $ids = array_keys($_POST['slet']);
  mysql_query("DELETE FROM table WHERE id IN(" . join(',',$ids) . ")");
}

eller noget i den dur. Du skal lave nogle error-checks og evt addslashes().
Avatar billede maabjerg Nybegynder
15. april 2004 - 22:51 #4
Når jeg trykker på slet når alle er markeret sker følgende kode:

if ($action == "slet") {

  og så den slet kode, men hvordan kan den lave
  koden til alle dem der er markeret?

}
Avatar billede maabjerg Nybegynder
15. april 2004 - 22:52 #5
glem det jeg skrev før

men.. skal der ikke laves en funktion så man kan bruge slet[1] osv.?
Avatar billede dennismp Nybegynder
15. april 2004 - 22:57 #6
det gør denne

if( isset($_POST['slet']) && is_array($_POST['slet']) ) { // Tjekker om der skal slettes noget

  $ids = array_keys($_POST['slet']); // henter id'erne fra arrayet (1,7,42..)
  mysql_query("DELETE FROM table WHERE id IN(" . join(',',$ids) . ")"); // laver en sql-statement der slette disse id'er.
}
Avatar billede detox Nybegynder
15. april 2004 - 23:00 #7
dennismp -> cool nok ;O)
Avatar billede maabjerg Nybegynder
15. april 2004 - 23:13 #8
kan ik få den til at slette dem
Avatar billede detox Nybegynder
15. april 2004 - 23:17 #9
Ok, prøv sådan her. Husk selvføllgelig at udskifte til dine egne navne:


<?php
require 'db.php';
if (isset($_POST['slet'])) {
    $sql = 'DELETE FROM tabel WHERE id IN (' . implode(',',$_POST['slet']) . ')';
    mysql_query($sql);
}
$str = '';
$res = mysql_query("SELECT id FROM tabel");
while ($row = mysql_fetch_row($res)) {
    $str .= '<input type="checkbox" name="slet['.$row[0].']" value="'.$row[0].'" /> slet #'.$row[0].'<br />';
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<?php echo $str?>
<input type="submit" name="submit" value="Send" />
</form>
Avatar billede dennismp Nybegynder
15. april 2004 - 23:39 #10
nightman; Det virker fint her (http://dennis.moellegaard.dk/v4/php/489756.php). Har du rettet tabel - og evt lave et error-tjek på din mysql_query ?

sådan at:
mysql_query("DELETE FROM table WHERE id IN(" . join(',',$ids) . ")") or die(mysql_error());
Avatar billede dennismp Nybegynder
15. april 2004 - 23:41 #11
husker du at lave <form method="post"> ?
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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