Moteur de recherche : Prquoi ça marche pas?

Moteur de recherche : Prquoi ça marche pas? - PHP - Programmation

Marsh Posté le 17-07-2003 à 14:20:35    

Bonjour tout le monde !  :)  
 
Je travaille sur un moteur de recherche (aidé par quelqu'un qui s'y connait pas mal en php). Mais ça marche pas... Voici le code :
 
 
Le formulaire de recherche :
 

Code :
  1. <form method="post" action="moteur.php3">
  2.     <input type="text" name="motcle" /> <input type="submit" value="ok" />
  3. </form>


 
 
Le script PHP (moteur.php3) :
 

Code :
  1. <?
  2. $host = "";
  3. $user = "";
  4. $pass = "";
  5. $bdd = "";
  6. @mysql_connect($host,$user,$pass) or die("Impossible de se connecter" );
  7. $sql = "SELECT * FROM search_personnage WHERE per_definition LIKE '%$motcle%'";
  8. $resultat = mysql_query($sql);
  9. $nb = mysql_num_rows($resultat);
  10. if ($nb == 0)
  11.     {
  12.     echo "pas de resultat";
  13.     }
  14. else
  15.     {
  16.     echo "Recherche terminée. $nb résultats trouvés<br /><br />";
  17.     while ($val = mysql_fetch_array($resultat))
  18.       {
  19.       echo "- <a href=\"$val[per_url]\">$val[per_nom]</a> <br />";
  20.       }
  21.     }
  22. ?>


 
C'est pour mon site ( http://www.roger-one.net ). Il contient une partie encyclopédique et donc un moteur de recherche serait un grand plus.
 
Sinon pour la BDD, ça se passe comme ça : Une table nommée "search_personnage" (qui contient les infos pour la partie "personnages" de mon encyclopédie STARWARS, mais bientôt toutes les parties seront référencées dans le moteur) avec plusieurs champs ("per_id"; "per_nom"; "per_taille"; (...) "per_definition" (qui deviendra une liste de mots clefs, pour l'instant c'est un court texte); "per_url" ).
 
Nous ne voyons pas d'ou vient l'erreur. Est ce que quelqu'un peut nous aider?

Reply

Marsh Posté le 17-07-2003 à 14:20:35   

Reply

Marsh Posté le 17-07-2003 à 14:21:59    

Ba déjà, c'est quoi l'erreur ? [:ddr555]


---------------
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.
Reply

Marsh Posté le 17-07-2003 à 14:25:48    

Voici le message d'erreur :
 
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/local/apache/htdocs/sites/r/roger-one.net/moteur.php3 on line 20
pas de resultat
 
La ligne 20 : $nb = mysql_num_rows($resultat);
 
Sinon, il met toujours qu'il n'y a pas de résultat.


Message édité par electroger le 17-07-2003 à 14:26:13
Reply

Marsh Posté le 17-07-2003 à 14:31:09    

ton erreur viens du fait que ta requette ne peut pas etre executée,
 
vérifie les majuscules, minuscules, c sensible a la casse!!!
 
essaie d'afficher ta variable pour voir ce qu'elle contien...

Reply

Marsh Posté le 17-07-2003 à 14:33:45    

Ben disons que si je fais :  
 
<? echo $sql; ?><br/>
<? echo $motcle; ?>  
 
Ca marche parfaitement et il me met :  
 
SELECT * FROM search_personnage WHERE per_definition LIKE '%alliance%'
alliance
(avec une recherche "alliance" ).

Reply

Marsh Posté le 17-07-2003 à 14:35:38    

L'erreur signifie que la variable $resultat est vide. Avant de faire mysql_num_rows(), fais un if($resultat).
Affiche ta requête et tente de l'envoyer direct dans MySQL (via phpMyAdmin ou la ligne de commande, au choix).


---------------
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.
Reply

Marsh Posté le 17-07-2003 à 14:43:13    

T'es sur que t'es connecté sur la bonne base?
Nan parce que vu que tu fais pas de mysql_db_select je suis dubitatif sur ce qui se passe.
Pis vire le arobase devant mysql connect aussi ...
Faudrait mieux ecrire un truc dans le genre

Code :
  1. $link = mysql_connect("localhost", "mysql_user", "mysql_password" )
  2.         or die("Impossible de se connecter : " . mysql_error());


Message édité par anapajari le 17-07-2003 à 14:45:22
Reply

Marsh Posté le 17-07-2003 à 14:46:33    

Taiche a écrit :

L'erreur signifie que la variable $resultat est vide. Avant de faire mysql_num_rows(), fais un if($resultat).
Affiche ta requête et tente de l'envoyer direct dans MySQL (via phpMyAdmin ou la ligne de commande, au choix).


 
J'ai ajouté : if ($resultat)  
Et je n'ai plus le message d'erreur. Par contre il me met toujours qu'il n'y a pas de résultats.

Reply

Marsh Posté le 17-07-2003 à 14:52:12    

Anapajari a écrit :

T'es sur que t'es connecté sur la bonne base?
Nan parce que vu que tu fais pas de mysql_db_select je suis dubitatif sur ce qui se passe.
Pis vire le arobase devant mysql connect aussi ...
Faudrait mieux ecrire un truc dans le genre

Code :
  1. $link = mysql_connect("localhost", "mysql_user", "mysql_password" )
  2.         or die("Impossible de se connecter : " . mysql_error());




 
Je viens d'essayer, ça ne change rien  :( .

Reply

Marsh Posté le 17-07-2003 à 14:54:44    

essaie avec ca:
 $sql = "SELECT * FROM search_personnage WHERE per_definition LIKE ('%'.$motcle.'%')";

Reply

Marsh Posté le 17-07-2003 à 14:54:44   

Reply

Marsh Posté le 17-07-2003 à 14:56:33    

Anapajari a écrit :

T'es sur que t'es connecté sur la bonne base?
Nan parce que vu que tu fais pas de mysql_db_select je suis dubitatif sur ce qui se passe.


Ah ba ui, c'est ça ! Si tu fais pas de mysql_select_db(), il faut écrire mysql_db_query($bdd, $sql); à la place du mysql_query();
Ca ira mieux :p


---------------
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.
Reply

Marsh Posté le 17-07-2003 à 15:09:23    

Taiche a écrit :


Ah ba ui, c'est ça ! Si tu fais pas de mysql_select_db(), il faut écrire mysql_db_query($bdd, $sql); à la place du mysql_query();
Ca ira mieux :p


 
 :)  
MERCI BEAUCOUP !  :jap:  :jap:
 
EDIT : Avec ce script, y a pas de risque de trous de sécurité?


Message édité par electroger le 17-07-2003 à 15:11:13
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed