Aller au contenu

Problème avec resultats moteur de recherche


Sujets conseillés

Posté

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 !!

Posté

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 ;)

Posté

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 :lol: )

Posté

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 !

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...