Boucle while
t671
Messages postés
1476
Date d'inscription
Statut
Membre
Dernière intervention
-
t671 Messages postés 1476 Date d'inscription Statut Membre Dernière intervention -
t671 Messages postés 1476 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je n'arrive pas a créé une boucle qui va lire toute la base MySQL.
Voilà ce que je voudrais faire :
1. Je lis et j'affiche le premier individu
2. Je lis et j'affiche son conjoint
3. Je lis et j'affiche ses enfants
4. Je lis et j'affiche le conjoint des enfants
5. Je lis et j'affiche les enfants des enfants
Mais je n'arrive à exécuter que les points 1,2 et 3. Et ensuite, ça boucle sur le point 3 !
Merci de m'aider à trouver mon erreur ......
Je n'arrive pas a créé une boucle qui va lire toute la base MySQL.
Voilà ce que je voudrais faire :
1. Je lis et j'affiche le premier individu
2. Je lis et j'affiche son conjoint
3. Je lis et j'affiche ses enfants
4. Je lis et j'affiche le conjoint des enfants
5. Je lis et j'affiche les enfants des enfants
Mais je n'arrive à exécuter que les points 1,2 et 3. Et ensuite, ça boucle sur le point 3 !
//Je sélectionne et j'affiche le 1° individu $select = 'SELECT * FROM individus WHERE ............... $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_array($result); Echo ................. //Je recherche le conjoint de l'individu if (!empty($row['num_cj'])) { echo ............} // création d'une boucle pour lire toute la base $select1 = 'SELECT * FROM individus .......... $result1 = mysql_query($select1,$link) or die ('Erreur : '.mysql_error() ); while ($row1 = mysql_fetch_array($result1)) { //Je recherche et j'affiche les enfants de l'individu $select2 = 'SELECT * FROM individus WHERE num_pere = "'.$row['num_indiv'].'" ............. $result2 = mysql_query($select2,$link) or die ('Erreur2 : '.mysql_error() ); $total2 = mysql_num_rows($result2); // = nombre enfant(s) while ($row2 = mysql_fetch_array($result2)) { echo ................ //je recherche le conjoint des enfants if (!empty($row2['num_cj'])) {............} $total2 = $total2 - 1; // nombre total d'enfants - 1 } }
Merci de m'aider à trouver mon erreur ......
1 réponse
Je pense que faire un SELECT plus large et utiliser un foreach sera beaucoup efficace dans ce cas.
Je ne sais pas comment est conçue ta base, normalement tu devrais avoir une clé primaire et une clé secondaire entre tes tables, et de ce fait pouvoir les relier en SQL avec des INNER JOIN.
Ensuite le but étant de récupérer ta requête dans un tableau et de parcourir ce tableau qui contiendrais plus d'informations. En gros réunir les étapes.
foreach($table as $ligne)
{
echo $ligne['individu'];
echo $ligne['conjoint'];
...
}
Pour résumer mon idée : au lieu de faire des while dans des while, il faut améliorer/préciser tes requêtes SQL pour avoir moins de travail à faire en PHP (cela demande juste une architecture BDD propre).
Je ne sais pas comment est conçue ta base, normalement tu devrais avoir une clé primaire et une clé secondaire entre tes tables, et de ce fait pouvoir les relier en SQL avec des INNER JOIN.
Ensuite le but étant de récupérer ta requête dans un tableau et de parcourir ce tableau qui contiendrais plus d'informations. En gros réunir les étapes.
foreach($table as $ligne)
{
echo $ligne['individu'];
echo $ligne['conjoint'];
...
}
Pour résumer mon idée : au lieu de faire des while dans des while, il faut améliorer/préciser tes requêtes SQL pour avoir moins de travail à faire en PHP (cela demande juste une architecture BDD propre).
t671
Messages postés
1476
Date d'inscription
Statut
Membre
Dernière intervention
11
Merci !