Supprimer enregistrement d'une table ??

Résolu/Fermé
baltazar852000 Messages postés 21 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 31 octobre 2014 - 12 juin 2008 à 12:50
RackNiak Messages postés 166 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 12 juin 2008 - 12 juin 2008 à 20:36
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>
A voir également:

3 réponses

RackNiak Messages postés 166 Date d'inscription mardi 10 juin 2008 Statut Membre Dernière intervention 12 juin 2008 11
12 juin 2008 à 13:21
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
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
12 juin 2008 à 13:39
salut,

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

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