cs_loupile
Messages postés95Date d'inscriptiondimanche 8 janvier 2006StatutMembreDernière intervention 7 avril 2011
-
18 déc. 2006 à 12:40
cs_loupile
Messages postés95Date d'inscriptiondimanche 8 janvier 2006StatutMembreDerniè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 ...
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 19 déc. 2006 à 13:29
Euuuuh... excusez moi de vous le dire mais vous hallucinez avec vos boucles là... si j'entre 30 mots pour une recherche vous allez faire 30 requetes SQL... .. ?
Qui plus est vous n'échappez pas les mots clés... d'une part ça risque de planter d'autre part vous risquez de vous retrouver avec une belle SQL injection... et il y a une faille XSS au niveau de l'affichage des résultats... .. .
$words[0] = mysql_real_escape_string($words[0]);
$nom = 'nom LIKE \'%'.$words[0].'%\'';
$desc = 'description LIKE \'%'.$words[0].'%\'';
$keyword = 'keyword LIKE \'%'.$words[0].'%\'';
$i = 0;
while(isset($words[++$i]))
{
$words[$i] = mysql_real_escape_string($words[$i]);
$nom .= ' OR nom LIKE \'%'.$words[$i].'%\'';
$desc .= ' OR description LIKE \'%'.$words[$i].'%\'';
$keyword .= ' OR keyword LIKE \'%'.$words[$i].'%\'';
}
$like = ' AND ('.$nom.' OR '.$desc.' OR '.$keyword.')';
}
$result = mysql_query('SELECT * FROM flux WHERE ONAIR=\'OUI\''.$like.' ORDER BY UPDATED DESC LIMIT '.(int)$debut.','.(int)$limit);
if (($nrows = mysql_num_rows($result)) < 1)
echo '
Nous n\'avons aucun résultat pour votre recherche avec '.htmlentities($keys).'
';
else
{
echo '
Nous avons '.$nrows.' résulats pour votre recherche avec '.htmlentities($keys).'
';
// affichage des résultats
}
C'est loin d'être parfait mais c'est déja mieux... .. .
cs_loupile
Messages postés95Date d'inscriptiondimanche 8 janvier 2006StatutMembreDernière intervention 7 avril 2011 29 mars 2007 à 10:48
Bonjour,
je me suis inspiré ce que proposais kankrelune pour mon moteur, mais voià ca marche super avec un seul mot, mais dès qu'il y en a 3 ca ne fonctionne plus ...
je vous donne le code ... j'ai fais mes essais avec bail (pour un mot) et signer un bail pour plusieurs ...
merci de votre précieuse aide ...