Mauvaise requête ?

Mauvaise requête ? - PHP - Programmation

Marsh Posté le 08-02-2007 à 23:05:33    

Bonsoir,
J'ai un problème avec mon moteur de recherche qui utilise la requête suivante :
 

Code :
  1. <?php
  2. $Mot = $_POST['Mot'];
  3. $bdd = $_POST['bdd'];
  4. ?>
  5. <?php
  6. mysql_connect("localhost", "+++", "+++" ) or die("Impossible de se connecter :  " . mysql_error());
  7. mysql_select_db("bcmlbe" );
  8. if (($Mot == "" )||($Mot == "%" )) {
  9. // Si aucun mot clé n'a été saisi,
  10. // le script demande à l'utilisateur
  11. // de bien vouloir préciser un mot clé
  12. echo "<font face=verdana size=2>Veuillez entrer un mot clé s'il vous plaît!</font>";
  13. }
  14. else {
  15. $result = mysql_query("SELECT game, score, cat, cadre, id, comment FROM $bdd WHERE game LIKE '$Mot' OR comment LIKE '$Mot' OR score LIKE '$Mot' ORDER BY id ASC" );
  16. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  17. {
  18. ?>
  19. <p align="center"><font face="verdana" color="#0000FF"><span style="font-size: 8pt"><?php echo $row[0]; ?></span></font></p>
  20. <?php
  21. }
  22. }
  23. ?>


 
J'ai un message d'erreur :
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/210749426b69527e61e114f8cf14a606/web/search.php on line 21
 
Qqun peut il m'aider ? Merci d'avance


Message édité par oli1987 le 08-02-2007 à 23:06:22
Reply

Marsh Posté le 08-02-2007 à 23:05:33   

Reply

Marsh Posté le 08-02-2007 à 23:08:25    

echo mysql_error();
 
Accessoirement, ta requête est bourrée de trous de sécurité :
http://fr.php.net/mysql_real_escape_string
 
(et le nom de la base à interroger ne devrait jamais dépendre de ce que tape l'utilisateur :o)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 08-02-2007 à 23:09:42    

elle dépend de ce qu'il choisit ... Il y a plusieurs tables, et il a une sélection multiple qui lui est proposée

Reply

Marsh Posté le 08-02-2007 à 23:11:34    

Que ce soit une liste déroulante ou un champ texte ne change rien s'il est un minimum malin. :spamafote:
 
Utilise au moins in_array pour vérifier que la base demandée fait partie des choix possibles.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 08-02-2007 à 23:20:07    

j'ai du mal à comprendre ...
Désormais avec cette nvelle requête, le message "Pas de résultat" s'affiche tout le temps, meme quand je suis sur qu'il en existe ...

Code :
  1. <?php
  2. mysql_connect("localhost", "===", "===" ) or die("Impossible de se connecter :  " . mysql_error());
  3. mysql_select_db("bcmlbe" );
  4. if (($Mot == "" )||($Mot == "%" )) {
  5. // Si aucun mot clé n'a été saisi,
  6. // le script demande à l'utilisateur
  7. // de bien vouloir préciser un mot clé
  8. echo "<font face=verdana size=2>Veuillez entrer un mot clé s'il vous plaît!</font>";
  9. }
  10. else {
  11. $result = mysql_query("SELECT * FROM games WHERE comment LIKE 'Libramont' ORDER BY id ASC" );
  12. $number = mysql_num_rows($result);
  13. if ($number == 0){
  14. echo 'Pas de résultat';
  15. }
  16. else {
  17. echo '$number résultats';
  18. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  19. {
  20. ?>
  21. <p align="center"><font face="verdana" color="#0000FF"><span style="font-size: 8pt"><?php echo $row[0]; ?></span></font></p>
  22. <?php
  23. }
  24. }
  25. }
  26. ?>

Reply

Marsh Posté le 09-02-2007 à 10:04:35    

"comment LIKE 'Libramont'" est égale à "comment = 'Libramont'"
Il te manquerait pas un ou deux petites "%" par hasard?

Reply

Sujets relatifs:

Leave a Replay

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