script pour faire un moteur de recherche

aminagu Messages postés 47 Date d'inscription mercredi 11 avril 2012 Statut Membre Dernière intervention 26 août 2013 - 25 juil. 2011 à 16:39
aminagu Messages postés 47 Date d'inscription mercredi 11 avril 2012 Statut Membre Dernière intervention 26 août 2013 - 25 juil. 2011 à 18:44
bjr tout le monde
j etais entrain de chercher d un code source pour faire un moteur de recherche et j ai compris le principe mais j arrive pas a comprendre les lignes suivantes :


$mots = explode(' ',$rec);//En separre lexpression en mots cles
foreach($mots as $mot)
{
$req .= ' infos LIKE "%'.$mot.'%" OR';// sutout cette ligne;:(
}
$req .= ' 1=0';// et celle la :(
merci d avance :)

6 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
25 juil. 2011 à 16:54
Bonjour,

$req .= ' infos LIKE "%'.$mot.'%" OR'; est un racourcis pour $req=$req.' infos LIKE "%'.$mot.'%" OR';

Pour ce qui est de la requete, le LIKE signifie qui est a peu pres égal et les % banalisent plusieurs caractères.

WHERE infos LIKE "%mot%" signifie ou infos ressemble à "des caractères puis mot puis des autres caractères.

Par exemple aaamotaaa sera conservé.

Je ne sais pas si je suis très clair...
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
25 juil. 2011 à 17:00
bonjour

quand tu saisies des mots dans le champs de recherche généralement il sont séparés par un espace donc tu éclates la chaîne envoyé par les espaces

ex tu as tapé : musique classique guitare

ta chaîne va être stocké dans un tableau $mots
la fonction explode se charge du travail

puis chaque éléments du tableau serait concaténer dans une chaîne $req
les espaces seront alors des 'or' qui pourront permettre la recherche dans la base

' infos LIKE "%musique%" OR infos LIKE "%classique%" OR infos LIKE "%guitare%"





Bonne programmation !
0
aminagu Messages postés 47 Date d'inscription mercredi 11 avril 2012 Statut Membre Dernière intervention 26 août 2013
25 juil. 2011 à 17:27
et pour cette ligne ?
$req .= ' 1=0'

mercii beaucoup ;
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
25 juil. 2011 à 18:39
Salut,

Le mieux pour bien comprendre et de faire un echo de la string (la requête) générée

foreach($mots as $mot) {
$req .= ' infos LIKE "%'.$mot.'%" OR';// sutout cette ligne;:(
}

A ce point du script tu te retrouves avec une chaîne du genre:
$req = '[patati patata WHERE] infos LIKE "%machin%" OR "bidule" OR
Tu vois bien que cette requête n'est pas valide (le dernier OR suivi de rien)

On pourrait très bien supprimer ce dernier OR de différentes manières, mais l'auteur du script à décider de rendre la requête valide en ajoutant ça :
$req .= ' 1=0';

$req ressemble donc à :
$req = '[patati patata WHERE] infos LIKE "%machin%" OR "bidule" OR 1=0

Ce qui est valide; 1=0 ne serait simplement jamais vrai.

C'est selon moi une méthode à éviter, ... mais pourquoi pas


Cordialement,

Kohntark -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
25 juil. 2011 à 18:41
NB : j'ai oublié les % autour de bidule


Kohntark -
0
aminagu Messages postés 47 Date d'inscription mercredi 11 avril 2012 Statut Membre Dernière intervention 26 août 2013
25 juil. 2011 à 18:44
mercii infiniment :)
0
Rejoignez-nous