Probleme php moteur de recherche

Fermé
supergengi Messages postés 6 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 27 novembre 2007 - 27 nov. 2007 à 11:51
supergengi Messages postés 6 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 27 novembre 2007 - 27 nov. 2007 à 13:37
Bonjour,
je debut en php et j'essai de faire un moteur de recherche pour un site d'agence immobilliere
j'ai fait une petite liste déroulante dans laquel tu choisi une valeur pour les champs Area ,Type ,Bedrooms et Price.
le probléme est que si je choisi All pour tous les champs c'est a dire que je veut afficher tous les valeurs dans la table il me fait cette erreur :
Parse error: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\Tests\realestate\recherche.php on line 53
cepandant si je lui met des valeurs specifique ca marche
voici le code:
<?php
$idConnection= mysql_connect("localhost","root","");
mysql_select_db("test");

if (isset($_POST['Area']) AND isset($_POST['Type'])AND isset($_POST['Bedrooms'])AND isset($_POST['Price']))


{

$postArea = $_POST['Area'];
$postType = $_POST['Type'];
$postBedrooms = $_POST['Bedrooms'];
$postPrice=$_POST['Price'];

if ($postArea =='ALL' AND $postType=='ALL' AND $postBedrooms=='ALL' AND $postPrice=='ALL')
{
$sql="SELECT * FROM propreties ";
}
else
{
$pricebefore=substr($_POST['Price'],0,strpos($_POST['Price'],"-"));
$pricebefore=str_replace("-","",$pricebefore);


$priceafter=strstr($_POST['Price'],"-");
$priceafter=str_replace("-","",$priceafter);



$sql = "SELECT * FROM propreties WHERE Area = '$postArea' AND Type = '$postType' AND Bedrooms = ' $postBedrooms'AND Price BETWEEN '$pricebefore' AND '$priceafter' or ";



$result = mysql_query($sql) or die(mysql_error());;
$num_rows = mysql_num_rows($result);
echo $sql;
echo "$num_rows Rows\n";
}
}
while ($donnees = mysql_fetch_array($result))
{


?>
<H2><font color="orange"size="6" >
Search Results:
</font><div style="color:black; font-size:20">
<p><strong>Area: <?php echo $donnees['Area'];?></strong></br>
<strong>Type:<?php echo $donnees['Type'];?></strong></br>
<strong>Bedrooms:<?php echo $donnees['Bedrooms']; ?></strong></br>
<strong>Price:<?php echo $donnees ['Price']; ?></strong></br></p>

<?php




}

if ($num_rows=='0'){
echo " Sorry Nothing Matched";
}
mysql_close();


?>

si quelqu'un peut m'aider a trouver le probleme et si c'est grave "take it easy" ta affair a un debutant.

merci d'avance.
A voir également:

3 réponses

Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
27 nov. 2007 à 13:07
Salut,

Apparemment il doit y avoir un problème dans tes blocs if :
$result = mysql_query($sql) or die(mysql_error());
n'est pas exécuté dans le cas ou if ($postArea =='ALL' AND $postType=='ALL' AND $postBedrooms=='ALL' AND $postPrice=='ALL') est vérifié.

Je n'ai pas détaillé, mais ça marchera peut-être en modifiant
$result = mysql_query($sql) or die(mysql_error());;
$num_rows = mysql_num_rows($result);
echo $sql;
echo "$num_rows Rows\n";
}
} 


en

}
$result = mysql_query($sql) or die(mysql_error());
$num_rows = mysql_num_rows($result);
echo $sql;
echo "$num_rows Rows\n";
}

(déplacement de l'accolade fermante du if afin que mysql_query soit exécuté dans les deux cas)
a+
0
supergengi Messages postés 6 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 27 novembre 2007
27 nov. 2007 à 13:16
salut
c'est magique ton astuce j'ai couper coller et boom ca marche
et c'est logique parsque le else doit se fermer directement aprés la seconde requéte
merci infiniment pour ton aide Dr Zoidberg
0
supergengi Messages postés 6 Date d'inscription lundi 26 novembre 2007 Statut Membre Dernière intervention 27 novembre 2007
27 nov. 2007 à 13:37
salut
maintenant j'ai une autre question si c'est possible
dans le champ price du formulaire j'ai mis des valeur comme suit:
10000-60000
60000-10000
etc...
et quand la requete s'execute il me renvoi 10 pour 10000 et 60 pour 60000
et ce qu'il ya une commande qui peut resoudre le probleme
merci d'avance.
0