Extraction d'information en php

jakol -  
bucheron Messages postés 62 Date d'inscription   Statut Membre Dernière intervention   -
bonjour, je suis entrain de faire une appli en php mysql
et j'ai crée un formulaire de recherche en fonction de ce que veux un client
ex:
1)quelle marque de voiture vous voulez?
2) quel type de voiture de cette marque?
3)quelle année de construction?


ça marche quand je mets tous les critères
et je peux récupéré mes données grâce à un fichier php:
select marque, type, annee from voiture where (voiture.marque like '$marque%') and (voiture.type like '$type) and (voiture.annee like '$annee%');

PAR CONTRE...
si je ne suis intéressé que par la marque et que par l'année
Je vais bien sur demander ces infos dans mon formulaire et omettre le type....comme je n'ai aucune information, je dois mettre obligatoirement le type.....

si vous avez une idée, ce serait sympa de m'aider
merci encore
A+

2 réponses

Utilisateur anonyme
 
Ben c'est simple s'il manque un critère tu ne le met pas lors de la requête. Donc il faut en tout 2^3 (3 choix remplis ou non) = 8 requêtes différentes.
select marque, type, annee from voiture where (voiture.marque like '$marque%') and (voiture.type like '$type); 
select marque, type, annee from voiture where (voiture.marque like '$marque%') and (voiture.annee like '$annee%'); 
select marque, type, annee from voiture where (voiture.type like '$type) and (voiture.annee like '$annee%'); 
...
Et faut faire aussi le cas ou l'utilisateur ne remplit qu'un critère.


------------------------------------------------------------
<Mode Pub> http://www.poof65.com </Mode Pub>
0
bucheron Messages postés 62 Date d'inscription   Statut Membre Dernière intervention   2
 
ou, plus simple, tu vérifies si tes variables contiennent qqch, et si ce n'est pas le cas, tu leur affectes toi-même la valeur "" (rien).

Et ta requête _devrait_ marcher (pô tester ...)

PS: manque un
%'
à la fin de
(voiture.type like '$type)
(avant la parenthèse fermante), mais je suppose que c'est une coquille ...
0