OVH Cloud OVH Cloud

suppression en masse

3 réponses
Avatar
Ze DrY
j'ai une table avec des utilisateurs (id, nom, prenom, adresse, etc...)
et j'ai une page php qui liste les utilisateurs et a chaque ligne y'a une
case a coché
si on les coche et que l'on valide sa envoie sur un script qui recoit les
variables des cases a coché
soit (delete = id de l'utilisateur a supprimé)

si on en supprime qu'un ca c facile c une requete mysql delete, sa je c
faire
la ou je comprend pas c si j'en selectionne plusieurs

becoze je vais recevoir delete=1 + delete =2 etc... selon

alors je me suis dit qu'il fallait effectué un while par exemple :

while ($delete) {

lancement de ma requete pour verifié que les id existe
si les id son absent alors il renvoi une variable pour me prevenir et
afficher une page
mais si les id sont present alors i lrelance une requete et les supprime
}

le probleme c'est que le script tourne en boucle, et la ben je suis paumé a
mon avis mais jes uis vraiment pas u npro faut que je detecte le nombre de
variable recu pour lancé la requete x fois (egale o nombre a verifié et peu
etre a supprimé

voila.. si quelqu'un peu m'aider ca serait cool

3 réponses

Avatar
Nicolas
delete[]=id au lieu de delete=id dans le formulaire html !

Je m'explique :

Construction des cases à cocher :
Une boucle sur les utilisateurs avec une ligne du type :
<input name="delete[]" type ="checkbox" value="<?php echo $id ;?>">

Le script PHP qui va recevoir le formulaire reçoit alors un tableau.
Il ne reste plus qu'à faire une boucle du type :
for ($i=0; i < count($delete); $i++) {
// effacer l'entrée où id = '$delete[$i]';
}

Bon courage,

Nicolas
Avatar
Jean-Marc Molina
Il te faut utiliser des input de type checkbox et suffixer ton attribut name
par [] pour qu'une variable de type array soit créée dans PHP. Tu peux alors
boucler sur tous tes ids d'entrées à effaçer.

Déjà pour "déboguer" tu peux faire un simple printr sur le tableau que tu
récupères après avoir soumis le formulaire, non ?

Ton algo est un peu faux :
pour chaque id
effaçer id
fin pour

Pourquoi vérifier que l'id existe ? Il existe forcément vu que tu l'as
sélectionné dans une liste...

JM

--
Europe > France > Lyon
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Avatar
Pimousse
Bonjour,

Remarque préalable : on est pas sur un téléphone portable, on écrit pas
de sms. Donc ça serait cool de faire gaffe à utiliser des mots français
correctement orthographiés !
Sur ce .. :o)

bon ahma ça devrait donner ça :

du côté de ta page d'affichage :

....
echo '<form method="post" action="...">';
while($row=@mysql_fetch_array(@mysql_query("SELECT id,nom,prenom,adresse
,... FROM taTable WHERE ... ORDER BY ...)))
{
echo '<input type="checkbox" name="checkbox[]"
value="'.$row['id'].'"><br>';
}
echo '<input type="submit" value="Supprimer"></form>";
....


du côté de ta page de traitement :

while(list($id,$valeur)êch($_POST['checkbox']))
{
if($valeur=='on') //cad checkbox sélectionnée
{
if(@mysql_query("DELETE FROM taTable WHERE id='".$id."'"))
echo 'Suppression de '.$id.' effectuée<br>';
else
echo 'L'enregistrement '.$id.' n'existe pas !<br>';

}
}

autre méthode :

$query='DELETE FROM taTable WHERE ';
while(list($id,$valeur)êch($_POST['checkbox']))
{
$query.="id='".$id."' OR ";
}
$result=@mysql_query(substr($query,0,strlen($query)-4));


Le pble avec la seconde méthode, c'est que tu ne peux savoir que si la
requête a fonctionné ou pas, et non pas si un enregistrement était
présent ou pas ...

@++
Pimousse