Moteur de recherche mais comment.... ?

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


rottman
WRInaute passionné
WRInaute passionné
 
Messages: 2121
Inscription: 6 Jan 2004

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 passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

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 passionné
WRInaute passionné
 
Messages: 2121
Inscription: 6 Jan 2004

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 occasionnel
WRInaute occasionnel
 
Messages: 382
Inscription: 14 Jan 2004

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

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

pinoc
WRInaute discret
WRInaute discret
 
Messages: 105
Inscription: 10 Avr 2003

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
Nouveau WRInaute
 
Messages: 21
Inscription: 6 Oct 2003

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.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

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 les experts Google Analytics de Ranking Metrics.

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