Recherche en fonction de checkbox cochées

Résolu
cs_PatX Messages postés 34 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 11 mai 2007 - 5 mai 2007 à 08:03
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 5 mai 2007 à 12:53
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

cs_PatX Messages postés 34 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 11 mai 2007
5 mai 2007 à 08:32
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 ;
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
5 mai 2007 à 12:53
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...
0
Rejoignez-nous