Moteur de recherche resultat page vide
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
comment y remédier ?
je vous remercie
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 ?
- <?php
- $recherche = $_POST[recherche];
- $critere = $_POST[critere];
- // on se connecte à notre base
- $connexion = mysql_connect("***","***","***" );
- mysql_select_db("***",$connexion);
- //1ere condition si l'user a fait sa recherche par code postal
- if($critere == 'CPMaison')
- {
- $sq1 = "SELECT * FROM Maison WHERE CPMaison = '$recherche'";
- $requete = mysql_query($sq1);
- while ($recherche = mysql_fetch_array($requete)) ;
- {
- echo $recherche['NoMaison']." ".$recherche['RueMaison']." ".$recherche['CPMaison']." ".$recherche['VilleMaison']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";
- }
- }
- //2éme condition si l'user choisi par ville
- else if ($critere == 'VilleMaison')
- {
- $sq1 = "SELECT * FROM Maison WHERE VilleMaison = '$recherche'";
- $requete = mysql_query($sq1);
- while ($recherche = mysql_fetch_array($requete)) ;
- {
- echo $recherche['NoMaison']." ".$recherche['RueMaison']." ".$recherche['CPMaison']." ".$recherche['VilleMaison']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";
- }
- }
- //3éme condition par nombre de chambres
- else if($critere == 'NbChambres')
- {
- $sq1 = "SELECT * FROM Maison WHERE NbChambres = '$recherche'";
- $requete = mysql_query($sq1);
- while ($recherche = mysql_fetch_array($requete)) ;
- {
- echo $recherche['NoMaison']." ".$recherche['RueMaison']." ".$recherche['CPMaison']." ".$recherche['VilleMaison']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";
- }
- }
- //4éme condition par nombre de places
- else if($critere == 'NbPlaces')
- {
- $sq1 = "SELECT * FROM Maison WHERE NbPlaces = '$recherche'";
- $requete = mysql_query($sq1);
- while ($recherche = mysql_fetch_array($requete)) ;
- {
- echo $recherche['NoMaison']." ".$recherche['RueMaison']." ".$recherche['CPMaison']." ".$recherche['VilleMaison']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";
- }
- }
- mysql_close();
- ?>
je vous remercie
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 :
(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 :)
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 :
- <?php
- $sql = "SELECT blu FROM table WHERE polom = '".mysql_escape_string($recherche)."'";
- ?>
(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 :)
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
voici le sript
- <?php
- if (isset($_POST['recherche']))
- {
- $recherche = $_POST['recherche'];
- }
- $recherche = $_POST['recherche'];
- if (isset($_POST['critere']))
- {
- $recherche = $_POST['critere'];
- }
- $critere = $_POST['critere'];
- // on se connecte à notre base
- $connexion = mysql_connect("***","***","***" );
- mysql_select_db("villa",$connexion);
- //1ere condition si l'user a fait sa recherche par code postal
- if($critere == 'CPVilla')
- {
- $sq1 = "SELECT * FROM Villa WHERE CPVilla = '".mysql_escape_string($recherche)."'";
- $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
- while ($recherche = mysql_fetch_array($requete)) ;
- {
- echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";
- }
- }
- //2éme condition si l'user choisi par ville
- else if ($critere == 'VilleVilla')
- {
- $sq1 = "SELECT * FROM Villa WHERE VilleVilla = '".mysql_escape_string($recherche)."'";
- $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
- while ($recherche = mysql_fetch_array($requete)) ;
- {
- echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";
- }
- }
- //3éme condition par nombre de chambres
- else if($critere == 'NbChambres')
- {
- $sq1 = "SELECT * FROM Villa WHERE NbChambres = '".mysql_escape_string($recherche)."'";
- $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
- while ($recherche = mysql_fetch_array($requete)) ;
- {
- echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";
- }
- }
- //4éme condition par nombre de places
- else if($critere == 'NbPlaces')
- {
- $sq1 = "SELECT * FROM Villa WHERE NbPlaces = '".mysql_escape_string($recherche)."'";
- $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
- while ($recherche = mysql_fetch_array($requete)) ;
- {
- echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";
- }
- }
- mysql_close();
- ?>
Normal, tu as déclarées tes requêtes SQL avec une variable $sq1 or tu fais des mysql_query de $sql.
mais alors comment remédier a ce problème ? pour tu me faire un petit exemple ? je suis novice dans ce domaine...
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").
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").
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.
Accès rapide :
Remonter 

