Boucle WHILE
t671
Messages postés
1478
Date d'inscription
Statut
Membre
Dernière intervention
-
t671 -
t671 -
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.
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 !
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
-
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 -
-
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. -
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. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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) ? -
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 ..................