Boucle WHILE

Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 16 nov. 2014 à 10:49
 t671 - 21 nov. 2014 à 14:44
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
17 nov. 2014 à 11:24
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
Merci, mais peux-tu m'en dire un plus comment faire .......... !
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
17 nov. 2014 à 14:38
OK ! Je vois ! Je te tiens au courant ...............
Merci
0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
Modifié par t671 le 17/11/2014 à 18:10
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 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
20 nov. 2014 à 09:37
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 lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
21 nov. 2014 à 13:12
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
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