Page 1 sur 1

Boucles foreach imbriquées

Posté : 03 juil. 2019, 14:47
par zazzou
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

Re: Boucles foreach imbriquées

Posté : 03 juil. 2019, 16:25
par Spols
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>';

           	
        }		

Re: Boucles foreach imbriquées

Posté : 03 juil. 2019, 16:40
par zazzou
MERCI !!!
J'en avais ras le bol de me prendre la tête avec ça et c'est parfait !