Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
936 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP]Problème avec fonction de recherche

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP]Problème avec fonction de recherche

n°229446
fox25
con prend pas
Posté le 17-10-2002 à 15:00:34  profilanswer
 

Un copain a fait cette fonction en PHP (que j'ai modifier)
 
cherche mot dans table topics_re dans le champs re_text
 
 

Code :
  1. function search ($keywords = "" )
  2.     {
  3. include('../include/constantes.inc.php');
  4.         if($keywords == "*" )
  5. {
  6.         $sql = "SELECT * FROM topics_re";
  7. }
  8. else
  9. {
  10.          $keywords = trim(urldecode($keywords)); //trim enlève les espaces
  11.          $keywords = ereg_replace("([    ]+)"," ",$keywords);
  12.          if(!ereg(" ",$keywords))
  13.          {
  14.               $KeyWords[0] = "$keywords";
  15.          } else {
  16.               $KeyWords = explode(" ",$keywords);
  17.          }
  18.          $sql = "SELECT * FROM topics_re";
  19.          $count = count($KeyWords);
  20.          if( $count == 1)
  21.          {
  22.               $single = $KeyWords[0];
  23.               $sql .= " where (re_text LIKE '%$single%')  ORDER BY topic_id";
  24.          } else {
  25.               $ticker = 0;
  26.               while ( list ($key,$word) = each ($KeyWords) )
  27.               {
  28.                   $ticker++;
  29.                   if(!empty($word))
  30.                   {
  31.                        if($ticker != $count)
  32.                        {
  33.                            $sql .= " ( (re_text LIKE '%$word%'))";
  34.                        } else {
  35.                            $sql .= " ( (re_text LIKE '%$word%'))";
  36.                        }
  37.                   }
  38.               }
  39.              $sql .= " ) ORDER BY topic_id";
  40.          }
  41.         }
  42. $result=mysql_query($sql);
  43.         return $results;
  44.     }


 
Pour appeller la fonction je fais:
 

Code :
  1. $tmp=search($keywords);
  2. $tmp2=mysql_query($tmp);
  3. while($query=mysql_fetch_row($tmp2))
  4. { ...
  5. }


 
Mais il y a toujours un message d'erreur (Warning: Supplied argument is not a valid MySQL result resource in search.php on line 53) pour cette ligne

Code :
  1. while($query=mysql_fetch_row($tmp2))


 
 
Quelqu'un voit où est l'erreur car on trouve pas.  
 
Si quelqu'un à  une fonction de recherche qui va bien, je serais heureux de l'utiliser.
 
Merci  :hello:  

mood
Publicité
Posté le 17-10-2002 à 15:00:34  profilanswer
 

n°229452
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 17-10-2002 à 15:10:07  profilanswer
 

Bin teste si ta variable $tmp2 n'est pas null, déjà. Pis fais aussi un truc genre mysql_error($tmp2), parce que bon, le Warning PHP signifie clairement que ta requête a foiré.
Puis un conseil aussi : quand tu inclues ta variable $word, vérifie qu'elle ne contient pas de ' ou de % ou je ne sais quel autre caractère réservé de MySQL, sinon ça va te faire bizarre ;)
 
Ah et puis aussi, dans ce genre de cas, un gros debug s'impose : affiche toutes les traces que tu peux, fais des echo $tmp pour voir si ta query est correcte, des trucs comme ça. Ca aide :)
 
Et pis mysql_fetch_array() roulèze ; lu dans la doc PHP de Nexen.net : "Il est important de souligner que mysql_fetch_array() N'est PAS plus lente que mysql_fetch_row(), tandis qu'elle ajoute un confort d'utilisation notable."
 
Ouala.


Message édité par Taiche le 17-10-2002 à 15:13:50

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°229467
fox25
con prend pas
Posté le 17-10-2002 à 15:25:18  profilanswer
 

Taiche a écrit a écrit :

Bin teste si ta variable $tmp2 n'est pas null, déjà. Pis fais aussi un truc genre mysql_error($tmp2), parce que bon, le Warning PHP signifie clairement que ta requête a foiré.
Puis un conseil aussi : quand tu inclues ta variable $word, vérifie qu'elle ne contient pas de ' ou de % ou je ne sais quel autre caractère réservé de MySQL, sinon ça va te faire bizarre ;)
 
Ah et puis aussi, dans ce genre de cas, un gros debug s'impose : affiche toutes les traces que tu peux, fais des echo $tmp pour voir si ta query est correcte, des trucs comme ça. Ca aide :)
 
Et pis mysql_fetch_array() roulèze ; lu dans la doc PHP de Nexen.net : "Il est important de souligner que mysql_fetch_array() N'est PAS plus lente que mysql_fetch_row(), tandis qu'elle ajoute un confort d'utilisation notable."
 
Ouala.




 
 :hello:  
Merci pour ta réponse, $tmp2 et bien vide, mais pourquoi?

n°229471
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 17-10-2002 à 15:28:08  profilanswer
 

Citation :

Merci pour ta réponse, $tmp2 et bien vide, mais pourquoi?


Bin dans ce cas, c'est que ta requête a planté. Un echo "erreur MySQL : ".mysql_error() devrait t'aider à débugger.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°229477
fox25
con prend pas
Posté le 17-10-2002 à 15:34:28  profilanswer
 

Taiche a écrit a écrit :

Citation :

Merci pour ta réponse, $tmp2 et bien vide, mais pourquoi?


Bin dans ce cas, c'est que ta requête a planté. Un echo "erreur MySQL : ".mysql_error() devrait t'aider à débugger.




 
Il y a l'erreur suivant erreur MySQL : Query was empty

n°229482
fox25
con prend pas
Posté le 17-10-2002 à 15:37:27  profilanswer
 

Si je fait :
 
Print $sql;
 
ça me sort ça  
 
SELECT * FROM topics_re where (re_text LIKE '%php%';) ORDER BY topic_id
 
qui est valable.
 
D'où viens l'erreur alors?
 
Merci pour tes reponses rapides  :hello:

n°229487
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 17-10-2002 à 15:39:11  profilanswer
 

Ah ba ui, c'est normal, chu con, j'avais pas bien tout lu. La fin de ton code merde total :
* tu fais DEJA un $mysql_query() dans ta fonction de search, donc pas la peine d'en faire un après avec mysql_query($tmp) ;
* toujours dans search(), tu fais $result = mysql_query($sql); alors que tu retournes $results :p Comme tu renvoies une variable vide, normal que la query SQL soit vide :D


Message édité par Taiche le 17-10-2002 à 15:39:32

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°229493
fox25
con prend pas
Posté le 17-10-2002 à 15:47:21  profilanswer
 

Taiche a écrit a écrit :

Ah ba ui, c'est normal, chu con, j'avais pas bien tout lu. La fin de ton code merde total :
* tu fais DEJA un $mysql_query() dans ta fonction de search, donc pas la peine d'en faire un après avec mysql_query($tmp) ;
* toujours dans search(), tu fais $result = mysql_query($sql); alors que tu retournes $results :p Comme tu renvoies une variable vide, normal que la query SQL soit vide :D




 
pour le $results j'avais déja vu l'erreur. Mais je dois changer quoi dans search (si j'ai deux fois $mysql_query())
 
Merci

n°229496
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 17-10-2002 à 15:48:38  profilanswer
 

Aloooors si j'étais toi, j'ferai juste un return $sql pis j'ferais la query dans le code principal. Genre mysql_query(search($keywords)) quoi.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°229509
fox25
con prend pas
Posté le 17-10-2002 à 16:01:47  profilanswer
 

C'est bon, merci
 
 :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  
 :hello:  :hello:  :hello:  :hello:  :hello:  
 :jap:  :jap:  :jap:  :jap:  :jap:  :jap:  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP]Problème avec fonction de recherche

 

Sujets relatifs
[JS] Probleme de window.open et window.closeproblème qt + linux
[PHP] - "max_user_connection"Bleme sur une fonction talker
[PHP] Question aux utlisateurs de phpBB (ver. 2.0.3) [Newbie]probleme de changement de type pour une variable [newbies du Python]
[PHP] Order by une variable ???[C] probleme de variable ....
Bonjour .. possible de créer une variable globale entre 2 scripts PHP?lancement automatique d une fonction
Plus de sujets relatifs à : [PHP]Problème avec fonction de recherche


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR