{MySQL} Probleme d'interprétation du caractère +

Résolu/Fermé
Dark_Lycan - 1 oct. 2009 à 10:30
Dark_Lycan Messages postés 2 Date d'inscription jeudi 1 octobre 2009 Statut Membre Dernière intervention 1 octobre 2009 - 1 oct. 2009 à 15:01
Bonjour à toutes et à tous,

Si je me permets de poster, c'est parce que j'ai un petit soucis en SQL. Je suis actuellement sur un projet de site web pour le collège dans lequel je travaille et je dois me servir d'une base de donnée.
Le problème, c'est qu'il y a une requête que je dois mettre en place qui me donne du fil à retordre. C'est la requête suivante (très simple au demeurant):

SELECT id_dev_cpt, count( id_eleve )
FROM test_dev_cpt_eleve
WHERE acquisition = "EC+"
AND id_dev_cpt IN (select id_dev_cpt
from test_dev_cpt
where id_devoir=1)
GROUP BY id_dev_cpt

En gros, je dois compter le nombre d'élèves pour lesquels la valeur acquisition vaut "EC+" (une valeur parmi un ensemble défini). Pour les autres valeurs ("V", "EC", "EC-", "NF" et "NA"), la requête fonctionne, mais pour la valeur "EC+", je n'ai aucun résultat.

Je pense que le problème vient du "+" dans ma condition, mais je ne sais pas comment l'empêcher d'être interpréter à l'exécution de la requête. Donc ma question est: comment faire pour qu'il n'y ait pas d'interprétation du caractère +?

Je vous remercie par avance de vos réponses.
A voir également:

5 réponses

P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
1 oct. 2009 à 12:55
MySQL n'interprète pas les chaines de caractères, ton problème vient d'ailleurs.
0
Dark_Lycan Messages postés 2 Date d'inscription jeudi 1 octobre 2009 Statut Membre Dernière intervention 1 octobre 2009
1 oct. 2009 à 13:54
Merci pour ta réponse P@t@ch0n.

J'ai peut-être un début de solution. Je viens de faire une vérification de mes données présentes dans les tables concernées, et je vois que je n'ai aucun enregistrement avec les valeurs "EC+". Je me dit, que dans ce cas là, c'est peut être à cause de cette absence que la requête ne fonctionne pas correctement.
J'ajoute donc une entrée avec pour valeur "EC+" et vérifie dans ma table, mais je me retrouve avec pour valeur "EC". Je modifie ce champs plusieurs fois, en passant la valeur à "EC+", mais à la fin de l'enregistrement, j'ai toujours comme valeur "EC".

Pourquoi? Un problème dans la définition de mes tables (je ne pense pas, vu que pour ce champs, il fait parti d'une liste et lorsque je contrôle la liste, il y a tous les éléments qui s'affichent)? Ou bien un soucis dans le paramétrage? Ou ailleurs?

Merci d'avance pour votre aide.
0
Bonjour
Comment est défini ton champ ? emum ? varchar(3) ? ou autre ?
Et comment fais-tu tes essais quand tu enregistres EC+? avec un script ou avec phpmyadmin ?
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
1 oct. 2009 à 14:08
Qu'entends-tu par liste ?

Si le + est supprimé lors de l'enregistrement, le problème viendrait en effet de la définition de cette colonne.

De quel type est cette colonne acquisition ?
0

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

Posez votre question
Dark_Lycan Messages postés 2 Date d'inscription jeudi 1 octobre 2009 Statut Membre Dernière intervention 1 octobre 2009
1 oct. 2009 à 15:01
Le champs acquisition est de type enum. Il prend sa valeur parmi 6 ("V", "EC+", "EC", "EC-", "NF" et "NA"). Pour les autres valeurs, les enregistrements se font sans souci. Il n'y a que le cas EC+ qui pose problème.
Et pour enregistrer une valeur, je passe directement par phpmyadmin, afin de tester la validité de mes tables, et de ma base de données (ensuite je scripterai, lorsque qu'on m'aura validé la structure).

[EDIT]: J'ai trouvé la solution mais je n'ai pas trouvé la logique qui se cache derrière.
Pour résoudre mon problème, j'ai tenté de passer par une requête d'insertion banale:

INSERT INTO test_dev_cpt_eleve( id_dev_cpt, id_eleve, acquisition )
VALUES ( 16141, 2, 'EC+' )


Et là, paf, mon EC+ est présent dans ma table. Alors que si je passe par l'interface PHPMyAdmin, il ne prend pas en compte le +. Je ne sais pas pourquoi, mais bon, tant que ça marche, c'est l'essentiel.
Voilà, mon problème est résolu mais si quelqu'un sait pourquoi l'interface tronque la saisie, ce serait cool de me l'expliquer.

Encore merci le père et P@t@ch0n pour votre aide.
0