Problème dans une requête !

Eléphant du PHP | 259 Messages

16 oct. 2007, 16:18

Bonjour,

J'ai un petit probléme sur une requête.. je pense que c'est un truc tout bete mais je n'arrive pas a trouver la solution.

Voici la requête que je veux effectuer :

Code : Tout sélectionner

$sql8 = "SELECT * FROM matable WHERE expediteur ='".$_SESSION['pseudo']."' AND id_membre = '".$_POST['id_membre']."' AND date='$date_auj'"; $req8 = mysql_query($sql8) or die('Erreur SQL : <br />'.$sql8); $nb = mysql_num_rows($req8);
Le probléme est au niveau de

Code : Tout sélectionner

WHERE expediteur ='".$_SESSION['pseudo']."'
car lorsque j'enléve cette partie là, la requête fonctionne, ça me retoune le bon nombre dans $nb.

En mettant la partie qui bug : ( WHERE expediteur ='".$_SESSION['pseudo']."' ) ça ne met pas d'erreur mais $nb est égal à 0 alors qu'il y a bien des enregistrements correspondant.

J'ai essayé de remplacer

Code : Tout sélectionner

WHERE expediteur = '".$_SESSION['pseudo']."'
par un pseudo comme :

Code : Tout sélectionner

WHERE expediteur ='test'
qui est dans ma table et ça ne marche pas non plus.

Je ne vois pas pourquoi le champ expéditeur pose probléme ! Je vous met la structure de ma table :

Code : Tout sélectionner

`id_membre` bigint(20) NOT NULL default '0', `id_message` bigint(100) NOT NULL auto_increment, `sujet` varchar(120) NOT NULL default '', `message` text NOT NULL, `expediteur` varchar(20) NOT NULL default '', `date` date NOT NULL default '0000-00-00',
Ce problème me pose une colle depuis un moment déjà et je n'arrive pas a trouver la solution :?

J'espére que vous pourrez m'aider. :wink:

d0m
Mammouth du PHP | 1141 Messages

16 oct. 2007, 16:27

as tu essaié d'afficher ta requête avant de l'executer
$sql8 = "SELECT * 
         FROM matable
        WHERE expediteur ='".$_SESSION['pseudo']."'
        AND id_membre = '".$_POST['id_membre']."' 
        AND date='$date_auj'";
echo $sql8.'<BR>';
et de vérifier dans ta table à la main si il y a des éléments qui la vérifie?

Eléphant du PHP | 259 Messages

16 oct. 2007, 16:31

oui en l'affichant c'est correct, ça affiche :

Code : Tout sélectionner

SELECT * FROM matable WHERE expediteur ='angebleu17' AND id_membre = '4' AND date='2007-10-16'
Je ne vois pas du tout d'ou provient l'erreur..c'est en rapport avec le champ expediteur car en l'enlevant ça marche.

d0m
Mammouth du PHP | 1141 Messages

16 oct. 2007, 16:37

En passant , pas de quotes autour de la velur de id_membre car c'est une valeur numérique, pas une chaine.

Maintenant es tu sûr de bien avoir au moins une ligne dans ta table qui a à la fois :
expediteur ='angebleu17'
ET id_membre = 4
ET date='2007-10-16'

parce que d'après ton résultat ce n'est pas le cas.
Modifié en dernier par d0m le 16 oct. 2007, 16:37, modifié 1 fois.

Eléphant du PHP | 259 Messages

16 oct. 2007, 16:51

J'ai enlevé les quotes autour de la valeur de id_membre mais ça ne change rien.

J'ai bien vérifié dans ma table j'ai bien un champ qui correspond à ma requête.

Dés que j'enléve la clause avec expediteur ça marche. J'ai essayé une autre requete avec le champ expéditeur dans une clause where et çe ne marche pas. Cela provient peut être du type du champ expéditeur, pourtant c'est un varchar donc normalement c'est bon !

Aprés affichage de la requête :

Code : Tout sélectionner

SELECT * FROM matable WHERE expediteur ='angebleu17' AND id_membre = 4 AND date='2007-10-16'
J'ai déjà vérifié plusieurs fois et il y a bien un enregistrement ou expediteur = angebleu17 et id_membre = 4 et date = 200-10-16.

Eléphant du PHP | 443 Messages

16 oct. 2007, 17:00

J'ai enlevé les quotes autour de la valeur de id_membre mais ça ne change rien.

J'ai bien vérifié dans ma table j'ai bien un champ qui correspond à ma requête.

Dés que j'enléve la clause avec expediteur ça marche. J'ai essayé une autre requete avec le champ expéditeur dans une clause where et çe ne marche pas. Cela provient peut être du type du champ expéditeur, pourtant c'est un varchar donc normalement c'est bon !

Aprés affichage de la requête :

Code : Tout sélectionner

SELECT * FROM matable WHERE expediteur ='angebleu17' AND id_membre = 4 AND date='2007-10-16'
J'ai déjà vérifié plusieurs fois et il y a bien un enregistrement ou expediteur = angebleu17 et id_membre = 4 et date = 200-10-16.

Tu es certain de ne pas avoir de problème d'espaces enregistrés dans ta bases avant ou après le nom de l'expéditeur, et qui ferait échouer ta condition ?

[edit] Tu as tapé 200-10-16. C'est une erreur de frappe ?

Tracker

Eléphant du PHP | 259 Messages

16 oct. 2007, 17:17

oui pour l'année c'est une erreur de frappe c'est bien 2007-10-16.

tu as raison c'était l'espace avant le début du mot !! :x :?

pourtant en affichant les enregistrements sur MySQL on ne voit rien mais lorsqu'on clique sur modifier là on voit bien qu'il y a un espace !! Dans ma requete d'insertion il y avait un espace entre ' et ".

Merci pour vos réponses.