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 ...
younes371
Messages postés502Date d'inscriptionmercredi 29 décembre 2004StatutMembreDernière intervention20 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?
cs_loupile
Messages postés95Date d'inscriptiondimanche 8 janvier 2006StatutMembreDerniè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"
cs_loupile
Messages postés95Date d'inscriptiondimanche 8 janvier 2006StatutMembreDerniè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 ?
$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.'
younes371
Messages postés502Date d'inscriptionmercredi 29 décembre 2004StatutMembreDernière intervention20 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 ";
younes371
Messages postés502Date d'inscriptionmercredi 29 décembre 2004StatutMembreDernière intervention20 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 ";
[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))
cs_loupile
Messages postés95Date d'inscriptiondimanche 8 janvier 2006StatutMembreDerniè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.'
cs_loupile
Messages postés95Date d'inscriptiondimanche 8 janvier 2006StatutMembreDerniè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.'
younes371
Messages postés502Date d'inscriptionmercredi 29 décembre 2004StatutMembreDernière intervention20 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))