Moteur de recherche resultat page vide

Répondre
kolivier2
kolivier2
Déconnecté
Bonsoir voila j'ai fait un petit moteur de recherche pour ma base, mais j'ai un souci au niveau de l'affichage du résultat final qui m'affiche un message que voici

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/103/sdb/f/9/pseudo/Nouveau dossier/Nouveau document texte.php on line 26


comment y remédier ?

  1. <?php
  2. $recherche = $_POST[recherche];  
  3. $critere = $_POST[critere];  
  4.  
  5.  
  6. // on se connecte à notre base
  7. $connexion = mysql_connect("***","***","***" );  
  8. mysql_select_db("***",$connexion);  
  9.  
  10. //1ere condition si l'user a fait sa recherche par code postal
  11. if($critere == 'CPMaison')  
  12. {  
  13. $sq1 = "SELECT * FROM Maison WHERE CPMaison = '$recherche'";  
  14. $requete = mysql_query($sq1);  
  15. while ($recherche = mysql_fetch_array($requete)) ;  
  16. {  
  17. echo $recherche['NoMaison']." ".$recherche['RueMaison']." ".$recherche['CPMaison']." ".$recherche['VilleMaison']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
  18. }  
  19. }  
  20.  
  21. //2éme condition si l'user choisi par ville
  22. else if ($critere == 'VilleMaison')  
  23. {  
  24. $sq1 = "SELECT * FROM Maison WHERE VilleMaison = '$recherche'";  
  25. $requete = mysql_query($sq1);  
  26. while ($recherche = mysql_fetch_array($requete)) ;  
  27. {  
  28. echo $recherche['NoMaison']." ".$recherche['RueMaison']." ".$recherche['CPMaison']." ".$recherche['VilleMaison']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
  29. }  
  30. }  
  31.  
  32. //3éme condition par nombre de chambres
  33. else if($critere == 'NbChambres')  
  34. {  
  35. $sq1 = "SELECT * FROM Maison WHERE NbChambres = '$recherche'";  
  36. $requete = mysql_query($sq1);  
  37. while ($recherche = mysql_fetch_array($requete)) ;  
  38. {  
  39. echo $recherche['NoMaison']." ".$recherche['RueMaison']." ".$recherche['CPMaison']." ".$recherche['VilleMaison']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
  40. }  
  41. }  
  42.  
  43. //4éme condition par nombre de places
  44. else if($critere == 'NbPlaces')  
  45. {  
  46. $sq1 = "SELECT * FROM Maison WHERE NbPlaces = '$recherche'";  
  47. $requete = mysql_query($sq1);  
  48. while ($recherche = mysql_fetch_array($requete)) ;  
  49. {  
  50. echo $recherche['NoMaison']." ".$recherche['RueMaison']." ".$recherche['CPMaison']." ".$recherche['VilleMaison']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
  51. }  
  52. }  
  53. mysql_close();  
  54. ?> 


je vous remercie
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Je parie que tu as cette erreur quand tu lances une recherche qui contient un caractère '.

Sinon, ce genre d'erreur arrive quand tu lances un mysql_fetch_array sur un mysql_query qui a retourné false, et donc cela veut dire que la requête SQL que tu lances juste avant la ligne 26 a merdé.

En regardant ton code, je vois que tu n'escapes pas les données de tes requêtes SQL, et ça, c'est mal. Pour deux raisons :
- tu te manges ce genre d'erreur
- tu te met en position de victime d'injection SQL

Bref, pour toutes tes requêtes SQL, utilise la fonction mysql_escape_string pour protéger tes données.

Exemple :

  1. <?php
  2. $sql = "SELECT blu FROM table WHERE polom = '".mysql_escape_string($recherche)."'";  
  3. ?> 


(note bien la position des guillemets)

PS : quand tu copies colles du code sur le forum, pense à retirer les identifiants de connexion MySQL de ton code :)
kolivier2
kolivier2
Déconnecté
Bonsoir voila j'ai effectuer quelques modification au script mais cette fois si j'ai une erreur de type "Notice: Undefined variable: sql" a toutes mes lignes $requete

voici le sript

  1.  
  2. <?php
  3.    if (isset($_POST['recherche'])) 
  4.    {  
  5. $recherche = $_POST['recherche']; 
  6.    } 
  7.    $recherche = $_POST['recherche']; 
  8.    
  9.       if (isset($_POST['critere'])) 
  10.    {  
  11. $recherche = $_POST['critere']; 
  12.    } 
  13.    $critere = $_POST['critere'];  
  14.  
  15.  
  16. // on se connecte à notre base  
  17. $connexion = mysql_connect("***","***","***" );  
  18. mysql_select_db("villa",$connexion);  
  19.  
  20. //1ere condition si l'user a fait sa recherche par code postal  
  21. if($critere == 'CPVilla')  
  22. {  
  23. $sq1 = "SELECT * FROM Villa WHERE CPVilla = '".mysql_escape_string($recherche)."'";  
  24. $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
  25. while ($recherche = mysql_fetch_array($requete)) ;  
  26. {  
  27. echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
  28. }  
  29. }  
  30.  
  31. //2éme condition si l'user choisi par ville  
  32. else if ($critere == 'VilleVilla')  
  33. {  
  34. $sq1 = "SELECT * FROM Villa WHERE VilleVilla = '".mysql_escape_string($recherche)."'";  
  35. $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
  36. while ($recherche = mysql_fetch_array($requete)) ;  
  37. {  
  38. echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
  39. }  
  40. }  
  41.  
  42. //3éme condition par nombre de chambres  
  43. else if($critere == 'NbChambres')  
  44. {  
  45. $sq1 = "SELECT * FROM Villa WHERE NbChambres = '".mysql_escape_string($recherche)."'";  
  46. $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
  47. while ($recherche = mysql_fetch_array($requete)) ;  
  48. {  
  49. echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
  50. }  
  51. }  
  52.  
  53. //4éme condition par nombre de places  
  54. else if($critere == 'NbPlaces')  
  55. {  
  56. $sq1 = "SELECT * FROM Villa WHERE NbPlaces = '".mysql_escape_string($recherche)."'";  
  57. $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
  58. while ($recherche = mysql_fetch_array($requete)) ;  
  59. {  
  60. echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
  61. }  
  62. }  
  63. mysql_close();  
  64. ?>  
  65.  
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Normal, tu as déclarées tes requêtes SQL avec une variable $sq1 or tu fais des mysql_query de $sql.
kolivier2
kolivier2
Déconnecté
mais alors comment remédier a ce problème ? pour tu me faire un petit exemple ? je suis novice dans ce domaine...
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Ben si tu as des $sq1, tu fais des mysql_query($sq1).
Et si tu as des $sql, ben tu fais des mysql_query($sql).

C'est tout, y'a pas d'exemple à donner.

En fait, je pense que tu n'as toujours pas compris ou était le problème : tu as déclaré des variables $sq1 (avec le chiffre 1 en troisième lettre : "ESSE - CUL - UN") or tu fais des mysql_query($sql) (avec la lettre l en troisième lettre : "ESSE - CUL - ELLE").
kolivier2
kolivier2
Déconnecté
Je pense que je vais l'abandonner au profit d'un model qui fait des recherches avec des critères si vous avez des bon model je suis preneur je vous remercie de votre.
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php