Moteur de recherche resultat page vide

Répondre
kolivier2
le 27/03/2008 à 22:42
kolivier2
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 ?

<?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
LA GLOBULE
le 27/03/2008 à 23:57
LA GLOBULE
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 :

<?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 :)
kolivier2
le 29/03/2008 à 23:47
kolivier2
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

<?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();
?>
LA GLOBULE
le 30/03/2008 à 03:14
LA GLOBULE
Normal, tu as déclarées tes requêtes SQL avec une variable $sq1 or tu fais des mysql_query de $sql.
kolivier2
le 30/03/2008 à 10:12
kolivier2
mais alors comment remédier a ce problème ? pour tu me faire un petit exemple ? je suis novice dans ce domaine...
LA GLOBULE
le 30/03/2008 à 18:28
LA GLOBULE
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
le 30/03/2008 à 20:43
kolivier2
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

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours