Delete ds une boucle

TuxOnline Messages postés 24 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 21 janvier 2007 - 5 mars 2006 à 21:17
TuxOnline Messages postés 24 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 21 janvier 2007 - 6 mars 2006 à 14:39
Bonjour, j'ai un pti probleme avec une requete dans mon php.
voila enfet je souhaite faire une suppression multiple.
donc j'envoie depuis une checkbox les valeurs que je veut supprimer.
Et ensuite je fait une boucle foreach pour toute les donnée du tableau envoyer.
La boucle se passe bien et il n'y a pas d'erreur quand la requete est éffectué mais rien n'est supprimer dans la base lol.
voici ma boucle que je fais :
foreach($_SESSION['tab'] as $choix)
{
echo $_SESSION['id'].'
';
$req="DELETE FROM message WHERE expediteur = '".$_SESSION['id']."' AND objet='".$choix."'";
if($resultat=mysql_query($req))
echo "supp ok
";
else
echo mysql_error();
}

voila si ce n'est pas comme sa qu'il faut faire dite le moi car je block sur ce coup la lol.
merci bcp a vous.

7 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
6 mars 2006 à 09:22
Hello,

tu parcours $_SESSION['tab'], et tu effaces en fonction de $_SESSION['id']...outre que celui-ci sera toujours le même...j'ai dans l'idée que ton tableau est en fait $_SESSION['tab]['id'], non...?
Auquel cas :
foreach ($_SESSION['tab']['id'] as $choix) {
// delete en fonction de $choix
}
0
cs_AshenShugar Messages postés 202 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 22 janvier 2009 1
6 mars 2006 à 10:11
Je crois plutôt qu'il enregistre dans son $_SESSION['tab'] les objets des sujets qu'il veut supprimer pour l'expéditeur représenté par son $_SESSION['id']. Donc je pense qu'il n'y a pas d'erreur de ce côté-là si j'ai bien compris ce qu'il souhaite faire. En revanche, je pense que l'objet du message est d'un type Varchar ou Text. Par conséquent, je conseillerais plus l'utilisateur du "LIKE" à la place du = dans sa requête. Ainsi, le test ne serait plus sensible à la casse. Mais n'y-a-t'il aucun moyen pour toi de récupérer les identifiants des enregistrements à effacer ? Celà restera toujours plus fiable qu'un test sur une chaîne.

Le hardware, c'est sur quoi l'on tape lorsque le software merde...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
6 mars 2006 à 10:22
Exact j'avais mal lu la requête (pas en entier en fait lol).

Par contre :
expediteur = '".$_SESSION['id']."'

implique que expediteur est un type varchar ou text aussi, ce qui pour un id semble curieux.
0
cs_AshenShugar Messages postés 202 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 22 janvier 2009 1
6 mars 2006 à 11:23
Effectivement, mais il me semble que mysql est capable de l'interpréter comme un nombre, mais si celui-ci est entre quote. Ce n'est pas le cas sur tous les SGBD, mais sur MySQL, oui. Dans le doute, je viens de vérifier. Pour moi, l'erreur n'est pas là, car au pire, s'il n'avait pas reconnu l'utilisation des quotes comme un nombre, il aurait de toutes facons balancer une erreur d'execution.
Je pense vraiment que l'erreur vient du test ur le champ "objet"

Le hardware, c'est sur quoi l'on tape lorsque le software merde...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TuxOnline Messages postés 24 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 21 janvier 2007
6 mars 2006 à 12:40
salut je vais essayer avec LIKE a la place de =.
Sinon le champ objet qand je fait un echo c'est bien celui qui est stocker dans la variable.
A moin qu'il y est des espaces, qu'il ne trouve pas dans la base. Est-ce une possibilité??
Car enfet j'ai une page accueil, avec des checkbox, quand on selectionne des messages on peut appuiyer sur un bouton supprimer qui va donc appeler la page supprimer.
Si une variable est multiple alors je fais la requete avec le pb.
Sur chaque checkbox le nom est du type $site[] et la valeur celle de l'objet du message.
voili voilu
0
cs_AshenShugar Messages postés 202 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 22 janvier 2009 1
6 mars 2006 à 13:59
Je ne comprends pas pourquoi tu utilises $_SESSION et non $_POST ou $_GET ?
Sinon, pour les espaces, tu peux utiliser la fonction trim(). Elle retirera les espaces en début et fin de chaînes. Celà peut être très pratique mais conduire aussi à des erreurs si les données de la base ont bien des espaces en début de fin de chaînes.

Le hardware, c'est sur quoi l'on tape lorsque le software merde...
0
TuxOnline Messages postés 24 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 21 janvier 2007
6 mars 2006 à 14:39
resalut
enfet j'ai changer de structure dans ma base j'ai mims un id en automatique et je me base dessus donc quand je supprimer il n'y a plus que l'id et donc c'est forcement lui. Et sa fonctionne.
AshenShugar ta fonction risque de me servir et je te remercie.
Merci a tout le monde pour votre aide !!!!
0
Rejoignez-nous