Boucle WHILE
t671
Messages postés
1476
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
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 :
J'ai comme message Query was empty.
$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.
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) ?
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 ..................
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 ..................