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. 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.
  2. 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. 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. Salut !
        Explique comment tu veux afficher tes tableaux, genre, les colonnes, les lignes ??
        Et le test if(empty()), c'est pourquoi faire au juste ?