Boucle WHILE

Bonjour,

J'ai une base de données généalogique où tous les éléments sont reliés entre eux. Je veux afficher tous les éléments (style arbre généalogique). Mais je n'arrive pas à boucler jusqu'à fin de lecture de la base.

//***je sors mon premier individu, le plus ancien. « nom » = nom famille de l'individu.

$select1 = 'SELECT * FROM individus WHERE nom = "'.$nom.'" ORDER BY RIGHT(date_naissance,4)';
$result1 = mysql_query($select1,$link) or die ('Erreur : '.mysql_error() );
$row1 = mysql_fetch_array($result1);
echo ' .......................

//***** rech des conjoints ******

$selectA = 'SELECT id,nom,prenom,date_naissance,date_dc,sexe FROM individus WHERE num_indiv LIKE "'.$row1['num_cj_1'].'"';
$resultA = mysql_query($selectA,$link) or die ('Erreur : '.mysql_error() );

while ($rowA = mysql_fetch_array($resultA));
{
//***extraction des données du conjoint
$select11 = 'SELECT id,nom,prenom,date_naissance,date_dc,sexe FROM individus WHERE num_indiv LIKE "'.$row1['num_cj_1'].'"';
$result11 = mysql_query($select11,$link) or die ('Erreur : '.mysql_error() );
$row11 = mysql_fetch_array($result11);
Echo `................. "conjoint".........

//*****rech enfant avec le 1° conjoint trouvé******
$select2 = 'SELECT * FROM individus WHERE num_pere = "'.$row1['num_indiv'].'" AND num_mere = "'.$row11['num_indiv'].'" ORDER BY RIGHT(date_naissance,4)';
$result2 = mysql_query($select2,$link) or die ('Erreur : '.mysql_error() )
while ($row2 = mysql_fetch_array($result2))
{
Echo `........ "enfant" ...............
}
$row1['num_cj_1'] = $row2['num_cj_1'];
}

Comme ceci, la boucle ne s'exécute qu'une fois.
C'est-à-dire que j'ai mon premier individu, son conjoint, ses enfants. Et c'est tout !!!!!
Je voulais que la boucle continue de façon à trouver les conjoints des enfants, leurs enfants, leurs conjoints, leurs enfants .....................
Merci pour vos solutions !

6 réponses

  1. Je vais finalement essayer de faire le script en utilisant des fonctions.
    A l'initialisation de mon script, je recherche l'indidu le + éloigné. Puis j'appelle une fonction qui recherchera les conjoints, puis une fonction qui recherchera un enfants, puis retour vers la fonction cjt, puis fonction enfant ..................
    1. Je ne vois pas de raison pour que l'ajout d'une boucle modifie l'exécution de la première requête. L'erreur vient peut-être d'une autre requête ?

      Peux tu nous montrer ton code en entier ainsi que le message d'erreur complet (avec le numéro de ligne de l'erreur) ?
      1. Salut et excuse moi Pitet, mais tu n'aurais pas une solution à m'apporter car je ne trouve pas ! Je ne vois pas pourquoi la boucle ne se fait pas ........ !
        Merci.
        1. Si je met une boucle au début :

          $select1 = 'SELECT * FROM individus WHERE nom = "'.$nom.'" ORDER BY RIGHT(date_naissance,4)'; 
          $result1 = mysql_query($select1,$link) or die ('Erreur : '.mysql_error() );
          while ($row1 = mysql_fetch_array($result1));
          {
          echo '.............
          //***** rech des conjoints ******

          $selectA = 'SELECT id,nom,prenom,date_naissance,date_dc,sexe FROM individus WHERE num_indiv LIKE "'................


          J'ai comme message Query was empty.
          1. Merci, mais peux-tu m'en dire un plus comment faire .......... !
            1. OK ! Je vois ! Je te tiens au courant ...............
              Merci
          2. Salut,

            Il faut simplement ajouter une boucle pour parcourir les résultats de ta première requête au lieu de faire un fetch unique.

            Bonne journée