evasion Posté 2 Septembre 2004 Posté 2 Septembre 2004 Bonjour, Voila je rencontre actuellement un petit problème pour afficher les résultats d'une recherche. Je vais essayer de l'expliquer au mieux J'aimerais que quand j'effectue une recherche sur ma table tous les mots (3 requêtes) de la recherche ne soient pas obligatoire. Je vous le montre par l'exemple ca sera plus simple. Quand j'ai une url comme celle-ci : -http://auto-evasion.com/moutyk/annonces.php?marque=Fiat&modele=Panda&cpt=58 tout fonctionne parfaitement les trois champs LIKE sont renseignés par contre si on omet de mettre une seule variable rien ne s'affiche meme pas les résultats qui pourraient correspondre on va dire que les variables "marque" et "modele" sont obligatoire mais pas la variable "cpt". A savoir que d'autres variables sont à venir Existe il une méthode simple pour faire ce que je souhaite ? J'aimerais juste un petit indice ! Je suis débutant en php et je ne demande qu'a le faire moi même que je comprenne pour la suite je vous laisse la portion de code au cas ou ! Le code qui compte le nombre d'enregistrement pour aficher ou non les pages suivantes. //========================================= // requête SQL qui compte le nombre total // d'enregistrements dans la table. //========================================= $select = "SELECT count(id) FROM occasion_article WHERE marque='$marque' AND modele='$modele' AND codepostal='$cpt'"; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_row($result); $total = $row[0]; Ici le code qui permet de récupérer les infos et les afficher. //========================================= // requête SQL qui ne prend que le nombre // d'enregistrement necessaire à l'affichage. //========================================= $select = "SELECT * FROM occasion_article WHERE marque LIKE '$marque' AND modele LIKE '$modele' AND codepostal LIKE '$cpt' limit $limite,$nombre"; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); Merci de votre aide !!
Guest Ldo Posté 2 Septembre 2004 Posté 2 Septembre 2004 il faut que tu construise la requete en fonction des paramètres envoyés genre : $select = "SELECT * FROM occasion_article WHERE"; if(!empty($GET['modele'])) $select .= "modele = '".$GET['modele']."'"; if(!empty($GET['annee'])) $select .= "annee = '".$GET['annee']."'"; ce code ne marche pas (manque les AND), mais tu as compris le principe je pense
Anonymus Posté 2 Septembre 2004 Posté 2 Septembre 2004 Pour compléter la réponse de Ludo, j'ajouterais qu'il te faut les OR à la place des AND, et qu'il ne faut pas que tu oublies les espaces entre les $select .= , ce qui est source facile d'erreurs (meme pour les plus avertis )
evasion Posté 3 Septembre 2004 Auteur Posté 3 Septembre 2004 Salut, Merci pour votre aide ! En fait j'utilise une autre méthode basé sur le meme principe, celle-ci je l'ai pas bien comprise à vrai dire. Je vous poste toujours ce que j'ai mis à la place, ca pourrat peut etre aider certains! if($cpt=="") $select = "SELECT count(id) FROM tables WHERE marque='$marque' AND modele='$modele'"; else $select = "SELECT count(id) FROM tables WHERE marque='$marque' AND modele='$modele' AND codepostal='$cpt'"; Merci encore !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant