par
vincedjs » 10 mars 2006, 17:24
Bonjour,

voila j'ai 1 souci avec mon moteur de recherche. En effet, il n'est pas performant du tout, je ne sais pas si c'est un probleme de code, de requete ou autre.

En faite dans mon select (liste déroulante ) il m'affiche toute les fiches contenu de ma bdd, alors qu'il ne devrait afficher que celle correspondant a ma saisie et donc requete.
if(isset($search) && trim($search) != '')
{
$search = str_replace('+', ' ', trim($search));
$search = str_replace('\'', ' ', $search);
$search = str_replace(',', ' ', $search);
$search = str_replace(':', ' ', $search);
$tabsearch = explode(' ' , $search );
//on compte le nombre de mots
$nbsearch = count($tabsearch);
//on prépare la requête SQL.
if(!empty($tabsearch[0]))
{
$sql = "select *
from fiches
where numFiche ='".$tabsearch[0]."'
or nomFiche like %'".$tabsearch[0]."'%
or datecreaFiche ='".$tabsearch[0]."'
or loginF ='".$tabsearch[0]."'
or descriptifFiche like %'".$tabsearch[0]."'%
or resolutionFiche like %'".$tabsearch[0]."'%
or nomProjet ='".$search."'
or nbhresolution = '".$tabsearch[0]."'
or enseigne = '".$tabsearch[0]."'
or privee ='".$tabsearch[0]."'
or emailF = '".$tabsearch[0]."'";
}
// on boucle pour integrer tous les mots dans la requête
$sql = "select * from fiches where 1";
for ($i = 0; $i < $nb; $i++)
{
if(!empty($tabsearch[$i]))
{
$sql .= " AND ( numFiche='".$tabsearch[$i]."'
or nomFiche like %'".$tabsearch[$i]."'%
or datecreaFiche ='".$tabsearch[$i]."'
or loginF ='".$tabsearch[$i]."'
or descriptifFiche like %'".$tabsearch[$i]."'%
or resolutionFiche like %'".$tabsearch[$i]."'%
or nomProjet '".$search."'
or nbhresolution = '".$tabsearch[$i]."'
or enseigne = '".$tabsearch[$i]."'
or privee ='".$tabsearch[$i]."'
or emailF = '".$tabsearch[$i]."' )";
}
}
// on execute la requête SQL.
$result = mysql_query($sql);
if ($result)
{
if (mysql_num_rows($result) == 0)
{
// Si il n'y a pas de résultats
echo '<script language=javascript> alert ("Pas de résultat");</script>';
echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
exit;
}else{
echo "<select name='searchselection'>";
while($datafichiers = mysql_fetch_assoc($result))
{
echo '<option>'.$datafichiers['nomFiche'].'</option>';
echo '<br>';
}
echo'</select>';
}
}
mysql_free_result($result);
}else{
echo '<script language=javascript> alert ("Indiquez un mot clé pour effectuer une recherche");</script>';
echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
exit;
}
?>
Bonjour, :arrow: voila j'ai 1 souci avec mon moteur de recherche. En effet, il n'est pas performant du tout, je ne sais pas si c'est un probleme de code, de requete ou autre.
:arrow: En faite dans mon select (liste déroulante ) il m'affiche toute les fiches contenu de ma bdd, alors qu'il ne devrait afficher que celle correspondant a ma saisie et donc requete.
[php]if(isset($search) && trim($search) != '')
{
$search = str_replace('+', ' ', trim($search));
$search = str_replace('\'', ' ', $search);
$search = str_replace(',', ' ', $search);
$search = str_replace(':', ' ', $search);
$tabsearch = explode(' ' , $search );
//on compte le nombre de mots
$nbsearch = count($tabsearch);
//on prépare la requête SQL.
if(!empty($tabsearch[0]))
{
$sql = "select *
from fiches
where numFiche ='".$tabsearch[0]."'
or nomFiche like %'".$tabsearch[0]."'%
or datecreaFiche ='".$tabsearch[0]."'
or loginF ='".$tabsearch[0]."'
or descriptifFiche like %'".$tabsearch[0]."'%
or resolutionFiche like %'".$tabsearch[0]."'%
or nomProjet ='".$search."'
or nbhresolution = '".$tabsearch[0]."'
or enseigne = '".$tabsearch[0]."'
or privee ='".$tabsearch[0]."'
or emailF = '".$tabsearch[0]."'";
}
// on boucle pour integrer tous les mots dans la requête
$sql = "select * from fiches where 1";
for ($i = 0; $i < $nb; $i++)
{
if(!empty($tabsearch[$i]))
{
$sql .= " AND ( numFiche='".$tabsearch[$i]."'
or nomFiche like %'".$tabsearch[$i]."'%
or datecreaFiche ='".$tabsearch[$i]."'
or loginF ='".$tabsearch[$i]."'
or descriptifFiche like %'".$tabsearch[$i]."'%
or resolutionFiche like %'".$tabsearch[$i]."'%
or nomProjet '".$search."'
or nbhresolution = '".$tabsearch[$i]."'
or enseigne = '".$tabsearch[$i]."'
or privee ='".$tabsearch[$i]."'
or emailF = '".$tabsearch[$i]."' )";
}
}
// on execute la requête SQL.
$result = mysql_query($sql);
if ($result)
{
if (mysql_num_rows($result) == 0)
{
// Si il n'y a pas de résultats
echo '<script language=javascript> alert ("Pas de résultat");</script>';
echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
exit;
}else{
echo "<select name='searchselection'>";
while($datafichiers = mysql_fetch_assoc($result))
{
echo '<option>'.$datafichiers['nomFiche'].'</option>';
echo '<br>';
}
echo'</select>';
}
}
mysql_free_result($result);
}else{
echo '<script language=javascript> alert ("Indiquez un mot clé pour effectuer une recherche");</script>';
echo '<SCRIPT LANGUAGE="JavaScript">document.location.href="accueil.php" </SCRIPT>';
exit;
}
?>[/php]