Affichage des données issues de 2 listes déroulante dépendan

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage des données issues de 2 listes déroulante dépendan

Re: Affichage des données issues de 2 listes déroulante dépendan

par or 1 » 27 déc. 2021, 19:09

remettre la liste dans le second formulaire permet de changer son choix sans que la seconde liste ne soit mise à jour, donc permet d'avoir des données non correspondantes, donc pas de résultat pour le select qui suit. la solution pour avoir le champ dans le formulaire, bien moins facile à changer pour l'utilisateur, est https://developer.mozilla.org/fr/docs/W ... put/hidden

pour la seconde question, comme on ne sait pas ce que retourne getAffichageListe, impossible de savoir ce qui cloche.

Re: Affichage des données issues de 2 listes déroulante dépendan

par toumaxille » 25 déc. 2021, 18:26

Merci pour l'orientation. j'ai un peu galéré mais j'ai franchi cet obstacle. voici le code
<!-- Liste déroulante des equipes -->
			<form method="post" action="liste_equipe.php">
				
				<select name="choix_equipe" class="col-lg-3">
				<option value="-1"<?php if($choix_equipe==-1){ echo ' selected="selected"'; } ?>>-- Choisissez une équipe-- </option>
				<?php
					$arrEquipes = getListeEquipeTerrain();
			  foreach($arrEquipes as $equipe ) {
				$selected = $choix_equipe==$equipe['EQUIPE_TERRAIN'] ? ' selected="selected"' : "";
				echo '<option value="'.$equipe['EQUIPE_TERRAIN'].'" '.$selected.'>'.$equipe['EQUIPE_TERRAIN'].'</option>';	
				  }            
				?>
				</select>
				
				<?php
			// Début de la seconde liste
			
			if($choix_equipe != -1) { // AFFICHAGE du résultat (si on a fait un choix)
			?>
        	<p>Vous avez sélectionné : <?php echo $choix_equipe; ?> et  <?php echo $choix_cluster; ?> </p>
				
				<select class="col-lg-3" name="choix_cluster">
				  <option value="-1">--- Selectionnez un cluster ---</option>
					<?php
				  $arrCluster = getCluster($choix_equipe);
				  foreach( $arrCluster as $choix ){ 
					echo "<option value=" . $choix['CLUSTER'] . "'>". $choix['CLUSTER']."</option>";
				  }   
					} 				 
					?> 

				</select>
				<input type="submit" value="Valider" />		
				
				
			</form>				
			<!-- FIN des listes déroulantes-->
		
			
			<br/>
			<form method="post" action="liste_equipe.php" name="submit">
				<table border="">
				 <?php	
					if ($choix_cluster && $choix_equipe != -1)
						{
						 $arrAffichage = getAffichageListe($choix_equipe, $choix_cluster);
							//echo "<pre> DEBUG :";
							//var_dump($arrAffichage);

							//echo "</pre><br>";

							echo "<br> DEBUT DE LA BOUCLE ...";
							 foreach($arrAffichage as $A ) { 
								  echo "<br>" . print_r($A,true);
							 }									
						}
				 ?>
					</table>
				<input name="submit" type="submit" value="Afficher les clusters" >
				</form>
cependant je n'arrive pas à extraire les données avec ce code :
<?php	
					if ($choix_cluster && $choix_equipe != -1)
						{
						 $arrAffichage = getAffichageListe($choix_equipe, $choix_cluster);
							//echo "<pre> DEBUG :";
							//var_dump($arrAffichage);

							//echo "</pre><br>";

							echo "<br> DEBUT DE LA BOUCLE ...";
							 foreach($arrAffichage as $A ) { 
								  echo "<br>" . print_r($A,true);
							 }									
						}
				 ?>
pourriez vous m'aider svp

Re: Affichage des données issues de 2 listes déroulante dépendan

par or 1 » 24 déc. 2021, 13:18

si la variable est indispensable lors du traitement des 2 formulaires, il faut donc que la condition soit remplie dans les 2 formulaires. il faut donc déterminer le résultat de ce code, qu'est-ce qui, dans ce code, est indispensable pour que la condition soit remplie, et reproduire l'indispensable dans le second formulaire.

Re: Affichage des données issues de 2 listes déroulante dépendan

par toumaxille » 24 déc. 2021, 13:06

c'est a cette condition la,
<select name="choix_equipe" class="col-lg-3">
					<option value="-1"<?php if($choix_equipe==-1){ echo ' selected="selected"'; } ?>>-- Choisissez -- </option>
				<?php
					
					// connexion BD
					$sql=$pdo = new PDO('mysql:host=localhost;dbname=dblogin' ,'root','' );
					$sql = "SELECT EQUIPE_TERRAIN FROM tampon GROUP BY EQUIPE_TERRAIN";
					// ----------------
					// PREPARATION ET EXECUTION DE LA REQUETE
					$stmt_equipe = $pdo->prepare($sql);
					$stmt_equipe->execute();
					// ----------------
					while( $equipe = $stmt_equipe->fetch() ) // on récupère une ligne à la fois
					{ 
				?>
						<option  value="<?php echo $equipe['EQUIPE_TERRAIN']; ?>"<?php if($choix_equipe==$equipe['EQUIPE_TERRAIN']){ echo ' selected="selected"'; } ?>><?php echo $equipe['EQUIPE_TERRAIN']; ?></option>
				<?php
									
					}
					// ----------------
				?>
				</select>
				<input type="submit" value="Valider" />

Re: Affichage des données issues de 2 listes déroulante dépendan

par or 1 » 23 déc. 2021, 18:57

à quelle condition $choix_equipe ne vaut pas -1 ?

Re: Affichage des données issues de 2 listes déroulante dépendan

par toumaxille » 23 déc. 2021, 14:17

pourtant oui

$choix_equipe prend la valeur de l'équipe sélectionné après validation du bouton
$choix_cluster également mais sauf que $choix_équipe perd automatiquement sa valeur après validation

hors j'ai besoin de ces deux paramètres dans ma requêtes pour afficher mes données

Re: Affichage des données issues de 2 listes déroulante dépendan

par or 1 » 23 déc. 2021, 14:10

impossible

avec ce code :
if( isset($_POST['choix_equipe']) )
{
$choix_equipe = $_POST['choix_equipe']; // choix fait
} else {
$choix_equipe = -1;
}

// TRAITEMENT DU FORMULAIRE (si posté)
if( isset($_POST['choix_cluster']) )
{
$choix_cluster = $_POST['choix_cluster']; // choix fait
} else {
$choix_cluster = -1;
}

les 2 variables ont forcément une valeur.

Re: Affichage des données issues de 2 listes déroulante dépendan

par toumaxille » 23 déc. 2021, 14:05

justement a ce niveau j'ai aucun retour lorsque je fais un var_dump

Re: Affichage des données issues de 2 listes déroulante dépendan

par or 1 » 23 déc. 2021, 13:38

et que valent concrétement ces 2 variables passées dans cette ligne ?

Re: Affichage des données issues de 2 listes déroulante dépendan

par toumaxille » 23 déc. 2021, 13:35

Bonjour or 1

:choix_equipe' => $choix_equipe correspond à la variable sélectionné dans la première liste
:choix_cluster' => $choix_cluster correspond à la variable sélectionné dans la deuxième liste

Merci

Re: Affichage des données issues de 2 listes déroulante dépendan

par or 1 » 23 déc. 2021, 13:15

que valent les 2 variables passées dans cette ligne ?
$stmt_result->execute( array(':choix_equipe' => $choix_equipe ,':choix_cluster' => $choix_cluster) );

Affichage des données issues de 2 listes déroulante dépendan

par toumaxille » 23 déc. 2021, 13:08

Bonsoir chers tous,
je souhaiterai obtenir de l'aide auprès des expérimentés que vous êtes.
Après avoir quelques tutos et échanges sur le les forums, j'ai réussi à écrire un code qui permet à partir d'une première liste déroulante d'alimenter un second qui dépend entièrement de la première.
je bute de quelques semaines sur le fait d'importer les données depuis une table grâce à une sélection dans la second liste.
il s'agit d'afficher les données d'une table à travers deux listes déroulantes liées.
j'arrive à extraire les données pour la première et la deuxième liste déroulante . Mon soucis est que j'arrive pas à afficher mon tableau qui est le résultat des deux valeurs choisis dans les listes déroulantes. Je suis pas trop à l'aise avec javascript et ajax, voila pourquoi j'ai préféré résoudre ce souci avec seulement du PHP
Merci d'avance
<?php
	// Fichier entête 
	require_once("entete.php");
	
	// TRAITEMENT DU FORMULAIRE EQUIPE TERRAIN (si posté)
	if( isset($_POST['choix_equipe']) )
	{
		$choix_equipe = $_POST['choix_equipe']; // choix fait
	} else {
		$choix_equipe = -1;
	}	

	// TRAITEMENT DU FORMULAIRE (si posté)
	if( isset($_POST['choix_cluster']) )
	{
		$choix_cluster = $_POST['choix_cluster']; // choix fait
	} else {
		$choix_cluster = -1;
	}	

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
<link href="bootstrap/css/bootstrap-theme.min.css" rel="stylesheet" media="screen">
<script type="text/javascript" src="jquery-1.11.3-jquery.min.js"></script>
<link rel="stylesheet" href="style.css" type="text/css"  />
<title>PNRSS <?php print($userRow['user_email']); ?></title>
</head>

<body>

<nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
         
        </div>
		<div class="pull-left"><img src="images/logo-aigf.png"></div>
        <div id="navbar" class="navbar-collapse collapse">
          	<h3 class="text-center">
            PROGRAMME NATIONAL DE RECENSEMENT DES SITES ET STATIONS 
         	</h3>
          <ul class="nav navbar-nav navbar-right">
            
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
			  <span class="glyphicon glyphicon-user"></span>&nbsp;Utilisateur: <?php echo $userRow['user_email']; ?>&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="profile.php"><span class="glyphicon glyphicon-user"></span>&nbsp; Profile</a></li>
                <li><a href="logout.php?logout=true"><span class="glyphicon glyphicon-log-out"></span>&nbsp;Déconnection</a></li>
              </ul>
            </li>
           </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>


    <div class="clearfix"></div>
    	
    
<div class="container-fluid" style="margin-top:80px;">
	
    <div class="container">
    
    	<label class="h5">Bienvenue : <?php print($userRow['user_name']); ?></label>
        <hr />
        
        <h3 align="center">COLLECTE DES DONNEES DU PNRSS</h3>
        <hr />
       	<br/>
		<div>
			<!-- Liste deroulante connection db  -->
			
				
			
			

			<form method="post" action="liste_equipe.php">
				<!-- Liste déroulante des equipes -->
				<select name="choix_equipe" class="col-lg-3">
					<option value="-1"<?php if($choix_equipe==-1){ echo ' selected="selected"'; } ?>>-- Choisissez -- </option>
				<?php
					// ----------------
					// REQUETE SQL
					$sql=$pdo = new PDO('mysql:host=localhost;dbname=dblogin' ,'root','' );
					$sql = "SELECT EQUIPE_TERRAIN FROM tampon GROUP BY EQUIPE_TERRAIN";
					// ----------------
					// PREPARATION ET EXECUTION DE LA REQUETE
					$stmt_equipe = $pdo->prepare($sql);
					$stmt_equipe->execute();
					// ----------------
					while( $row = $stmt_equipe->fetch() ) // on récupère une ligne à la fois
					{ 
				?>
						<option value="<?php echo $row['EQUIPE_TERRAIN']; ?>"<?php if($choix_equipe==$row['EQUIPE_TERRAIN']){ echo ' selected="selected"'; } ?>><?php echo $row['EQUIPE_TERRAIN']; ?></option>
				<?php
					}
					// ----------------
				?>
				</select>
				<input type="submit" value="Valider" />
			</form>
			
			<form method="post" action="liste_equipe.php">
			
			<?php
			// -----------------------------------
			// AFFICHAGE du résultat (si on a fait un choix)
			if($choix_equipe != -1)
			{ 
			?>
			<p>Vous avez sélectionné : <?php echo $choix_equipe; ?></p>
			
		
			<?php
				// ----------------
				// on peut maintenant AFFICHER la liste des cluster de équipe
				$sql = "SELECT DISTINCT CLUSTER FROM tampon WHERE EQUIPE_TERRAIN = :choix_equipe ";
				// ----------------
				// PREPARATION ET EXECUTION DE LA REQUETE
				$stmt_cluster = $pdo->prepare($sql);
				$stmt_cluster->execute( array(':choix_equipe' => $choix_equipe) );
			?>
			<!-- deuxième liste déroulante-->
			
			<select class="col-lg-3" name="choix_cluster">
				<option>--- Selectionnez un cluster ---</option>
				<?php
					// ----------------
					while( $row = $stmt_cluster->fetch() ) // on récupère une ligne à la fois
					{  echo "<option value=" . $row['CLUSTER'] . "'>". $row['CLUSTER']."</option>";
					 } 
			} 
				?>
			
			
			
			</select>
				<input type="submit" value="Valider" />
				
			</form>
			
			
				<?php
				if($choix_cluster != -1 )
				{ ?>  
			       
				 
				 <?php
				// ----------------
				// on peut maintenant AFFICHER la liste des cluster de équipe
				
				$sql = "SELECT * FROM tampon WHERE EQUIPE_TERRAIN = :choix_equipe AND CLUSTER = :choix_cluster ";
				// ---------------  -
				// PREPARATION ET EXECUTION DE LA REQUETE
				$stmt_result = $pdo->prepare($sql);
				$stmt_result->execute( array(':choix_equipe' => $choix_equipe ,':choix_cluster' => $choix_cluster) );
					
				
				while ($row = $stmt_result->fetch() )
				
				{ 
					echo $row['EQUIPE_TERRAIN'] ;
					
				}
					
				}
			?>
				 
			 
				
				
			<!-- FIN deuxième liste déroulante-->
			
			
			<!-- FIN deuxième liste déroulante-->
				
			
			
			
						
			</div>
		<br/>
		<br/>
		
		</div>
		
		
       	 	  
    </div>

</div>

<script src="bootstrap/js/bootstrap.min.js"></script>

</body>
</html>