Boucle WHILE

t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
 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.

//***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

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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
0
t671
 
Merci, mais peux-tu m'en dire un plus comment faire .......... !
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
OK ! Je vois ! Je te tiens au courant ...............
Merci
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
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.
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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) ?
0
t671
 
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 ..................
0