[RESOLU] Sélection avec plusieurs critères

Eléphant du PHP | 167 Messages

07 mai 2013, 15:03

Avec ceci :
<?php 

  require("connect.php");
if(isset($_GET['checkbox']) ){


          foreach($_GET['checkbox'] AS $valeur)
          {
                echo 'Vous avez sélectionné les départements '.htmlentities($valeur).'<br />';
          

  $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['checkbox']."'";
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['nomSalarie']."</td><td>".$row['adresse']."</td><td>".$row['cp']."</td><td>".$row['ville']."</td></tr>";
   echo "</table>";
}

?>

Mais ça ne m'affiche toujours rien comme résultats, ça me dit quels départements ont été sélectionné mais il n'y a pas de traitement.

Mammouth du PHP | 619 Messages

07 mai 2013, 15:13

Bonjour,

comme je vous l'ai annonce c'est un tableau vous le traite en haut mais pas dans votre requete tester avec cela
<?php 

require("connect.php");
if(isset($_GET['checkbox']) ){
	$idDepartement="";
	foreach($_GET['checkbox'] AS $valeur){
    	echo 'Vous avez sélectionné les départements '.htmlentities($valeur).'<br />';
		$idDepartement="dpt='".$valeur."' or ";
	}
	if(!empty($idDepartement)){$idDepartement = substr($idDepartement, 0, -3);}

  $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 $idDepartement";
	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['nomSalarie']."</td><td>".$row['adresse']."</td><td>".$row['cp']."</td><td>".$row['ville']."</td></tr>";
		}
   		echo "</table>";
	}
}

?>

Eléphant du PHP | 167 Messages

07 mai 2013, 15:20

Je viens de tester, et ça m'affiche ceci "Pb d'accès à la table Etablissement"

Mammouth du PHP | 619 Messages

07 mai 2013, 15:25

retester avec ce code
<?php 

require("connect.php");
if(isset($_GET['checkbox']) ){
	$idDepartement="";
	foreach($_GET['checkbox'] as $valeur){
    	echo 'Vous avez sélectionné les départements '.htmlentities($valeur).'<br />';
		$idDepartement="dpt='".$valeur."' or ";
	}
	if(!empty($idDepartement)){$idDepartement = substr($idDepartement, 0, -3);}

  $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 $idDepartement";
	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['nomSalarie']."</td><td>".$row['adresse']."</td><td>".$row['cp']."</td><td>".$row['ville']."</td></tr>";
		}
   		echo "</table>";
	}
}

?>
votre checkbox ce nome bien checkbox[] ?

si cela marche pas ajouter un print_r($_GET); en haut de la page

Eléphant du PHP | 167 Messages

07 mai 2013, 15:39

Array ( [checkbox] => Array ( [0] => 13 [1] => 85 [2] => 86 [3] => 93 [4] => 95 ) )

Ça m'affiche que les résultats de 95 et puis si je reviens en arrière et coche le département 06 j'ai ceci :


Array ( [checkbox] => Array ( [0] => 06 [1] => 13 [2] => 85 [3] => 86 [4] => 93 [5] => 95 ) )

Mais ça garde que résultats de 95

Et si je coche au contraire un département 98 :

Array ( [checkbox] => Array ( [0] => 06 [1] => 13 [2] => 85 [3] => 86 [4] => 93 [5] => 95 [6] => 98 ) )

Et ça m'affiche les résultats de celui-ci


Finalement, ça n'affiche pas tout les départements des cases cochés.

Mammouth du PHP | 619 Messages

07 mai 2013, 15:46

reposte ton dernier formulaire stp

Eléphant du PHP | 167 Messages

07 mai 2013, 15:48

Le voici

<?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 Etablissement 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="checkbox[]" value="'.$row['dpt'].'">';
           
}
}      
?>

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

</form>



Mammouth du PHP | 619 Messages

07 mai 2013, 16:07

voila j'ai oublie un point
<?php 

require("connect.php");
if(isset($_GET['checkbox']) ){
	$idDepartement="";
	foreach($_GET['checkbox'] as $valeur){
    	echo 'Vous avez sélectionné les départements '.htmlentities($valeur).'<br />';
		$idDepartement.="dpt='".$valeur."' or ";
	}
	if(!empty($idDepartement)){$idDepartement = substr($idDepartement, 0, -3);}

  $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 $idDepartement";
	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['nomSalarie']."</td><td>".$row['adresse']."</td><td>".$row['cp']."</td><td>".$row['ville']."</td></tr>";
		}
   		echo "</table>";
	}
}

?>

Eléphant du PHP | 167 Messages

07 mai 2013, 16:14

Toujours pas puisque j'ai ceci "Pb d'accès à la table Etablissement"

Mammouth du PHP | 619 Messages

07 mai 2013, 16:17

tu peu faire un echo de $idDepartement juste avant ta requet

Eléphant du PHP | 167 Messages

07 mai 2013, 16:24

Ça marche !
Encore une fois merci beaucoup, j'avais un problème d'espace... #-o

Merci pour ton aide si précieuse ghost5922 :D

Mammouth du PHP | 619 Messages

07 mai 2013, 16:39

pas de souci bon courage pour la suite