MOTEUR DE RECHERCHE

cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011 - 18 déc. 2006 à 12:40
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011 - 29 mars 2007 à 10:48
bonjour,

j'ai fais un moteur de recherche, oui mais voila il ne fonctionne que sur une chaine ... normale  je recupère la valeur de mon champ de recherche dans $keys ...
comment ensuite sir $keys contient plusieurs mots, lui demander de faire la recherche sur tous les mots ... je suppose qu'il faut que je découpe la chaine ... mais comment faire pour lui dire de choisir chaque élément de la chaine et de refaire la requête jusqu'au dernier mot de la chaine ...

merci de votre précieuse aide

22 réponses

younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 14:06
si j ai bien compris,
si quelqu'un tape toute une chaine, tu fais la recherche sur cette chaine
(select champ from table where champ like '%$key%').

mais si tu veux faire sur plusieurs champs, tu n as qu'a faire la recherche sur plusieurs critères, c a d :
Nom :  zone de recherche nom,
Ville : zone de recherche ville,
....
et apres :
(select champ from table where nom like '%$nom%' and ville like '%$ville%')..
c ça ce que tu veux?
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
18 déc. 2006 à 14:28
nom en fait mon problème c'est que si il y a plusieurs mots dans la recherche ... il va chercher la chaine à l'identique et non pas des chaines qui contiennent chacun des mots.

ademettons que je cherche : recettes de cuisine legumes

je voudrais qu'il sortent tous les articles qui contiennent recettes ou cuisine ou legumes
et non pas unimquement les articles qui contiennent "recette de cuisine legumes"
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 14:43
dans ce cas tu peux faure un explode :
dans :   http://fr.php.net/explode  ,
il y a l exemple :

// Exemple 1
$pizza  = "pièce1 pièce2 pièce3 pièce4 pièce5 pièce6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // pièce1
echo $pieces[1]; // pièce2

une idée parmis d autre ! :

(select champ from article where champs like '%$pieces[0]%' or champs like '%$pieces[1]%'  champs like '%$pieces[2]%' ...) ..
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
18 déc. 2006 à 14:52
ca ca m'a l'air super et comme je fais si je ne connais pas le nombre de pieces ?
:-)

je sais je suis un boulet .. :-)

merci de ton aide en tout cas
0

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

Posez votre question
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 14:56
t as la fonction : count($pieces);
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
18 déc. 2006 à 15:01
et dans la fonction je peux mettre un truc du genre foreach ? 

count($pieces) va me donner deux .... alors il faut qu'il refasse deux fois la requête non ?   comment dans la requete sql lui dire  champs like '%$pieces[...]%'  pour chaque pieces ?
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 15:05
juste une idée : je dis pas la meilleur mais pour depanner !
for (i=0;i<count($pieces);i++)

(select champ from article where champs like '%$pieces[i]%' )
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
18 déc. 2006 à 15:16
arf je galère ... voilà mon code ... mais je n'arrive pas a trouver mon erreur

/* RECUPERATION DES VARIABLES POST */

$keys= trim($keys);
$pieces = explode(" ", $keys);

/* CONNECTION A LA BASE DE DONNEES */

$connect=@mysql_connect($db_chemin,$db_user,$db_pass) or die ('impossible de se connecter a la base de données !');
$select_db=@mysql_select_db($db_name) or die ('impossible de trouver la base de données !');

/* RECHERCHE DANS LA BASE DE DONNES */
for (i=0;i<count($pieces);i++)
(SELECT * FROM flux WHERE ONAIR='OUI' AND NOM LIKE '%$pieces[i]%' or description LIKE '%$pieces[i]%' or KEYWORDS LIKE '%$pieces[i]%' ORDER BY UPDATED DESC)
$sql2=$sql;
$sql.=" Limit $debut,$limit ";
if($result = mysql_query($sql)) {
$result2 = mysql_query($sql2);
$nrows= mysql_num_rows($result2);
if ( $nrows ==0) {
echo 'Nous n\'avons aucun résultat pour votre recherche avec '.$keys.'

';
}
if ( $nrows > 0) {
echo 'Nous avons '.$nrows.' résulats pour votre recherche avec '.$keys.'

';
echo '<table width ="100%" border="0" cellpadding="0" cellspacing="0"><tr> <td height="12" colspan="2" valign="top"></td></tr><table width="445" class="tablocadredroite" ><center>';
}
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 15:22
tu oublies $sql =(select ..)
for (i=0;i<count($pieces);i++)
$sql=(SELECT * FROM flux WHERE ONAIR='OUI' AND NOM LIKE '%$pieces[i]%' or description LIKE '%$pieces[i]%' or KEYWORDS LIKE '%$pieces[i]%' ORDER BY UPDATED DESC);
$sql.=" Limit $debut,$limit ";
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 15:24
Correction :

tu oublies $sql =(select ..)
$sql='';
for (i=0;i<count($pieces);i++)
$sql .=(SELECT * FROM flux WHERE ONAIR='OUI' AND NOM LIKE '%$pieces[i]%' or description LIKE '%$pieces[i]%' or KEYWORDS LIKE '%$pieces[i]%' ORDER BY UPDATED DESC);
$sql.=" Limit $debut,$limit ";
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 15:32
<?php


$keys= trim($keys);
$pieces = explode(" ", $keys);




/* CONNECTION A LA BASE DE DONNEES */



[mailto:$connect=@mysql_connect($db_chemin,$db_user,$db_pass $connect=@mysql_connect($db_chemin,$db_user,$db_pass]) or die ('impossible de se connecter a la base de données !');
[mailto:$select_db=@mysql_select_db($db_name $select_db=@mysql_select_db($db_name]) or die ('impossible de trouver la base de données !');


/* RECHERCHE DANS LA BASE DE DONNES */
for (i=0;i<count($pieces);i++)
{
$req= ("SELECT * FROM flux WHERE ONAIR='OUI' AND NOM LIKE '%".$pieces[i]."%' or description LIKE '%".$pieces[i]."%' or KEYWORDS LIKE '%".$pieces[i]%".' ORDER BY UPDATED DESC");


if( mysql_num_rows($req)>0)
{
while ($array=mysql_fetch_array($req))


echo "nom :".$array['nom']."description : ".$array['description']."keywords : ".$array['keywords']."

";
}


else
echo 'Nous n\'avons aucun résultat pour votre recherche avec '.$pieces[i].'

';
}
?>
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
18 déc. 2006 à 15:32
je suis vraiment mauvais ... quand j'envoie ca la page beug ... :-(

/* RECUPERATION DES VARIABLES POST */

$keys= trim($keys);
$pieces=explode(" ", $keys);

/* CONNECTION A LA BASE DE DONNEES */

$connect=@mysql_connect($db_chemin,$db_user,$db_pass) or die ('impossible de se connecter a la base de données !');
$select_db=@mysql_select_db($db_name) or die ('impossible de trouver la base de données !');

/* RECHERCHE DANS LA BASE DE DONNES */
for (i=0;i<count($pieces);i++)
$sql=(SELECT * FROM flux WHERE ONAIR='OUI' AND NOM LIKE '%$pieces[i]%' or description LIKE '%$pieces[i]%' or KEYWORDS LIKE '%$pieces[i]%' ORDER BY UPDATED DESC);
$sql2=$sql;
$sql.=" Limit $debut,$limit ";
if($result = mysql_query($sql)) {
$result2 = mysql_query($sql2);
$nrows= mysql_num_rows($result2);
if ( $nrows ==0) {
echo 'Nous n\'avons aucun résultat pour votre recherche avec '.$keys.'

';
}
if ( $nrows > 0) {
echo 'Nous avons '.$nrows.' résulats pour votre recherche avec '.$keys.'

';
echo '<table width ="100%" border="0" cellpadding="0" cellspacing="0"><tr> <td height="12" colspan="2" valign="top"></td></tr><table width="445" class="tablocadredroite" ><center>';
}
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
18 déc. 2006 à 15:39
arf ca marche vraiment pas ...
j'ai mis tout mon code là pour que tu puisses avoir une vision globale du truc ... je comprends vraiment pas

if (!isset($debut)) $debut = 0;
$limit=6;

/* RECUPERATION DES VARIABLES POST */

$keys= trim($keys);
$pieces=explode(" ", $keys);

/* CONNECTION A LA BASE DE DONNEES */

$connect=@mysql_connect($db_chemin,$db_user,$db_pass) or die ('impossible de se connecter a la base de données !');
$select_db=@mysql_select_db($db_name) or die ('impossible de trouver la base de données !');

/* RECHERCHE DANS LA BASE DE DONNES */
for (i=0;i<count($pieces);i++)
{
$sql=("SELECT * FROM flux WHERE ONAIR='OUI' AND NOM LIKE '%$pieces[i]%' or description LIKE '%$pieces[i]%' or KEYWORDS LIKE '%$pieces[i]%' ORDER BY UPDATED DESC");
}
$sql2=$sql;
$sql.=" Limit $debut,$limit ";
if($result = mysql_query($sql)) {
$result2 = mysql_query($sql2);
$nrows= mysql_num_rows($result2);
if ( $nrows ==0) {
echo 'Nous n\'avons aucun résultat pour votre recherche avec '.$keys.'

';
}
if ( $nrows > 0) {
echo 'Nous avons '.$nrows.' résulats pour votre recherche avec '.$keys.'

';
echo ', <table width =\"445\" class=\"tablocadredroite\" ><center>';
}
    while($ligne = mysql_fetch_object($result)) {
        $Nomflux= $ligne->NOM;
        $urlimage=$ligne->URLIMG;
        $description=$ligne->description;
        $idflux=$ligne->ID;
        $url=$ligne->URLSON;
        $maj=$ligne->UPDATED;

$maj2=date(\"H\h i\",strtotime($maj));
 $last2=strrchr($url,\".\");
 $last=substr($last2, 0, 4);
 $prelast=substr_count ($url , 'http://stat3.cybermonitor.com');
 
 if ($prelast > 0) {
 
$url=strrchr($url,\"http\");
}
echo '
----
, <table >----, <table background="images/fdvideo.gif" width="325">'.$Nomflux.', à '.$maj2.'
</td></tr>
<tr><td>'.$description.', ';
if ($last==\".mp4\" or $last==\".m4v\" or $last==\".mov\") {
echo '';
?>
", "player", "directories=no, location=no, menubar=no, resizable=no, scrollbars=yes, status=yes, toolbar=no, width=381, height=414"))'>
<?
}
if ($last ==".mp3" or $last==".m4a" ) {
echo ', <object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"
 codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,47,0\"
 width=\"20\" height=\"20\" id=\"button_1\">
                       
                       
                       
                       
                      </object>';
}
echo '</td>
</td></table></td></tr>';

}
echo'</table></center>';
}
$nombre=ceil($nrows/$limit);
echo '<center>

';
        if($debut>0)
            {
            echo "<<  ";   
            }           
       
        if ($nombre>1)
            {

            for($i=1; $i<=$nombre; $i++)
                {
                echo " ".$i." ";
                }
            }
        if(($debut+$limit)<$nrows)
            {
            echo ">></center>";
            }
           
echo '

';
include ("blank.php");
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 15:42
essaye mon code :  " le 18/12/2006 15:32:17 " le 2 eme de cette page,
et repond moi
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
18 déc. 2006 à 15:46
j'ai essayé ton code mais comment je gère  mon problème d'affichage qui était géré par $sql2=$slq dans mon code ?

merci de ta patience et de ton aide
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 16:11
J'arrive pas a saisir l'utilité de $sql2,
et si mon code ça marche, tant mieux, modifie le un peu si u veux, et tu auras un vrai moteur de recherche !
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 16:11
J'arrive pas a saisir l'utilité de $sql2,
et si mon code ça marche, tant mieux, modifie le un peu si u veux, et tu auras un vrai moteur de recherche !
0
cs_loupile Messages postés 95 Date d'inscription dimanche 8 janvier 2006 Statut Membre Dernière intervention 7 avril 2011
18 déc. 2006 à 16:20
mais avec ton code je ne sais pas comment n'afficher que 5 résultats sur une seule page ....
alors que $sql2 servait a ca
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 16:30
tu peux faire :
 $j=0;

for (i=0;i<count($pieces);i++)
{

$req= ("SELECT * FROM flux WHERE ONAIR='OUI' AND NOM LIKE '%".$pieces[i]."%' or description LIKE '%".$pieces[i]."%' or KEYWORDS LIKE '%".$pieces[i]%".' ORDER BY UPDATED DESC");

j++;
if (j<4)
{
if( mysql_num_rows($req)>0)
{
while ($array=mysql_fetch_array($req))

echo "nom :".$array['nom']."description : ".$array['description']."keywords : ".$array['keywords']."

";
}

else
echo 'Nous n\'avons aucun résultat pour votre recherche avec '.$pieces[i].'

';
}
}
else echo 'on affiche 5 resultat !';
?>
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
18 déc. 2006 à 16:32
dsl, tu fais :
if (mysql_fetch_row($req)>0)
{
$j++;
.....
}
0
Rejoignez-nous