2 tableaux et 2 while

Résolu
Bonjour,

Dans mon script, je veux afficher 2 tableaux côte à côte. Pour chaque tableau j'ai une boucle while. Je n'arrive pas à arrêter la première boucle (du 1° tableau) avavnt d'afficher la 2° tableau.
Ce que j'ai écrit :
echo '<div class="tableau_1">';
$select = 'SELECT * FROM ................
echo '<table><tr>';
while ($row = mysql_fetch_array($result)) 
{
............................
if (empty($row['num_pere']))
{
echo '</tr></table>';
echo '</div>';
} }
echo '<div class="branche_2">';

$select = 'SELECT * FROM ....................
echo '<table><tr>';
while ($row8 = mysql_fetch_array($result)) 
{
............................
if (empty($row8['nom']))
{ 
echo '</tr></table>';
echo '</div>';
exit; 
}}

Quand je teste, la boucle sur le tableau_1 est ok, puis la boucle continue à vide sur le tableau_1, et enfin le boucle sur le tableau_2 est ok.
Comment faire pour éviter la boucle à vide du tableau_1 ?
Merci.

5 réponses

  1. Salut !
    Explique comment tu veux afficher tes tableaux, genre, les colonnes, les lignes ??
    Et le test if(empty()), c'est pourquoi faire au juste ?
    1. Merci JooS.
      J'avais commencé par faire un tableau par script, et ils fonctionnaient très bien.
      J'avais écrit :
      while ($row = mysql_fetch_array($result)) 
      {
      ............................
      if (empty($row['num_pere']))
      { exit; }
      

      Ainsi, quand je n'avais plus d'enregistrement, le tableau s'arrêtait. Et j'avais tout ce que je demandais.
      Mais en affichant les deux tableaux dans le même script, si je fais un exit à la fin du premier tableau, je n'ai pas le 2°.
      Normalement, je pensais que dans une boucle while, si il n'y a plus d'enregistrement, la boucle seterminait .......
      Ou alors, il faudra que je revoie mon
      $select = 'SELECT * FROM ................
      avant mon while. C'est lui qui doit être mauvais ou mal placé. Pourtant, je recherche un critère dans toute la base, donc ........... !!!!???
      1. Pourquoi tu ne place pas
        echo '</tr></table>';
        echo '</div>';
        à la fin de ta boucle? (pas dedans)
        Dans tous les cas tu va devoir le mettre, et 1 fois.
        1. Si la requête retourne quelque chose, alors il va rentrer dans la boucle, ce qui affichera au moins une ligne !
          Le empty de tout a l'heure, je vois toujours pas son utilité, sauf si dans ta BD, tu as des "num_pere" vide, ce qui n'est pas logique !

          $select = 'SELECT * FROM ................';
          $select2 = 'SELECT * FROM ....................';
          
          echo '<div class="tableau_1">';
          echo '<table>';
          while ($row = mysql_fetch_array($result)) 
          {
          echo '<tr><td>'.$row['num_pere'].'</td></tr>';
          }
          echo '</table>';
          echo '</div>';
          
          
          echo '<div class="branche_2">';
          echo '<table>';
          while ($row8 = mysql_fetch_array($result)) 
          {
          echo '<tr><td>'.$row8['nom'].'</td></tr>';
          }
          echo '</table>';
          echo '</div>';

          1. Je pense que le empty sert juste pour afficher le </table>.
            Mais il vaut mieux ne pas le laisser dans la boucle!
            Ta version semble plus correcte.