[RESOLU] Boucles foreach imbriquées

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 : [RESOLU] Boucles foreach imbriquées

Re: Boucles foreach imbriquées

par zazzou » 03 juil. 2019, 16:40

MERCI !!!
J'en avais ras le bol de me prendre la tête avec ça et c'est parfait !

Re: Boucles foreach imbriquées

par Spols » 03 juil. 2019, 16:25

dans ton 2eme foreach imbriqué parcours $tableau[$prenom['pseudo']] plutot que tableau et plus besoin de 3eme foreach.
 //la première col contient la liste des pseudos
        foreach($donnees_prenoms as $prenom)
        {
            echo '<tr><td>'.$prenom['pseudo'].'</td>';
     
            foreach ($tableau[$prenom['pseudo']] as $key => $elements)
          {
            echo ' <td>' . $elements . '</td>';
            }
           	
            echo '</tr>';

           	
        }		

Boucles foreach imbriquées

par zazzou » 03 juil. 2019, 14:47

Bonjour,
Je récupére des données dans une base MySQL et j'aimerai les afficher sous la forme d'un tableau mais cela ne marche pas comme je veux.
Je souhaiterais arriver à un tableau avec :
  • Première ligne : les numéros de rencontre
  • Première colonne : les pseudos
  • Et a l'intérieur : si les pseudos sont présents ou absents pour chacune des rencontres
C'est à dire :
Image
http://zupimages.net/viewer.php?id=19/27/2l92.png

Avec le code ci-ap je n'arrive pas à obtenir cela exactement. J'arrive à obtenir :
  • Première ligne : les numéros de rencontre
  • Première colonne : les pseudos
  • Et a l'intérieur : les présences et absences de TOUS les pseudos sur chaque ligne et non pas PAR pseudos
C'est à dire :
Image
http://zupimages.net/viewer.php?id=19/27/b170.png

Le code :
<?php
	if ($_SESSION['id_user'] == $_GET['user']) 
	{
		$nom_team = $_SESSION['equipe'];

		$presence = $bdd->prepare('
		SELECT
		    mm.pseudo,
		    m.id,
		    mp.psence
		FROM
		    matchs m
		INNER JOIN
		    matchs_presence mp ON m.id = mp.id_match
		INNER JOIN
		    matchs_membres mm ON mm.id = mp.id_utilisateur
		WHERE 
			mm.id_equipe = ?
	    ');	

	    $presence ->execute(array($nom_team));

		//var_dump($presence);


		//requete pour avoir les pseudos
	    $requete_prenoms = $bdd->prepare('SELECT pseudo FROM matchs_membres WHERE id_equipe = ?');
	    $requete_prenoms ->execute(array($nom_team));
		$donnees_prenoms = $requete_prenoms->fetchAll(PDO::FETCH_ASSOC);    
		   
		//requete pour avoir les rencontres
	    //$requete_rencontres = $bdd->prepare('SELECT * FROM matchs WHERE id_equipe = ? AND datematch > CURDATE() ');
	    $requete_rencontres = $bdd->prepare('SELECT * FROM matchs WHERE id_equipe = ? ');
	    $requete_rencontres ->execute(array($nom_team));
	    $donnees_rencontres = $requete_rencontres->fetchAll(PDO::FETCH_ASSOC);

		  
	    $tableau = array();

	    foreach($presence as $donnees)
	    {
	        if (!isset($tableau[$donnees['pseudo']]))
	        {
	            $tableau[$donnees['pseudo']] = array();
	        }
	        $tableau[$donnees['pseudo']][$donnees['id']] = $donnees['psence'];
	    }
		 
		/*echo '<pre>';
		var_dump($tableau);
		echo '</pre>';*/

		//partie affichage du tableau
		    echo '
			<div class="table-responsive">          
				<table class="table">
		                <tr>
		            <td></td>';
		 
		    //la première ligne contient la liste des rencontres
		    foreach($donnees_rencontres as $rencontre)
		    {
		        echo '<td>Rencontre '.$rencontre['id'].'</td>';
		    }    
		    echo '</tr>';
		 
		 
		    //la première col contient la liste des pseudos
		    foreach($donnees_prenoms as $prenom)
		    {
		        echo '<tr><td>'.$prenom['pseudo'].'</td>';
		 
		        foreach ($tableau as $key => $value)
		        {
		          		foreach ($value as $valeur => $elements)
					{
						echo ' <td>' . $elements . '</td>';
					}
		 
		        }
		       	
		        echo '</tr>';

		       	
		    }		 
		    echo '</table></div>';



	}//fin if user
?>
merci pour votre aide