recherche multicritères

Eléphanteau du PHP | 37 Messages

14 sept. 2010, 16:40

bonjour,
je souhaite faire un formulaire pour permettre la recherche des formations en régions selon plusieurs critères département, secteur et type de diplôme
<form name="frm" method="post" action="cherche.php">
        Vous recherchez une formation en :<br>
        En r&eacute;gion <input type="radio" name="departement" value="*" checked><br>
        Haute-Corse <input type="radio" name="departement" value="1"><br>
        Corse-du-Sud <input type="radio" name="departement" value="2">
    <br>&nbsp;<br>
    Dans quel secteur d'activit&eacute; :
    <select name="secteur">
      <option value="*">Tous</option>
      <option value="1">Agriculture</option>
      <option value="2">B&acirc;timent</option>
      <option value="3">Commerce - Management - Services</option>
      <option value="4">Environnement</option>
      <option value="5">Industries</option>
      <option value="6">Informatique - Communication</option>
      <option value="7">M&eacute;tiers de bouche</option>
      <option value="8">M&eacute;tiers de l'automobile</option>
      <option value="9">Sant&eacute; - Hygi&egrave;ne - Soins à la personne</option>
      <option value="10">Sport</option>
    </select>
  <br>&nbsp;<br>
    Quel dipl&ocirc;me :
    <select name="diplome">
      <option value="*">Tous</option>
      <option value="1">CAPA</option>
      <option value="2">CAP</option>
      <option value="3">BEP</option>
      <option value="4">Bac pro</option>
      <option value="5">BP</option>
      <option value="6">Mentions compl&eacute;mentaires (MC)</option>
      <option value="7">BTS</option>
      <option value="8">DUT2</option>
      <option value="9">Licence pro</option>
      <option value="10">DU</option>
      <option value="11">Master</option>
    </select>
  <br>&nbsp;<br>
    
  <input type="hidden" name="combine" value="AND" checked>
    
    
  <input type="submit" name="submit" value="Rechercher">

</form>
<?
$db = mysql_connect('***', '***', '***'); 
mysql_select_db('***',$db); 

$ope=" ".@$_POST['combine']." ";
$sql="select * from formations WHERE 'AND'='".@$_POST['combine']."'";

if (@$_POST['departement']!="*") {$sql=$sql.$ope."departement=".@$_POST['departement'];}

if (@$_POST['secteur']!="*") {$sql=$sql.$ope."secteur=".@$_POST['secteur'];}

if (@$_POST['diplome']!="*") {$sql=$sql.$ope."diplome=".@$_POST['diplome'];}

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
while($data = mysql_fetch_array($req)) 
{
    echo '<tr><td>'.$data['nom'].'</td><td>'.$data['departement'].'</td><td>'.$data['secteur'].'</td><td>'.$data['diplome'].'</tr>';
}
mysql_close();
?>
le problème que je rencontre est le suivant : avec ce formulaire, lorsque l'utilisateur coche Corse-du-Sud les résultats n'affichent que les formations qui se déroulent SEULEMENT en Corse-du-Sud et pas les formations qui se déroulent dans les deux départements... :oops: je precise que j'ai créé un champ SET dans BdD

le problème vient de mon manque de compétences en php et que je me suis inspiré du tutorial...

voilà si quelqu'un peut m'aider...

Bonne soirée

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 sept. 2010, 21:53

Comment est-ce que tu identifies dans ta base de données les formations qui sont associées aux deux départements ?

Car effectivement, si dans ta requête tu ajoutes le critère " AND departement = 2 ", seuls les enregistrements pour lequel le champ departement a la valeur 2 seront retournés. Il faut donc peut être glisser un OR, ou remplacer le "=" par un IN (0, 2) en supposant que le 0 correspondant à toutes les régions, et le 2 au département sélectionné....
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 37 Messages

15 sept. 2010, 09:41

Bonjour,

j'ai modifié depuis hier car je souhaiterai que la recherche se fasse par lycée...
Dans ma BdD j'ai crée un champ SET et si la formation est disponible dans plusieurs lycées, je sélectionne les lycées...

Peut être devrai-je créer un champ pour chaque lycée dans ma BdD et vérifier lors de la requête php si le lycée est coché ou pas ?