[RESOLU] Sélection avec plusieurs critères

Eléphant du PHP | 167 Messages

07 mai 2013, 12:32

Bonjour à tous,

J'ai une table établissement sur laquelle je veux faire une recherche selon les départements. J'arrive à faire une recherche suivant un département mais je veux pouvoir faire une recherche suivant plusieurs départements.
Pourriez-vous m'aider s'il-vous-plaît.

Le code :
<html>
<body>
	<p> Recherche d'un établissement : </p>
	<form action="selectiondpt.php" method="GET">
	<p> Département sélectionné :	<input type="text" name="nom"> </p>
		<input type="submit" value="Rechercher">
	</form>
</body>
</html>

<?php 
if(isset($_GET['nom']) && !empty($_GET['nom'])){
  require("connect.php");
  // pour oracle: $dsn="oci:dbname=//serveur:1521/mydb
  $dsn="mysql:dbname=".BASE.";host=".SERVER;
    try{
      $connexion=new PDO($dsn,USER,PASSWD);
    }
    catch(PDOException $e){
      printf("Échec de la connexion : %s\n", $e->getMessage());
      exit();
    }
 $sql="SELECT * from Etablissement where dpt='".$_GET['nom']."'";
if(!$connexion->query($sql)) echo "Pb d'accès à la table Etablissement";

else 
  {
    echo "<table><tr><td>DEPARTEMENT</td><td>NOM</td><td>ADRESSE</td><td>CODE POSTAL</td><td>VILLE</td></tr>";
     foreach ($connexion->query($sql) as $row)
     echo "<tr><td>".$row['dpt']."</td><td>".$row['nomEtablissement']."</td><td>".$row['adresse']."</td><td>".$row['cp']."</td><td>".$row['ville']."</td></tr>";
   echo "</table>";
}
}
?>
Merci de votre aide.

Mammouth du PHP | 619 Messages

07 mai 2013, 12:36

Bonjour,

tu veux pouvoir recherche dans plusieurs champ de table ou mettre plusieurs valeur dans ton input ?

Eléphant du PHP | 167 Messages

07 mai 2013, 12:39

Merci de répondre toujours aussi rapidement :)

Je veux seulement pouvoir sélectionner plusieurs départements dans un input, les autres champs ne m'intéresse pas pour la sélection du moins.

Mammouth du PHP | 619 Messages

07 mai 2013, 12:45

Bonjour,

pas de souci, mais désolé si j'ai du mal a comprendre je veux seulement pouvoir selectionner plusieurs departements dans un inputs pourquoi ne pas utilise checkbox ou un select multiple

ou tu veux un input avec par exemple : lille paris etc et une fois valide on recherche tout ?

Eléphant du PHP | 167 Messages

07 mai 2013, 12:48

Bonjour,

Voilà, je veux que ça me sélectionne tout les enregistrements ayant pour dpt Paris et Lille.

Eléphant du PHP | 167 Messages

07 mai 2013, 13:13

J'ai fait un des checkbox mais je n'ai aucun résultat.
<html>
<body>
	<p> Recherche d'un établissement : </p>

	<form action="selectiondpt.php" method="GET">
	<p> Département sélectionné :	

<input type="checkbox" name="nom[]" value="37"> 37
<input type="checkbox" name="nom[]" value="45"> 45
<input type="checkbox" name="nom[]" value="36"> 36

<input name="valider" type="submit" value="Valider">

	</form>
</body>
</html>

Mammouth du PHP | 619 Messages

07 mai 2013, 13:27

Bonjour,

si j'ai bien compris tu veux un menu select ville et depuis cette sélection avoir les département du premier select ?

Eléphant du PHP | 167 Messages

07 mai 2013, 13:30

Je veux un select département seulement suivant les départements présents dans ma base et en résultat je veux tout les établissements de ce département.

Mammouth du PHP | 619 Messages

07 mai 2013, 13:33

Bonjour,

il vous suffi de faire une requête qui va juste sélectionne les départements pressent est liste le tous dans un select

Eléphant du PHP | 167 Messages

07 mai 2013, 13:45

C'est ce que j'ai fais,
<?php
require("connect.php");
$dsn="mysql:dbname=".BASE.";host=".SERVER;
    try{
      $connexion=new PDO($dsn,USER,PASSWD);
    }
    catch(PDOException $e){
      printf("Échec de la connexion : %s\n", $e->getMessage());
      exit();
    }
$sql="SELECT distinct dpt from Etablissement order by dpt";
if(!$connexion->query($sql)) echo "Pb d'accès à la table Salarie";
else{
        ?>
        <form action="selectiondpt.php" method="GET">
        <select name="nom">
                <?php
        foreach ($connexion->query($sql) as $row){

           echo "<option value=".$row['dpt'].">".$row['dpt']."</option>";
           
}
}      
?>
</select>
<input type="submit" value="Rechercher">

</form>
Cependant, je veux pouvoir en sélectionner deux et avoir les résultats des deux

Mammouth du PHP | 619 Messages

07 mai 2013, 13:51

alors il faut mettre un select multible comme dit plus haut

un exemple http://www.bernardquevillier.fr/toposnew/select.htm

Eléphant du PHP | 167 Messages

07 mai 2013, 13:57

Je l'ai fait :
<?php
require("connect.php");
// pour oracle: $dsn="oci:dbname=//serveur:1521/mydb
$dsn="mysql:dbname=".BASE.";host=".SERVER;
    try{
      $connexion=new PDO($dsn,USER,PASSWD);
    }
    catch(PDOException $e){
      printf("Échec de la connexion : %s\n", $e->getMessage());
      exit();
    }
$sql="SELECT DISTINCT dpt from Etablissemet order by dpt";
if(!$connexion->query($sql)) echo "Pb d'accès à la table Etablissement";
else{
        ?>
        <form action="selectiondpt.php" method="GET">
        <select multiple name="nom">
                <?php
        foreach ($connexion->query($sql) as $row){

           echo "<option value=".$row['dpt'].">".$row['dpt']."</option>";
           
}
}      
?>
</select>
<input type="submit" value="Rechercher">

</form>
Cependant ce n'est pas ce que je veux faire, je veux pouvoir rentrer soit à la main dans un input ou cocher avec un checkbox deux, trois, voire 4 départements et pouvoir afficher tout les enregistrements de ceux-ci.
J'ai sûrement mal exprimé ce que je voulais faire...

Mammouth du PHP | 619 Messages

07 mai 2013, 14:06

Bonjour,

il a une erreur dans votre code regarde bien il ne ferme pas la balise option
<SELECT multiple name="couleurs" SIZE=4>
  <OPTION selected>Vert
  <OPTION>Rouge 
  <OPTION>Bleu
  <OPTION>Orange
  <OPTION selected>Marron clair
  <OPTION>Magenta
  <OPTION>Rose
  <OPTION disabled>Noir
  <OPTION>Blanc
  <OPTION disabled>Gris
</SELECT>
cela donne pour vous
<?php
require("connect.php");
// pour oracle: $dsn="oci:dbname=//serveur:1521/mydb
$dsn="mysql:dbname=".BASE.";host=".SERVER;
    try{
      $connexion=new PDO($dsn,USER,PASSWD);
    }
    catch(PDOException $e){
      printf("Échec de la connexion : %s\n", $e->getMessage());
      exit();
    }
$sql="SELECT DISTINCT dpt from Etablissemet order by dpt";
if(!$connexion->query($sql)) echo "Pb d'accès à la table Etablissement";
else{
        ?>
        <form action="selectiondpt.php" method="GET">
        <select multiple name="nom">
                <?php
        foreach ($connexion->query($sql) as $row){

           echo "<option value=".$row['dpt'].">".$row['dpt'];
           
}
}      
?>
</select>
<input type="submit" value="Rechercher">

</form>

pour le input cela reste moin bon car si votre client se trompe ou dois a chaque fois retape chaque département

Eléphant du PHP | 167 Messages

07 mai 2013, 14:15

En effet, mais est-ce que je peux remplacer option dans
echo "<option value=".$row['dpt'].">".$row['dpt']."</option>";
par un input type="checkbox" ?

Mammouth du PHP | 619 Messages

07 mai 2013, 14:25

Oui si vous préférez des checkbox c'est possible
<?php
require("connect.php");
// pour oracle: $dsn="oci:dbname=//serveur:1521/mydb
$dsn="mysql:dbname=".BASE.";host=".SERVER;
    try{
      $connexion=new PDO($dsn,USER,PASSWD);
    }
    catch(PDOException $e){
      printf("Échec de la connexion : %s\n", $e->getMessage());
      exit();
    }
$sql="SELECT DISTINCT dpt from Etablissemet order by dpt";
if(!$connexion->query($sql)) echo "Pb d'accès à la table Etablissement";
else{
        ?>
        <form action="selectiondpt.php" method="GET">
                        <?php
        foreach ($connexion->query($sql) as $row){

           echo $row['dpt'].' <input type="checkbox" name="nom[]" value="'.$row['dpt'].'">';
           
}
}      
?>

<input type="submit" value="Rechercher">

</form>
voila normalement cela va vous retourne un tableau avec les resultat donc ne pas faire $_POST['nom'] cela va vous retourne un tableau il faut le traite avant