Requete et/ou : un peu de logique ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requete et/ou : un peu de logique ?

par Ryle » 02 avr. 2009, 09:40

Il te faut dans ce cas tester si une au moins de tes couleurs est renseignée ;)
if (!empty($couleur1) || !empty($couleur2) ... ) {
  // ajoute la condition sur les couleurs : AND ( ... )
  // et en fonction des couleurs spécifiées, tes conditions avec des OU
}

par Invité » 02 avr. 2009, 09:36

Grand merci de ta réponse !

Où je bute c'est que la couleur n'est parfois pas spécifiée (c'est pas obligatoire). Et je peux avoir couleur1 vide et couleur 2=verte par exemple...Donc le "AND" prévu sur la couleur 1 n'est pas présent.

par Ryle » 02 avr. 2009, 09:32

Il faut jouer avec les parenthèses, sans quoi le ET est prioritaire sur le OU :

Code : Tout sélectionner

marque = renault ET ( couleur1=vert OU couleur1=bleu OU ... )
En gros, si au moins une couleur est spécifiée, tu ajoutes le AND et les parenthèses, et à l'intérieur des parenthèses tu spécifies chacune de tes couleurs avec des OR :)

Requete et/ou : un peu de logique ?

par JBLCN » 02 avr. 2009, 09:08

Bonjour à tous,


Je sèche un peu sur l'écriture d'une requete sql :

Je cherche à sélectionner les véhicules renault de ma table. Pas de problèmes.
Je cherche ensuite à sélectionner les véhicules renault rouges. pas de souci.

Je cherche ensuite à sélectionner les véhicules rouges ou bleus ou verts.

Ces trois requêtes peuvent cohabiter. C'est à dire qu'on peut préciser ou pas la couleur, ou plusieurs couleurs.

Une petite piste ?

Ce que j'ai fait


select vehicules where marque =renault

Si couleur1 non null (vert) :

$sql.= " AND couleur1=vert"
etc...

Merci de votre aide