Supprimer enregistrement d'une table ?? [Résolu/Fermé]

Signaler
Messages postés
21
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
31 octobre 2014
-
Messages postés
166
Date d'inscription
mardi 10 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008
-
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>

3 réponses

Messages postés
166
Date d'inscription
mardi 10 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008
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
Messages postés
528
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
98
salut,

foreach ($_POST["delete"] as $delete2)
à la place de
foreach ($_POST["delete[]"] as $delete2)
Messages postés
21
Date d'inscription
mercredi 28 mai 2008
Statut
Membre
Dernière intervention
31 octobre 2014

merci RackNiak

mais a quoi sert: check_ svp
Messages postés
166
Date d'inscription
mardi 10 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008
11
C'est pour distinger, mais juste l'id suffis :p