Bonjour, je voudrais faire un module de recherche très simple qui permettrait de retrouver des infos dans la base de donnée. Mais cela suivant un OU deux critères. C'est à dire que l'utilisateur pourra choisir de rechercher suivant, en l'occurrence, le département et le secteur d'activité.
J'ai donc utilisé deux listes déroulante <select>.
Problème : je n'arrive pas à rechercher dans la bd en fonction d'un seul critère si il n'y en a qu'un de sélectionné.

Il me recherche a chaque fois des résultats suivant les 2 critères et donc il ne trouve rien lorsque je n'en sélectionne qu'un.

voilà un bout de code :

$sql = "SELECT etablissement FROM fiches WHERE departement='$selectValueDepartement' and secteur='$selectValueSecteur'";

if (empty($selectValueDepartement) and (empty($selectValueSecteur)))
{
    echo "remplir les champs";  
}
if (empty($selectValueDepartement) and (!empty($selectValueSecteur)))
{
    $sql = "SELECT etablissement FROM fiches WHERE secteur='$selectValueSecteur'";
}
if (!empty($selectValueDepartement) and (empty($selectValueSecteur)))
{
    $sql = "SELECT etablissement FROM fiches WHERE Departement='$selectValueDepartement'";
}

// lance la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  

// recupere le resultat sous forme d'un tableau
$data = mysql_fetch_array($req);  

// libère l'espace mémoire
mysql_free_result ($req);  
mysql_close ();  
?>
Resultat de la recherche :<br />
<?php echo $data'etablissement'];
?>

2 réponses


William_LF
Réponse acceptée

Bonjour,

il faudrait que tu géneres ta requete en fonction des résultats du select, par exemple :

if($selectValueDepartement && $selectValueSecteur) {
 $sql = "... WHERE departement=selectValueDepartement AND secteur=$selectValueSecteur";
}
else if(!$selectValueDepartement && $selectValueSecteur) {
 $sql = "... WHERE secteur=$selectValueSecteur";
}
else if($selectValueDepartement && !$selectValueSecteur){   
 $sql = " ... WHERE departement=selectValueDepartement";
}

En espérant t'avoir aidé

dadaer
Auteur

Super, ça marche ! J'y avais pas pensé, je me cassais la tête avec des empty...
Merci beaucoup :)