cyse
Messages postés18Date d'inscriptionmardi 19 octobre 2004StatutMembreDernière intervention10 décembre 2008
-
3 déc. 2007 à 18:47
eso_1er
Messages postés1Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention 2 mars 2008
-
2 mars 2008 à 10:58
Bonsoir,
J'essai de faire un moteur de recherche en interne pour un site.
Je ne suis pas super doué en php encore et je n'arrive pas à cerner quelquechose.
J'ai reussi à partir de différentes sources et modifié à ma guise à faire des recherches depuis une base, affiché les resultats, compter le nombre de caractères dans le ou les mots clés mais par contre je n'arrive pas à faire une recherche propre sur plusieurs mots.
Par exemple, si je cherche le mot-clé "voiture" j'ai tout ce qui contient voiture. mais si je recherche "voiture de location", ca recherche et affiche tout ce qui concerne "voiture", "de" et "location" ! Et non la phrase entière !
Avez-vous une solution ?
Merci par avance.
<form method=\"post\" action=\"recherche.php\">
,
,
</form>
<?
//connexion a la base
require 'connect.inc.php';
//recup du resultat formulaire
if(isset($_POST['search'])) $search=$_POST['search'];
else $search="";
//variable pour la longueur de la recherche
$len_search=strlen($search);
// si la recherche est vide on abandonne la requete
if(empty($search))
{
echo 'tapez une recherche';
exit();
}
// si la recherche est inferieur a x on abandonne la recherche
if($len_search<3)
{
echo 'recherche inferieur a 3';
exit();
}
// si les conditions sont remplies on execute la requete
else
{
$Recherche= strtolower($search);
$MaTable="blagues";
$Requete="SELECT * FROM $MaTable WHERE ";
$MotClef = explode(" ", $Recherche);
$NbMotClef = count($MotClef);
$Requete.= "(";
$RequeteTri=mysql_query("SHOW COLUMNS From $MaTable");
$I="0";
while ($Row = mysql_fetch_array($RequeteTri))
{
$Type = eregi_replace("[^a-z]", "", $Row['Type']);
$I2="0";
if((($Type=="varchar")||($Type=="text")||($Type=="date")))
{
if($I!="0") { $Requete.= " OR "; }
reset($MotClef);
foreach($MotClef as $V)
{
$I2++;
$Requete.= $Row['Field'] . " LIKE '%$V%'";
if($I2!=$NbMotClef) { $Requete.= " OR "; }
}
$I++;
}
}
mysql_free_result($RequeteTri);
$Requete.= ")";
$req = mysql_query($Requete) or die('Erreur SQL !
'.$Requete.'
'.mysql_error());
echo 'recherche de '.$search.'';
$count = mysql_num_rows($req);
echo 'il y a '.$count.' resultat(s)';
while ($data = mysql_fetch_array($req)) {
echo nl2br(''.$data['joke'].'
');
}
}
?>
eso_1er
Messages postés1Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention 2 mars 2008 2 mars 2008 à 10:58
merci !
$querybase
= mysql_query
( "SELECT * FROM base WHERE MATCH(option3_contenu,option4_contenu,option5_contenu) AGAINST ('%
$q%' IN BOOLEAN MODE) AND pseudo_hpcontenu ="$compte"");