recherche par mos clés

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : recherche par mos clés

par Patriboom » 26 juil. 2008, 20:20

Je comprends donc que tu veux faire une recherche par mot clef et non un tri par mot clef.

Si je reprends ton code, tu fais un tri par mot clef.
Voici qui devrait t'aider à faire une recherche comme je comprends que tu le veux:
$db = mysql_select_db($database_stock, $stock);
$motcle_annuaire =  (isset($_POST['motcle'])) ? $_POST['motcle'] : $_GET['motcle']; 

//On separe les mots clefs
$mots_cherches = explode(",", $motcle_annuaire);

//Construisons la requête: 
$requete  = "SELECT * FROM produits ";
$requete .= "WHERE produits.rubdetail2 LIKE '".$mots[0]."%' "
if (count($mots) > 1) {
    for ($x=1; $x<count($mots);$x++) {
        $requete .= " OR  produits.rubdetail2 LIKE '".$mots[$x]."%' "
    }
}
$query_annuaire = sprintf($requete." ORDER BY produits.titre", $motcle_annuaire);
$query_limit_annuaire = sprintf("%s LIMIT %d, %d", $query_annuaire, $startRow_annuaire, $maxRows_annuaire);
$annuaire = mysql_query($query_limit_annuaire, $stock) or die(mysql_error());
$row_annuaire = mysql_fetch_assoc($annuaire);

J'aurais pas dû tout faire, mais c'était plus facile.
Essaie ça et donne-nous des nouvelles.

par Chile » 26 juil. 2008, 18:47

merci pour ta réponse Patriboom,
disons que mon code fonctionne pas trop mal, la forme du code doit etre bonne !? sauf si je tape plusieurs mots clés...
exemple : j'ai insérer dans la colonne a sruter pour un produit : pomme, rouge
si je tape pomme dans mon formulaire de recherche, ça marche
si je tape pomme rouge, il trouve rien... :(
désolé si j'ai pas ajouté la structure...je le ferai si le l'exemple ci dessus n'aide pas... :?

par Patriboom » 26 juil. 2008, 18:31

Dans ton code, les usagers ne font que trier les éléments trouvés dans l'ordre des mots clefs choisis (ORDER BY motclef).
Est-ce bien cela que tu veux?

Il me semble comprendre que tu voudrais que les usagers puissent chercher dans la banque de données en fonction des mots clefs soumis (WHERE champ_de_recherche LIKE motcle)

Il faudrait préciser ce point avant d'aller plus loin.

Mettre la structure de ta table ne serait pas superflu, quelques éléments de son contenu aiderait aussi.

recherche par mos clés

par Chile » 26 juil. 2008, 16:15

Bonjour à tous,
Je viens de me rendre d'un problème sur mon moteur de recherche interne.
J'ai une base de produit avec une colonne 'rubdetail2'. lorsque j'effectue une recherche avec une requête scrtant cette colonne, ça me donne des résultats seulement si je tape dans mon formulaire de recherche un des mots clés ! si je combine plusieurs mots clés, le résultats est nul !
J'ai rentré les mots clés dans cette colonne en les séparant avec une virgule.
et voici la ligne principale de ma requete
$motcle_annuaire =  (isset($_POST['motcle'])) ? $_POST['motcle'] : $_GET['motcle']; 

mysql_select_db($database_stock, $stock);
$query_annuaire = sprintf("SELECT * FROM produits WHERE produits.rubdetail2  LIKE '%%%s%%' ORDER BY produits.titre", $motcle_annuaire);
$query_limit_annuaire = sprintf("%s LIMIT %d, %d", $query_annuaire, $startRow_annuaire, $maxRows_annuaire);
$annuaire = mysql_query($query_limit_annuaire, $stock) or die(mysql_error());
$row_annuaire = mysql_fetch_assoc($annuaire);
merci si qlq peut m'aider