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.

3 réponses

Dr Zoidberg
Messages postés
528
Date d'inscription
jeudi 28 juin 2007
Statut
Membre
Dernière intervention
12 juin 2015
99
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