|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Étudiant Inscription : septembre 2010 Messages : 72 ![]() |
Bonjour à tous, je suis en ce moment sur une requête qui ne me semble pas claire du tout.
Ça le sera je pense pour ceux qui en ont le métier ![]() J'ai un formulaire de recherche de vidéos avec comme critère de recherche possible : - nom du présentateur - lieux - personnage Il peuvent changer suivant le choix de l'utilisateur. Mon soucis vient du fait que l'affichage n'est pas bon du tout. ex : Si l'utilisateur laisse vide 2 critères et qu'il souhaite uniquement les vidéos en Français, mon affichage m'affiche des vidéos Anglaise, Allemande etc... je dois donc avoir un soucis avec la requête ci-dessous... voici ma requête : Code sql :
Merci par avance ! |
||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Personnellement, je construirais la requête différemment, en enlevant du WHERE les critères qui ne sont pas renseignés dans le formulaire, plutôt que de laisser des OR avec des chaînes potentiellement vides.
En effet, je ne sais pas comment est remplie la base quand l'info n'est pas renseignées sur ces champs (NULL ou chaîne vide), mais le mieux reste encore de supprimer de la requête tous les critères qui ne sont pas renseignés. D'autant plus que si les données ont été insérées par un LOAD DATA INFILE, il y a toutes les chances pour que les données manquantes soient sous forme de chaine vide et non pas sous forme de NULL. Et du coup, les critères de la requête se révèlent tous justes pour des critères non renseignés dans le formulaire. En conclusion, il vaut mieux créer dynamiquement les colonnes à faire figurer dans le WHERE, en limitant aux critères renseignés dans le formulaire.
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : septembre 2010 Messages : 72 ![]() |
Merci pour ta réponse, concrètement je pourrai passer par quel système pour faire ceci ?
Effectuer une recherche dans ma DB via un formulaire ou potentiellement tout les champs ne sont pas remplie ? |
|
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() Étudiant Inscription : septembre 2010 Messages : 72 ![]() |
J'ai modifié ma requête :
Code php :
La requête fonctionne aprfaitement lorsque je n'ai que un seul critère de recherche. Par contre si je rentre deux ou trois critère ( Ville + nom ) j'ai des résultats non logique. C'est normal je comprend bien ma requête avec les OR, mais je ne vois pas du tout comment écrire ma requête pour lui faire prendre un compte les critères multiples ! Merci par avance |
||
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 655 ![]() |
Bonjour si vous persistez à ne vouloir qu'une seule requête statique ... (je préfère la remarque de ced à votre méthode en fait)
Code :
|
||
|
|
00
|
|
|
#6 | |||
|
Invité de passage
![]() Étudiant Inscription : septembre 2010 Messages : 72 ![]() |
Citation:
Pouvez vous m'indiquer le nom de ce qu'est votre requête que je puisse chercher de la documentation dessus
|
|||
|
|
00
|
|
|
#7 | ||
![]() ![]() |
PHP te permet de construire la requête dynamiquement.
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#8 |
|
Invité de passage
![]() Étudiant Inscription : septembre 2010 Messages : 72 ![]() |
Merci pour ta réponse, peux tu juste m'indiquer quelque chose en supplément.
A quoi correspond le "." devant le "=" ? Cordialement
|
|
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : avril 2011 Messages : 426 ![]() |
A une concaténation
|
|
|
00
|
|
|
#10 | ||||
![]() ![]() |
Concrètement :
Code :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||
|
00
|
|
|
#11 |
|
Invité de passage
![]() Étudiant Inscription : septembre 2010 Messages : 72 ![]() |
Je te remercie bien
|
|
|
00
|
|
|
#12 | ||
|
Invité de passage
![]() Étudiant Inscription : septembre 2010 Messages : 72 ![]() |
J'ai encore un petit soucis, il faudrait je pense que je passe par une sous requête, je m'explique dite moi si c'est un erreur.
Si je veux récuperer les habitants d'une ville ou le nom ou prenom de la personne est dupont. Car sans la sous requête avec une suite de AND et de OR, il me liste bien mais sans tenir compte de la ville car je fais WHERE ville= paris AND nom = dupond OR prenom = dupond Une requête comme celle ci pourrai elle être valide ? Code sql :
j'isole en quelque sorte la seconde requête de la première. C'est en gros ca mon idée Merci par avance !
|
||
|
|
00
|
|
|
#13 | ||
![]() ![]() |
Vite fait...
Code SQL :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
10
|
|
|
#14 | |||
|
Membre éclairé
![]() Gérard OkonoDéveloppeur Web Inscription : juillet 2006 Messages : 711 ![]() |
Citation:
Code :
|
|||
|
|
00
|
|
|
#15 |
![]() ![]() |
J'avais mis les espaces en fin de ligne des morceaux précédents.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#16 |
|
Invité de passage
![]() Étudiant Inscription : septembre 2010 Messages : 72 ![]() |
Je te remercie bien, ça marche impeccable et j'ai appris d'autres éléments
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com