recherche multicritére

Petit nouveau ! | 4 Messages

12 juil. 2013, 19:43

bonjour à tous voila j'ai un problème que j'arrive pas à résoudre. j'ai fait un formulaire de recherche multicritère qui doit aller chercher dans une base de données des infos mais le problème c'est que j'arrive pas à afficher correctement les info récupéré. si je renseigne le premier champs du formulaire j'ai ne réponse mais si je rempli un autre champs j'ai aucune réponse. et si je rempli deux champs aussi j'ai pas de réponse.
pouvez vous m'aider svp.
je joins le formulaire et le code php

formulaire
<form method="post" action="recherche.php">
                        <p>
                                Type d'opération : <br />
                                <select name="type_ope" value="Choisissez">
                                        <option value="" selected="selected"></option>
                                        <option>vente</option>
                                        <option>location</option>
                                </select><br />
                                type de bien : <br />
                                <select name="type_bien">
                                        <option value="" selected="selected"></option>
                                        <option value="1">Villa</option>
      <option value="2">appartement</option>
      <option value="3">terrain</option>
      <option value="4">chambre</option>
      <option value="5">magasin</option>
      <option value="6">immeuble</option>
      <option value="7">studio</option>
      <option value="8">bureaux</option>
      <option value="9">entrepot</option>
                                </select><br />
                               prix : <br />
                                <select name="prix">
                                        <option value="" selected="selected"></option>
                                       <option value="1"> Moins de 200 000</option>
      <option value="2"> Entre 200 000 et 300 000</option>
      <option value="3"> Entre 300 000 et 400 000</option>
      <option value="4"> Entre 400 000 et 600 000</option>
      <option value="5"> Entre 600 000 et 800 000</option>
      <option value="6"> Entre 800 000 et 1 000 000</option>
      <option value="7"> Entre 1 000 000 et 1 500 000</option>
      <option value="8"> Entre 1 500 000 et 2 000 000</option>
      <option value="9"> Plus de 2 000 000</option>
                                </select><br />
                                
                                <input type="submit" value="Valider" /><br />
code php
                 $cnx = mysql_connect($host,$user,$pass) or die("Impossible de se connecter");
$db = mysql_select_db($bdd) or die("Impossible de se connecter");
 
if(!empty($_POST['type_ope']))   {
   $choix[] = 'type_ope = "' . mysql_real_escape_string($_POST['type_ope']) . '"';
}
if(!empty($_POST['type_bien']))   {
   $choix[] = 'type_bien = "' . mysql_real_escape_string($_POST['type_bien']) . '"';
}
if(!empty($_POST['prix']))   {
    $choix[] = 'prix = "' . mysql_real_escape_string($_POST['prix']) . '"';
}
 
$sql = "SELECT * FROM annonce ";
if (isset($choix)) {
    $sql .= ' WHERE ' . implode(" AND ", $choix);
}
 
$requete = mysql_query( $sql, $cnx );
 
echo $sql;

 // On affiche chaque entrée une à une
    while( $result = mysql_fetch_array( $requete ) )
    {
		echo $result['type_bien'];
		echo $result['type_ope'];
		echo $result['prix'];
	}

Eléphant du PHP | 79 Messages

15 juil. 2013, 01:27

Bonjour l'ami,

Ajouter des values aux options de ton premier select, sa réglera le problème ^^

Je te conseille fortement aussi d'utiliser un objet tel que PDO pour gérer ton requêtage à ta base de données. C'est pas compliqué du tout.

exemple :

// contenu du fichier database.ini :
name = 'mydb'
host = '127.0.0.1'
port = '3306'
user = 'root'
pass = ''
// fin du fichier database.ini

$database = parse_ini_file( 'database.ini' );

$dsn = "mysql:dbname={$database['name']};host={$database['host']};port={$database['port']};" ;

$database = new PDO( $dsn, $database['user'], $database['pass']);

$id = 1 ;

$sql = "SELECT * FROM table WHERE id = ?" ;

$req = $database-> prepare( $sql ) ;

$req-> execute( array( $id ) );

// Retour en tableau :

$result = $req-> fetchAll( PDO::FETCH_ASSOC );

foreach( $result as $ligne )
{
    echo "id = {$ligne['id']} et col = {$ligne['col']}" ;
}


// Retour en objet :

$result = $req-> fetchAll( PDO::FETCH_OBJ );

foreach( $result as $ligne )
{
    echo "id = {$ligne-> id} et col = {$ligne-> col}" ;
}

Ciao