Page 1 sur 2
probleme d'actualisation
Posté : 21 oct. 2005, 11:45
par marilou
Salut à tous.
Voila mon problème, j'ais une checkbox qui lorsque je valide le formulaire me supprime à l'aide d'une requête mysql des données de ma table.
Il y a en fait deux problème, lorsque je valide la suppression les données sont supprimer dans la base de donnée par-contre il faut que j'actualise la page de mon site afin de constater leurs suppressions.
L'autre problème et que je n'arrive pas à supprimer deux données à la fois, c'est à dire que lorsque je selectionne deux checkbox cela ne m'en supprime que une.
J'éspère que j'ais été assé clair..
Voici mon code :
Code : Tout sélectionner
<form action="page_membres.php" method="POST" name="test">
<input type="checkbox" name="sup" value="<?php echo($row["id"]); ?>">
<?php
if (isset($_POST['sup'])) {
mysql_query("DELETE FROM auto WHERE id='".$_POST['sup']."' ") or die (mysql_error());
}
?>
<input type="submit" value="supprimer">
Si vous avez une idée. Merci
Posté : 21 oct. 2005, 11:52
par pitt
Pour commencer je me demande si il ne manque pas le terme multiple dans ton checkbox pour pouvoir en sélectionner plusieurs.
Ensuite tu dois appeler ton checkbox supp[]
Ce qui aura pour effet de stocker toutes les cases cochées dans un tableau sinon il considère que supp vaut seulement la dernière valeur qu'elle a prise et ensuite dans ta page de traitement tu peux utiliser:
$supp=$_POST['supp']
foreach ($supp as $cle => $id){
//ta requête
}
et pour actualiser tu peux faire
Je pense que cela devrait fonctionner
Posté : 21 oct. 2005, 12:04
par marilou
Désolé mais je ne vois pas comment utiliser ton code

Posté : 21 oct. 2005, 12:17
par Truc
Salut, ton probleme d'acctualisation viens certainement du faite que tu affiche les données puis les supprime, essai en plaçant le code de suppression en début de fichier.
Puis pour la muliséléction faut effectivement rajouter des [] au nom des cases.
Puis pour la suppresion tu a le choix entre 2 types de requete. Soit supprimer les lignes une par unes (donc plein de requetes pas optimal) soit une requete dynamique qui ajoute a chaque case cochée la clause " AND id=$case ".
<?
//ce test en début de fichier
if (isset($_POST['sup']))
{
$supp=$_POST['supp']
$req="";
foreach ($supp as $id)
{
//code requete dynamique
}
mysql_query("DELETE FROM auto WHERE ".$req) or die (mysql_error());
}
...
...
?>
<form action="page_membres.php" method="POST" name="test">
<input type="checkbox" name="sup[]" value="<?php echo($row["id"]); ?>">
<input type="submit" value="supprimer">
je te laisse le soin de la requete dynamique pour l'instant, fait des tests si tu n'y arrive pas tu reviendras

Posté : 21 oct. 2005, 13:03
par marilou
Cela ne fonctionne pas je dois toujours actualiser la page... Pour la requête dynamique je cherche..
Posté : 21 oct. 2005, 14:36
par pitt
Pour actualiser ta page tu peux mettre après la partie requête
Code : Tout sélectionner
<script>
window.location.replace('pages_membres.php');
</script>
Cela rappelera ta page pages_membres et la variable supp n'existera plus donc il passera à la deuxième partie de ton script qui correspond à l'affichage des enregistrements restants
Posté : 21 oct. 2005, 14:39
par marilou
J'ais essayé d'envoyer les valeurs à ma requête de suppression mais je n'arrive pas à en éliminer 2 à la fois.
Code : Tout sélectionner
<?
if (isset($_POST["supp"]))
{
$supp=$_POST["supp"];
foreach ($supp as $id) {
echo(" <li>". $id ."</li>\n");
}
$req=" id_auto = '$id' ";
mysql_query("DELETE FROM fk_auto WHERE ".$req." ") or die (mysql_error());
}
?>
J'ai simplement affiché le tableau afin de voir les résultats enregistrés mais je n'arrive pas à les transmettres à ma requête.
Posté : 21 oct. 2005, 14:55
par pitt
il te manque les and dans ta requête: à chaque nouveau id_auto tu dois mettre and id_auto=x mais ca va poser un problème pour le premier ou le dernier en fonction de où tu places ton and sinon il te reste la solution d'éxécuter la requête à chaque tour de boucle.
Si tu trouves comment faire pour tout faire d'un coup dis le ca m'intéresse aussi
Merci
Posté : 21 oct. 2005, 15:01
par pjl
J'ais essayé d'envoyer les valeurs à ma requête de suppression mais je n'arrive pas à en éliminer 2 à la fois.
Lire la FAQ, c'est dedans :
http://www.phpfrance.com/forums/voir_sujet-5220.php
Posté : 21 oct. 2005, 15:04
par pitt
Je ne pense pas que le problème soit celui la la variable est bien récupérée sous forme de tableau.
Je pense que c'est la construction de la requête dynamiquement qui n'est pas au point.
Posté : 21 oct. 2005, 15:09
par marilou
C'est juste le problème n'est pas de récupérer les valeurs mais de les transmettres à la requéte.
Posté : 21 oct. 2005, 15:12
par pitt
Je pense que j'ai trouvé alors tu testes si ta variable existe
ensuite tu comptes ton nombre d'éléments et tu initialises ta requête
$taille=sizeof($supp);
$req="delete from fk_auto where"
ensuite à chaque tour de boucle
foreach($supp as $cle => $id_auto){
$req.="id_auto = {$id_auto} "
if ($cle!=$taille-1){
$req.="and";
}
}
on ajoute une ligne à supprimer et si ce tour ne correspond pas au dernier tour de boucle on ajoute and .
J'éspère que ca marchera
Posté : 21 oct. 2005, 15:34
par marilou
J'ais testé mais sans résultat :
Il faudrais une boucle dans la requête..
Posté : 21 oct. 2005, 15:37
par pitt
n'éxécute pas ta requête mais affiche la pour voir le résultat
Posté : 21 oct. 2005, 15:44
par marilou
J'ais trouvé il suffit d'intégre la requête dans la boucle et elle sera démultiplié :
Code : Tout sélectionner
if (isset($_POST["supp"]))
{
$supp=$_POST["supp"];
foreach ($supp as $cle => $id)
{
echo(" <li>". $cle ."</li>\n");
//code requete dynamique
mysql_query("DELETE FROM fk_auto WHERE id_auto = $id ") or die (mysql_error());
}
Merci pour votre aide et merci pour l'actualisation[/quote]