Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affichage d'un tableau venant de plusieurs requête

Comment grouper les résultats de plusieurs requête dans un echo

Sujet résolu
    17 avril 2022 à 18:15:16

    Bonjour, je souhaiterais extraire de plusieurs tables un champ (mas) et afficher le champ en question issu de plusieurs tables dans un seul et même tableau sur ma page web !

    $test1 = "SELECT mas FROM ruche1 ORDER BY stamp DESC LIMIT 10";
    $rResult1 = $oDb->query($test1);
    $aData1 = $rResult1->fetchAll();
    
    $test2 = "SELECT mas FROM ruche2 ORDER BY stamp DESC LIMIT 10";
    $rResult2 = $oDb->query($test2);
    $aData2 = $rResult2->fetchAll();
    
    echo '<table>';
    echo '<tr><th>poids ruche 1 </th><th>poids ruche 2</th></tr>';
    
    foreach ($aData1 as $donnees1)
    {
    echo '<tr><th>'.$donnees1['mas'].'</th></tr>';	
    }
    
    
    foreach ($aData2 as $donnees2)
    {
    echo '<tr><th></th><th>'.$donnees2['mas'].'</th></tr>';	
    }
    

    Ce code fonctionne presque ... voir copie d'écran ci dessous ce n'est que logiquement les données sont inscrites les unes en dessous des autres et pas comme je le souhaiterais sur la même ligne...


    Quelqu'un a t-il une idée (surement plus élégante que ce que j'essaye actuellement...) pour réaliser cela?

    J'aurais d'autres tables à afficher dans ce tableau mais pour le moment j'essaye uniquement avec 2 tables c'est déjà pas mal!

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      17 avril 2022 à 18:38:34

      « Quelqu'un a t-il une idée »

      Oui. Si les champs contenus dans ruche1 et ruche2, ces deux tables ne doivent en faire qu'une. Tu peux ajouter un champ pour différencier les ruches. Sinon, chaque fois que tu ajoutes une ruche, tu crées une nouvelle table, et c'est pas bien du tout pour extraire les données, faire de stats, etc.

      • Partager sur Facebook
      • Partager sur Twitter
        18 avril 2022 à 9:58:59

        Merci, mais n'y a t-il pas une autre solution que de tout regrouper mes différentes tables en une seule?

        Ici il s'agit juste d'affichage de données issues de différentes tables....

        Merci

        • Partager sur Facebook
        • Partager sur Twitter
          18 avril 2022 à 23:14:26

          Bonjour je rejoins ce que t'as dis domi

          il n'est pas question de faire autrement car c'est mal fait depuis le depart

          tu devrais n'avoir qu'une table ruche avec un id unique pour chacune de tes ruches ensuite les données relatives a une ruche serait sur plusieurs table ou dans la meme ca depend de ce qu'il y a comme donnée. En une requete tu aurais ce dont tu as besoin et faire ton tableau serait plus simple

          Mais si tu souhaites toujours persister comme ça 

          ca depend si des tableaux ont la meme taille ce qui m'étonnerait il suffirait de faire un parcours en utilisant le key du foreach de l'un pour avoir la case de l'autre

          foreach($array as $key => $val)

          val contient le tableau actuel

          $array_2[$key] contient l'autre

          dans le cas ou ils n'ont pas la meme taille je ferais un for sur le plus grand tableau

          tu peux mettre le resultat des count dans une variable pour ne pas faire le meme appel deux fois

          for($i = 0; $i < count($array) > count($array_2)? count($array) : count($array_2); $i++)

          ensuite a l'affichage tu verifirais simplement si $i est superieur a la taille d'un des tableau alors le td de cette ligne sera vide sinon il sera remplis

          L'exemple

          <?php
          	$array = [20,30];
          	$array_2 = [10,40,30];
          
          	$array_size = count($array);
          	$array_2_size = count($array_2);
          
          	echo 
          	"
          		<table>
          			<thead>
          				<th>
          					<td><Ruche 1/td>
          					<td>Ruche 2</td>
          				</th>
          			</thead>
          
          			<tbody>
          	";
          
          
          
          	for($i = 0; $i < max($array_size,$array_2_size);$i++)
          	{
          		echo "<tr>";
          		echo $i < $array_size ? "<td>{$array[$i]}</td>" : "<td></td>";
          		echo $i < $array_2_size ? "<td>{$array_2[$i]}</td>" : "<td></td>";
          		echo "</tr>";
          	}
          
          	echo 
          	"
          			</tbody>
          
          		</table>
          	";



          -
          Edité par zvheer 19 avril 2022 à 0:14:58

          • Partager sur Facebook
          • Partager sur Twitter

          yasakani no magatama

            19 avril 2022 à 8:53:59

            Merci

            Je suis en train de regarder cela.

            J'ai réussi à assembler deux tables dans un tableau un peu manuellement pour le moment... 

            Il me faut encore l'automatiser.

            J'en suis là :

            $test1 = "SELECT stamp,mas FROM ruche1 ORDER BY stamp DESC LIMIT 10";
            $rResult1 = $oDb->query($test1);
            $aData1 = $rResult1->fetchAll();
            
            $test2 = "SELECT mas FROM ruche2 ORDER BY stamp DESC LIMIT 10";
            $rResult2 = $oDb->query($test2);
            $aData2 = $rResult2->fetchAll();
            
            
            
            echo '<table>';
            echo '<tr><th>Date :</th> <th>Poids ruche 1:</th><th>Poids ruche 2:</th></tr>';
            
            
            foreach ($aData1 as $donnees1)	{}
            
            
            foreach ($aData2 as $donnees2)
            {
            
            echo '<tr><th>'.$donnees1['stamp'].'</th><th>'.$donnees1['mas'].'</th><th>'.$donnees2['mas'].'</th></tr>';	
            }
            

            Je n'arrive pas à récupérer directement  les données contenues dans les tableaux $adata1 et $aData2 ... un print_r($aData1) ; m'affiche bien le contenu du tableau mais je n'arrive pas à faire un echo dessus d'où la ligne :

            foreach ($aData1 as $donnees1)	{}

            Ce qui n'est pas trop top je trouve, il doit bien y avoir un moyen de faire un echo directement sur le tableau $aData1? non?

            Merci encore pour les idées

            -
            Edité par GillesMangin-Voirin 19 avril 2022 à 9:02:21

            • Partager sur Facebook
            • Partager sur Twitter
              19 avril 2022 à 14:12:21

              Bonjour,

              Je reprends la remarque des autres sur le fait que tu as un problème de conception ... Cf. ma remarque sur ton autre sujet.

              Sinon, concernant cette question, quel serait l'affichage idéal ("magique") que tu aimerais obtenir ?

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

              Affichage d'un tableau venant de plusieurs requête

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown