Supprimer enregistrement d'une table ??

Résolu
baltazar852000 Messages postés 24 Statut Membre -  
RackNiak Messages postés 166 Statut Membre -
Bonjour,
J'ai un script pour supprimer à partir d'une liste ou je coche des cases des enregistrements d 'une table mais ca ne marche pas si qq'un à une idée !!
il me retourne une erreur:
Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP 2.0b1\www\banniere_03\1.php on line 52

voici le code :

<html>
<head>
</head>
<body>
<?php
require("base_banniere.php");

// connection à la DB
$link=mysql_connect($dsn['hostname'], $dsn['username'],$dsn['password']) or die ("erreur connexion");
$bd=mysql_select_db($dsn['dbname'],$link);

// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$sql = "SELECT * FROM tab_banniere";
$result=mysql_query($sql,$link);
$total= mysql_num_rows($result);

if($total)
{
echo ('<form name="suppression" method="post">');
echo ('<table bgcolor="#FFFFFF">'."\n");
echo ('<tr>');
echo ('<td bgcolor="#669999"><b><u></u></b></td>');
echo ('<td bgcolor="#669999"><b><u>Nom_banniere</u></b></td>');
echo ('<td bgcolor="#669999"><b><u>Commentaire</u></b></td>');
echo ('<td bgcolor="#669999"><b><u>Banniere</u></b></td>');
echo ('</tr>'."\n");

while($row = mysql_fetch_array($result))
{
echo ('<tr>');
echo ('<td bgcolor="#CCCCCC"><input type="checkbox" name="delete[]" value="'.$row["id_banniere"].'"></td>');
echo ('<td bgcolor="#CCCCCC">'.$row["Nom_banniere"].'</td>');
echo ('<td bgcolor="#CCCCCC">'.$row["Commentaire"].'</td>');
echo ('<td bgcolor="#CCCCCC">'.$row["Banniere"].'</td>');
echo ('</tr>'."\n");
}
echo ('</table>'."\n");
echo ('<input name="suppr" type="submit" value="supprimer">');
echo ('</form>'."\n");

}

else echo ('Pas d\'enregistrements dans cette table...');

mysql_free_result($result);

?>

<?php

foreach ($_POST["delete[]"] as $delete2)
{
mysql_query("DELETE FROM tab_banniere WHERE id_banniere = $delete2");
}
?>

</body>
</html>
Configuration: Windows XP
Firefox 2.0.0.14

3 réponses

  1. RackNiak Messages postés 166 Statut Membre 11
     
    Bonjours,
    moi quand je fais se jore de script, jutilise une autre methode:

    <html>
    <head>
    </head>
    <body>
    <?php
    require("base_banniere.php");

    // connection à la DB
    $link=mysql_connect($dsn['hostname'], $dsn['username'],$dsn['password']) or die ("erreur connexion");
    $bd=mysql_select_db($dsn['dbname'],$link);

    // requête SQL qui compte le nombre total d'enregistrement dans la table et qui
    //récupère tous les enregistrements
    $sql = "SELECT * FROM tab_banniere";
    $result=mysql_query($sql,$link);
    $total= mysql_num_rows($result);

    if($total)
    {
    echo ('<form name="suppression" method="post">');
    echo ('<table bgcolor="#FFFFFF">'."\n");
    echo ('<tr>');
    echo ('<td bgcolor="#669999"><b><u></u></b></td>');
    echo ('<td bgcolor="#669999"><b><u>Nom_banniere</u></b></td&g­t;');
    echo ('<td bgcolor="#669999"><b><u>Commentaire</u></b></td>­;');
    echo ('<td bgcolor="#669999"><b><u>Banniere</u></b></td>')­;
    echo ('</tr>'."\n");

    while($row = mysql_fetch_array($result))
    {
    if( $_POST['check_'.$row["id_banniere"]] == $row["id_banniere"] ) // si la case existe, donc Cocher :p tu la supprimer
    {
    mysql_query("DELETE FROM tab_banniere WHERE id_banniere = ".intval($_POST['check_'.$row["id_banniere"]]) ); // intVal sert a accepter que les chiffre, si c'est autre, alors sa affiche 0 ( AntiInjectionSql :p )
    }
    else // sinon tu affiche :p
    {

    echo ('<tr>');
    echo ('<td bgcolor="#CCCCCC"><input type="checkbox" name="check_'.$row["id_banniere"].'" value="'.$row["id_banniere"].'"></td>');
    echo ('<td bgcolor="#CCCCCC">'.$row["Nom_banniere"].'</td>');
    echo ('<td bgcolor="#CCCCCC">'.$row["Commentaire"].'</td>');
    echo ('<td bgcolor="#CCCCCC">'.$row["Banniere"].'</td>');
    echo ('</tr>'."\n");
    }
    }
    echo ('</table>'."\n");
    echo ('<input name="suppr" type="submit" value="supprimer">');
    echo ('</form>'."\n");

    }
    else echo ('Pas d\'enregistrements dans cette table...');

    mysql_free_result($result);

    ?>

    </body>
    </html>

    Esperon que sa Fonctione :p
    0
  2. Dr Zoidberg Messages postés 547 Statut Membre 100
     
    salut,

    foreach ($_POST["delete"] as $delete2)
    à la place de
    foreach ($_POST["delete[]"] as $delete2)
    0
  3. baltazar852000 Messages postés 24 Statut Membre
     
    merci RackNiak

    mais a quoi sert: check_ svp
    0
    1. RackNiak Messages postés 166 Statut Membre 11
       
      C'est pour distinger, mais juste l'id suffis :p
      0