Recherche en fonction de checkbox cochées [Résolu]

Signaler
Messages postés
34
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
11 mai 2007
-
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour,

J'ai un soucis avec un moteur de recherche dont voici l'objectif :
Ma base de données contient un certains nombre de cabriolets classés selon plusieurs critères (nb de places, carburant, type de toit, gamme de prix ...). J'ai donc un moteur de recherche qui doit trouver les cabriolets correspondant à la demande de l'internaute après qu'il ait défini les options de recherche.

Voici comment cela se passe :
L'internaute coche les cases qui l'intéressent pour filtrer les résultats, par exemple :
- capote
[] capote en toile manuelle
[checked] capote en toile automatique
- carburant
[checked] essence
[] diesel

Ce qui retourne tous les cabriolets qui se capotent électriquement et qui roule à l'essence, là pas de problème.

Le soucis :
Si je reprends le formuaire, mais en cochant aussi "diesel"
- capote

[] capote en toile manuelle

[checked] capote en toile automatique

- carburant

[checked] essence

[checked] diesel

Cette recherche retourne les cabriolets "capote en toile auto et essence ou diesel" mais aussi les "cabriolets diesel avec capote manuelle"

Pour être cohérent, j'aimerais obtenir tous le cabriolets qui roulent à l'eseence ou au diesel mais seulement parmis ceux qui ont une capote automatique.

Voilà la requete que j'envoi au serveur pour l'exemple précédent :
SELECT id_vehicule, id_marque, modele FROM cc_vehicule WHERE
id_toit='2' AND id_carbu='1' OR id_carbu='2' ORDER BY modele ;

Pouvez-vous m'aider à résoudre ce problème svp ?

2 réponses

Messages postés
34
Date d'inscription
mardi 28 décembre 2004
Statut
Membre
Dernière intervention
11 mai 2007

Scusez, je viens de trouver

Au lieu de  :
SELECT id_vehicule, id_marque, modele FROM cc_vehicule WHERE id_toit= '2' AND id_carbu='1' OR id_carbu='2' ORDER BY modele ;

Voilà la solution :
SELECT id_vehicule, id_marque, modele FROM cc_vehicule WHERE (id_toit ='2' AND id_carbu= '1' ) OR (id_toit ='2' AND id_carbu='2') ORDER BY modele ;
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
14
Salut,

Ou encore :

SELECT id_vehicule, id_marque, modele FROM cc_vehicule WHERE id_toit='2' AND (id_carbu='1' OR id_carbu='2') ORDER BY modele ;

Non ? Je trouve que c'est plus joli...