Moteur de recherche mais comment.... ?

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


rottman
WRInaute accro
WRInaute accro
 
Messages: 2097
Inscription: Mar Jan 06, 2004 20:11

Moteur de recherche mais comment.... ?

Message le Dim Fév 15, 2004 19:09

Bonjour,
je sui en train de créer un annuaire en php et j'aurais besoin d'un moteur de recherche mais je sais pas trop comment procédé, j'ai regardé la requète de scripts deja fait mais je comprend pas trop le principe...j'préfère pas mettre de code que je ne comprend pas...
Alors voici à quoi ça ressemble :



Code: Tout sélectionner
$sql = "SELECT title,url,description FROM annuaire WHERE description LIKE '%$q%' ORDER BY title ASC";
$req = mysql_query($sql) or die('Erreur SQL !'.mysql_error());


Cette requète marche bien si on recherche avec UN MOT mais comment faire si il y a un ou plsieurs mots ?

Je vois ce qu'il faut faire mais je ne vois pas comment !

à priporis il faut ajouter des OR à la variable $q ! ... mais comment ?

:lol:
:?:

merci pour ceux qui m'aiderons !

webrankinfo
 

Message le Dim Fév 15, 2004 19:14

Salut,
Le principe c'est de décomposer ta requête :

Code: Tout sélectionner
$sql = "SELECT title,url,description FROM annuaire WHERE description LIKE '%$q%' ";

$sql.= " or like '%$r%'";
$sql.=" or like '%$s%'";
$sql.=" or like '%$t%'";

$sql.=" ORDER BY title ASC";
$req = mysql_query($sql) or die('Erreur SQL !'.mysql_error());



bien sûr il faut décomposer avec un foreach pour obtenir une boucle qui prnedra en compte le nombre de termes exacts rentrés dans le input de saisie. Mais le principe est là.


George Abitbol
WRInaute accro
WRInaute accro
 
Messages: 1923
Inscription: Ven Juin 06, 2003 7:57

Message le Dim Fév 15, 2004 19:19

D'abord tu utilises explode() pour séparer ta phrase en mots, que tu récupèreras dans un tableau. Il te faudra ensuite faire une boucle sur ce tableau en concaténant ta requête à chaque itération.

Exemple :

Code: Tout sélectionner
<?php

//_____ $_GET['recherche'] est le contenu du champ de formulaire

// séparation en mots
$mots = explode(' ', $_GET['recherche']);

// debut de la requête
$sql = 'SELECT title,url,description FROM annuaire WHERE 0';

// construction de la requete avec les différents mots
foreach ($mots as $m) {
     $sql .= " OR (description LIKE '%".$m."%')";
}

// fin de la requête
$sql .= ' ORDER BY title';

// suite...
?>


Fred


rottman
WRInaute accro
WRInaute accro
 
Messages: 2097
Inscription: Mar Jan 06, 2004 20:11

Message le Dim Fév 15, 2004 19:19

arrf j'ai rien compris...je sais même pas c'est uoi un foreach :cry:

David@site
WRInaute impliqué
WRInaute impliqué
 
Messages: 382
Inscription: Mer Jan 14, 2004 22:36

Message le Dim Fév 15, 2004 20:22

for-each = pour chaque,
sort ton dico d'anglais :-)

pinoc
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 105
Inscription: Jeu Avr 10, 2003 12:48

Message le Lun Fév 16, 2004 9:53

George Abitbol a écrit:D'abord tu utilises explode() pour séparer ta phrase en mots, que tu récupèreras dans un tableau. Il te faudra ensuite faire une boucle sur ce tableau en concaténant ta requête à chaque itération.

Exemple :

Code: Tout sélectionner
<?php

//_____ $_GET['recherche'] est le contenu du champ de formulaire

// séparation en mots
$mots = explode(' ', $_GET['recherche']);

// debut de la requête
$sql = 'SELECT title,url,description FROM annuaire WHERE 0';

// construction de la requete avec les différents mots
foreach ($mots as $m) {
     $sql .= " OR (description LIKE '%".$m."%')";
}

// fin de la requête
$sql .= ' ORDER BY title';

// suite...
?>


Fred


Ca, c'est un beau code, simple et clair comme je les aime.
Bien joué Fred

FightTheWar
Nouveau WRInaute
 
Messages: 21
Inscription: Lun Oct 06, 2003 11:34

Message le Lun Fév 16, 2004 10:06

Oui c'est un bel exemple.

Manque plus qu'à traiter les caractères spéciaux pour ne pas gener la requête et gérer les approximations pour avoir un outil de recherche performant.

Deux bons codes exemples :
http://www.nexen.net/scripts/details.ph ... str#substr
et
http://www.nexen.net/scripts/details.ph ... rray#array

Le deuxième marche vraiment bien.


Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google SearchMash

  • Analyse du positionnement
    AgentWebRanking est un logiciel professionnel qui permet d'analyser le positionnement d'un ou plusieurs sites dans plus de 300 moteurs de recherche dans le monde. Vous pouvez ainsi analyser les performances du référencement pour de nombreux mots-clés.
  • Transformer des simples citations de votre site en liens
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités