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
-
RackNiak
Messages postés
170
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
170
Date d'inscription
mardi 10 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008
9
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
533
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
RackNiak
Messages postés
170
Date d'inscription
mardi 10 juin 2008
Statut
Membre
Dernière intervention
12 juin 2008
9
C'est pour distinger, mais juste l'id suffis :p