Avatar billede 44fire44 Nybegynder
27. november 2007 - 20:36 Der er 4 kommentarer og
1 løsning

Hvordan sletter jeg flere ting som er checked i checkbokse?

Hej eksperter

jeg har lavet en while-løkke hvor jeg henter en del info ud fra min database - nu vil jeg gerne have tilføjet en checkbox ved hver punkt således at jeg kan vælge af slette de punkter fra databasen som jeg har markeret

Indtil nu er det lykkedes mig at lave det sådan at den kan slette en af gangen - men hvordan sørger jeg for at jeg kan slette alle de markerede?

MySQL query:

if($_POST['delete_vine'])
{
   
mysql_query("DELETE FROM vine WHERE vin_number='".$_POST[vin_selected]."'") or die(mysql_error());

echo '<meta http-equiv="refresh" content="0;url=admin_opretvin.php">';
}

kode:

<table border="0" align="center"><tr><td width="25" align="center">X</td><td>Type</td><td>Land</td><td width="70">Drue</td><td>Navn</td><td>Årgang</td><td width="70">Pris</td></tr>
<?php

while($vin = mysql_fetch_assoc($query)) //Den fra før
{
    $num = $num + 1;

  if($num % 2 == 0)
  {
      $farve = "class=\"light\"";
  }
  else
  {
      $farve = "class=\"dark\"";
  }
 
  ?>
  <tr <?php print $farve; ?>>
  <td valign="top" width="25" align="center"><input type="checkbox" name="vin_selected" value="<?php print $vin[vin_number]; ?>"></td><td valign="top"><?php print $vin[vin_type]; ?></a></td><td valign="top"><?php print $vin[vin_origin]; ?></td><td valign="top"><?php print $vin[vin_grape]; ?></td><td valign="top"><?php print $vin[vin_name]; ?></td><td valign="top"><?php print $vin[vin_year]; ?></td><td valign="top"><?php print $vin[vin_price]; ?></td>
  </tr>
  <?php
}


?>
<tr><td colspan="7"><input type="submit" name="delete_vine" value="Slet valgte vine">
Avatar billede henninghabor Nybegynder
28. november 2007 - 00:56 #1
I din sql_query skal du jo have alle de markerede vine ind:
$vin_selected = $_POST["vin_selected"];

for($i = 0; $i < sizeof($vin_selected); $i++)
{
  $where_conditions .= ($i == 0) ? " WHERE" : " AND";
  $where_conditions .= " vin_number = '" . $vin_selected["$i"] . "'";
}

mysql_query("DELETE FROM vine" . $where_conditions) or die(mysql_error());
Avatar billede henninghabor Nybegynder
28. november 2007 - 00:58 #2
Hovsa.

I ovenstående eksempel kommer du til at slette alle - Også de der ikke er markerede. Så du skal nok hellere gøre sådan:

for($i = 0; $i < sizeof($vin_selected); $i++)
{
  if(!empty($vin_selected["$i"]))
  {
    $where_conditions .= ($i == 0) ? " WHERE" : " AND";
    $where_conditions .= " vin_number = '" . $vin_selected["$i"] . "'";
  }
}
Avatar billede henninghabor Nybegynder
28. november 2007 - 00:59 #3
Og så skal du omdøbe din checkbox til "vin_selected[]"
Avatar billede showsource Seniormester
28. november 2007 - 09:02 #4
<input type="checkbox" name="vin_selected[]" value="<?php print $vin[vin_number]; ?>">

if(isset($_POST['vin_selected']) && is_array($_POST['vin_selected']))
{
 
mysql_query("DELETE FROM vine WHERE vin_number IN (".implode(",", $_POST[vin_selected]).")") or die(mysql_error());

echo '<meta http-equiv="refresh" content="0;url=admin_opretvin.php">';
}
Avatar billede 44fire44 Nybegynder
08. december 2007 - 18:01 #5
takker for respons :)
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