Page 1 sur 1

[Résolu] [Qst] - Eliminer un facteur lors de la recherche...

Posté : 15 mai 2009, 02:48
par casio
Salutations,

Je cherche a exclure des requêtes SQL les enregistrements dont les champs "Verif." contiennent "//", et je ne sais pas comment paramètrer la requête SELECT. J'ai essayé avec WHERE, mais je ne dois pas avoir une bonne nomenclature...

Pouvez-vous m'aider ?

Posté : 15 mai 2009, 09:27
par stopher
Slt ,

Donnes nous plus de détails ,

requêtes qui posent problèmes , exemples ect ..

sinon , c'est assez difficile de bien cerner ton problème , et l'on risque de répondre à coté .

Ch.

Posté : 26 mai 2009, 00:50
par casio
(...)
Donnes nous plus de détails ,
(...)
Indeed...

Sur la requête suivante :
(...)
$select = 'select *, TO_DAYS( NOW( ) ) - TO_DAYS( `Modif.` ) < 15 AS new FROM Ordinateurs ORDER BY '.$order.',Introduction,Marque,Modele'; // Recherche des catégories
(...)
J'aimerais rajouter la condition "WHERE Verif. n'est pas '//'"...
Mais je butte sur la nomenclature...

Posté : 26 mai 2009, 01:41
par furiouslol
Salut

WHERE verif <> '15'

Posté : 26 mai 2009, 10:20
par casio
Salut

WHERE verif <> '15'
Pourquoi "15" ?

Posté : 26 mai 2009, 22:25
par furiouslol
Euh ouais je suis passé trop vite fait, autant pour moi

Donc l'opérateur "différent de" c'est <> en SQL

Donc WHERE verif <> 'ta valeur'

Posté : 27 mai 2009, 08:49
par casio
Merci.
Du coup, j'ai maintenant :
(...)
$select = 'select *, TO_DAYS( NOW( ) ) - TO_DAYS( `Modif.` ) < 15 AS new FROM Ordinateurs WHERE Verif. <> '//' ORDER BY '.$order.',Introduction,Marque,Modele'; // Recherche des catégories
(...)
Note que j'ai essayé "//", // et '//' et les trois me retournent une erreur :
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<> // ORDER BY Introduction,Introduction,Marque,Modele' at line 1
Du coup, je me demande s'il aime bien les //.

Est il possible plutôt de tester si le champs à plus de 2 caractères ? (En gros, n'afficher que ce qui a plus de caractères que //)

Posté : 01 juin 2009, 14:34
par casio
Any idea ?

Posté : 01 juin 2009, 19:10
par ouckileou
Ben ça se voit rien qu'à la coloration là :
premier apostrophe : début de la chaîne
deuxième (avant les slashes) : fin de la chaîne
double slashes : commentaire PHP

Je comprends même pas que ce code ne plante pas dès l'exécution du script.

c'est ta construction de chaîne qui est en cause, pas les //.

Posté : 05 juin 2009, 16:44
par casio
Ben ça se voit rien qu'à la coloration là :
premier apostrophe : début de la chaîne
deuxième (avant les slashes) : fin de la chaîne
double slashes : commentaire PHP

Je comprends même pas que ce code ne plante pas dès l'exécution du script.

c'est ta construction de chaîne qui est en cause, pas les //.
Je viens de tout re-vérifier.
J'ai donc maintenant :
(...)
$select = "SELECT *, TO_DAYS( NOW( ) ) - TO_DAYS( `Modif.` ) < 15 AS new FROM Ordinateurs WHERE Verif. <> '//' ORDER BY ".$order.",Introduction,Marque,Modele"; // Recherche des catégories
(...)
Mais cela continue de me donner :
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<> '//' ORDER BY Introduction,Introduction,Marque,Modele' at line 1
:(

Posté : 05 juin 2009, 18:46
par Ryle
Le message d'erreur de mysql t'indique l'endroit exacte où mysql a rencontré un problème. Maintenant ce problème est généralement lié à l'élément qui se trouve juste avant :)

En effet, MySQL ne parvient pas à identifier de colonne nommée "Verif" ni d'instruction correspondant à un point ".", résultat il t'envoi une erreur...

Code : Tout sélectionner

WHERE Verif. <> '//'
Avec MySQL tu peux protéger le nom des champs comme tu l'as fait au début de ta requête

Code : Tout sélectionner

WHERE `Verif.` <> '//'
mais le mieux reste quand même dès le départ de ne pas mettre de caractères spéciaux autre que "-" ou "_" dans le nom d'un champ :)

Posté : 05 juin 2009, 19:52
par casio
Le message d'erreur de mysql t'indique l'endroit exacte où mysql a rencontré un problème. Maintenant ce problème est généralement lié à l'élément qui se trouve juste avant :)

En effet, MySQL ne parvient pas à identifier de colonne nommée "Verif" ni d'instruction correspondant à un point ".", résultat il t'envoi une erreur...

Code : Tout sélectionner

WHERE Verif. <> '//'
Avec MySQL tu peux protéger le nom des champs comme tu l'as fait au début de ta requête

Code : Tout sélectionner

WHERE `Verif.` <> '//'
mais le mieux reste quand même dès le départ de ne pas mettre de caractères spéciaux autre que "-" ou "_" dans le nom d'un champ :)
Indeed :)
C'était juste ce point qui m'enquiquinait.
Merci à vous ! Je clos la requête.