Effectuer une recherche

alial88 Messages postés 16 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 4 juin 2010 - 27 mai 2010 à 17:16
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015 - 5 juin 2010 à 02:27
slt ;
je suis une debutante en php j'ai besoin de creer un site immobilier je veux effectuer une recherche interne par ville et type de bien et type de transaction pour afficher les annonces correspondantes a la recherche mais je sais pas commet faire svp si qlq 1 peut m'aider.

merci d'avence

26 réponses

devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
28 mai 2010 à 09:04
salut
tous dependra de la structure des tes differentes tables
Mais sans un bout de code ou au moins la structure de tes tables mysql pour que l'on puisse t'apporter de l'aide alors si tu en dispose tu pourra les poster ensuite on verra
CORDIALEMENT
0
alial88 Messages postés 16 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 4 juin 2010
28 mai 2010 à 16:02
Merci pour votre aide :).

j'ai une base de données de 4 table : client(cin,login,pasword,nom,...)annonce(num_annonce,type de bien,type de transaction,cin..)pays(num_pays,nom)ville(num_ville,nom,num_pays).
et voici le code html correspandant :

<html>
<title></title>
<head>
<form action="" method="post" >
type transaction:,
<select name="type_transaction" size="1"
id="ctl_type_transaction" class="TEXTE_SMALL" style="width: 150px;">
<option value="0">-------------------</option>
<option value="1">Achat</option>
<option value="2">Location</option>
<option value="4">Location saisonnière</option>
</select>,

----

Type de bien :,
<select name="type_de_bien" class="TEXTE_SMALL"
id="type_de_bien" style="width: 150px;">
<option value="">-------------------</option>
<option value="1">Maison-Villa</option>
<option value="2">Appartement</option>
<option value="16">Riad</option>
<option value="5">Commerce</option>
<option value="6">Local commercial</option>
<option value="20">Local industriel</option>
<option value="9">Terrain</option>
<option value="10">Bureau</option>
<option value="11">Immeuble</option>
<option value="12">Domaine forestier</option>
<option value="13">Domaine agricole</option>
</select>,

----

Ville :,
<select name="ville" size="1" id="ville" class="TEXTE_SMALL"
onchange="ville_change()" style="width: 150px;">
<option value="">-------------------</option>
<option value="Meknes">meknes</option>
<option value="fes">fes</option>
<option value="tetouan">casablanca</option>
<option value="casablanca">Tetouan</option>
<option value="rabatt">tanger</option>
<option value="autres">autres</option>
</select>

<center> </center>
</form>
</head>
</html>

Merci d'avance
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
29 mai 2010 à 00:44
donc juste en dessous tu mets
<?php
if( isset($_POST['Submit']) ){
$type_transac = isset($_POST['type_transaction'])?$_POST['type_transaction']:'';
$type_bien = isset($_POST['type_de_bien'])?$_POST['type_de_bien']:'';
$ville = isset($_POST['ville'])?$_POST['ville']:'';

$sql = "SELECT * FROM annonce" ;
//construction du where l'utilisateur peut seulement avoir choisie de recherche suivant
//le type de transaction ou type de bien ect.. dans ce cas les champs qu'il a omis serons vide
$prec = 0;//cette variable va dire si on'est a la premiere condition ou non
$where = "";
if(!empty($type_transac)) {
   $where.= "type_transaction='$type_transac'";
   $prec = 1;//signale que il y'a une condition appliquer donc sa va dire
   //On doit Mettre AND
}
if( !empty($type_bien) ) {
     if( $prec==0) {
     $where.=" type_de_bien='$type_bien'";
 $prec=1;
 } else {
     $where.= " AND type_de_bien='$type_bien'";
     $prec.=1;
 }
}
if( !empty($ville) ) {
     if( $prec==0) {
     $where.=" ville='$ville'";
 $prec=1;
 } else {
     $where.= " AND ville='$ville'";
     $prec.=1;
 }
}
$sql .= !empty($where)?" WHERE ".$where:'';
echo "
".$sql."
";
}
?>
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
29 mai 2010 à 00:48
le echo de la fin je l'ai fait juste pour voir si la requete est bien construit il te reste plus q'a l'executer et afficher le resultat
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alial88 Messages postés 16 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 4 juin 2010
30 mai 2010 à 06:42
bonjour je vs remercie infiniment pour votre aide mais j'ai met le code et qd je clique sur le bouton rechercher c seulement les requête qui s'affiche comme elle est écrite ds le code (select * from annonce) si je ne choisi rien .et (SELECT * FROM annonce WHERE type_transaction='2' AND type_de_bien='10' AND ville='fes) si je rempli les champ de recherche.

merci bien encore.
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
30 mai 2010 à 13:40
le echo de la fin je l'ai fait juste pour voir si la requete est bien construit il te reste plus q'a l'executer et afficher le resultat

salut
c'est normal j'avait pas mis de mysql_query($sql) j'avais supposer que tu l'a remarquer mais bon voila
tu efface le echo et tu met:
mysql_query($sql) or die(mysql_error());
while( $row = mysql_fetch_assoc($query) ) {
echo $row['num_annonce'];
}

bon maintenant a toi de jouer
CORDIALEMENT
0
alial88 Messages postés 16 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 4 juin 2010
30 mai 2010 à 16:01
j'ai met le code mais tjrs rien cette fois sa affiche un msg d'erreur(Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\immobb\index.php on line 184) et ds la ligne 184 il ya ' while( $row =mysql_fetch_assoc($sql) ) {


Merci encore:)
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
30 mai 2010 à 16:20
t'a bien mis le mysql_query($sql) or die(mysql_error());
parce que l'erreur que tu signale c'est du a la syntaxe de la requete elle a mal fonctioner et le die(mysql_error()) est la pour arrter l'execution du script sinon remet le echo $sql; et poste le pour voir
0
alial88 Messages postés 16 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 4 juin 2010
30 mai 2010 à 16:54
oui j'ai bien fait tt le code ke tu m'a demander de faire mais la même erreur apparu.
en tt cas merci bcp pour votre aide c'était vrmt gentil .Merci encore :)
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
30 mai 2010 à 17:06
il y'a pas de koi !
qu'est ce que le echo donne et aussi regarde ici
SELECT * FROM annonce WHERE type_transaction='2' AND type_de_bien='10' AND ville='fes'
est ce que les champs type_transaction et type_de_bien existe bien dans ta table et verfie aussi ton mysql_connect() et ajoute y or die(mysql_error()) pour voir
0
alial88 Messages postés 16 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 4 juin 2010
31 mai 2010 à 17:22
slt j'espere ke vous aller bien j'ai encore besoin de votre aide.

le code lors de l'execution me donne tjrs erreur au nive de " while($row = (mysql_fetch_assoc($sql))
que doit je faire stp!!
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
1 juin 2010 à 02:45
je vais bien merci
reposte le code en entier pour voir
0
alial88 Messages postés 16 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 4 juin 2010
1 juin 2010 à 03:01
ok voici le code:


<form action="" method="post" name="recherche" style="display: inline;" onSubmit="return check_form_recherche(this)">
type transaction:,
<select name="type_transaction" size="1" id="ctl_type_transaction" class="TEXTE_SMALL" style="width: 150px;">
<option value="0">-------------------</option>
<option value="1">Achat</option>
<option value="2">Location</option>
<option value="4">Location saisonnière</option>
<option value="8">Viager</option>
</select>,

----

Type de bien :,
<select name="type_de_bien" class="TEXTE_SMALL" id="type_de_bien" style="width: 150px;">
<option value="">-------------------</option>
<option value="1">Maison-Villa</option>
<option value="2">Appartement</option>
<option value="3">Programme neuf</option>
<option value="16">Riad</option>
<option value="4">Prestige</option>
<option value="5">Commerce</option>
<option value="6">Local commercial</option>
<option value="20">Local industriel</option>
<option value="7">Loft/Atelier</option>
<option value="8">Parking</option>
<option value="9">Terrain</option>
<option value="10">Bureau</option>
<option value="11">Immeuble</option>
<option value="12">Domaine forestier</option>
<option value="13">Domaine agricole</option>
<option value="14">Chambre d'hote</option>
<option value="15">Mobile-home</option>
</select>,

----

Ville :,
<select name="ville" size="1" id="ville" class="TEXTE_SMALL" onChange="ville_change()" style="width: 150px;">
<option value="">-------------------</option>
<option value="Meknes">meknes</option>
<option value="fes">fes</option>
<option value="tetouan">casablanca</option>
<option value="casablanca">Tetouan</option>
<option value="rabatt">tanger</option>
<option value="autres">autres</option>
</select>

<center> </center>
</form>





<?php
$connexion=mysql_connect("localhost","root","");
$base=mysql_select_db("immob");
mysql_select_db($base,$connexion);

if( isset($_POST['Submit']) ){
$type_transac = isset($_POST['type_transaction'])?$_POST['type_transaction']:'';
$type_bien = isset($_POST['type_de_bien'])?$_POST['type_de_bien']:'';
$ville = isset($_POST['ville'])?$_POST['ville']:'';

$sql = "SELECT * FROM annonce" ;
//construction du where l'utilisateur peut seulement avoir choisie de recherche suivant
//le type de transaction ou type de bien ect.. dans ce cas les champs qu'il a omis serons vide
$prec = 0;//cette variable va dire si on'est a la premiere condition ou non
$where = "";
if(!empty($type_transac)) {
$where.= "type_transaction='$type_transac'";
$prec = 1;//signale que il y'a une condition appliquer donc sa va dire
//On doit Mettre AND
}
if( !empty($type_bien) ) {
if( $prec==0) {
$where.=" type_de_bien='$type_bien'";
$prec=1;
} else {
$where.= " AND type_de_bien='$type_bien'";
$prec.=1;
}
}
if( !empty($ville) ) {
if( $prec==0) {
$where.=" ville='$ville'";
$prec=1;
} else {
$where.= " AND ville='$ville'";
$prec.=1;
}
}
$sql .= !empty($where)?" WHERE ".$where:'';

mysql_query($sql) or die(mysql_error());
while( $row = mysql_fetch_assoc($query) ) {
echo $row['id_annonce'];
}
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
1 juin 2010 à 03:27
l'erreur venait que $query été vide donc pour corriger cela remplace cette ligne
mysql_query($sql) or die(mysql_error());
par
$query = mysql_query($sql) or die(mysql_error());
0
alial88 Messages postés 16 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 4 juin 2010
1 juin 2010 à 03:58
oui manant pour select * from annonce sa marche tres bien :). mais pour l'autre requete il n'affiche rien
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
1 juin 2010 à 04:01
quel autre requete?
0
alial88 Messages postés 16 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 4 juin 2010
1 juin 2010 à 04:07
quand je fait aucune selection c a d pour afficher tte les annonce sa marche il les affiche tte.mais qd je cherche par exemple type_transaction=location type_de_bien=riad ville=fes il n'affiche rien
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
1 juin 2010 à 04:11
s'il n'affiche rien ce qu'il n'a pas trouver est ce que la recherche que tu vien de poster correspond a une annonce qui existe bien dans ta base
0
alial88 Messages postés 16 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 4 juin 2010
1 juin 2010 à 04:27
oui j'ai bien choisi une annonce existant deja ds la base mais tjrs il n'affiche rien.
0
devil_may_cry Messages postés 194 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 11 juillet 2015
1 juin 2010 à 04:33
bon voila ce que j'ai remarquer
<option value="16">Riad</option> 

dans ta recherche precedente type_de_bien=riad mais ici le script ne recoit pas riad mais recoit 16 donc il ne vas pas trouver ce que tu recheche si dans ta base tu met riad au lieu de 16 j'espere que tu a compris ce que je veu dire
0
Rejoignez-nous