Lire et afficher la base complète php

Résolu/Fermé
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 10 déc. 2018 à 17:26
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 - 11 déc. 2018 à 11:20
Bonjour,

Je veux reprendre un ancien code, mais ça fait longtemps que je n'ai plus programmé ..............

1. Dans un premier temps, le code affiche un individu
2. Puis, il affiche ses épouses (utilisation d'un tableau et de la boucle for).
3. Puis j'affiche les enfants qui sont associés au premier individu (et aux épouses bien sûr)

Arrivé là, je voudrais afficher les épouses du point 3, puis leurs enfants, puis les épouse de ces derniers ...........
Je pense que je devrais faire une boucle avant le point 2 pour balayer toute la base, mais je ne sais comment faire !?

$nom = $_GET['nom']; 

//******1° génération***********	

if ($nom == 'H')
$select1 = 'SELECT * FROM individus WHERE nom = "'.$nom.'" ; 
$result1 = mysql_query($select1) or die ('Erreur : '.mysql_error() );
$row1 = mysql_fetch_array($result1);

if ($row1['sexe'] == 'M')
{	echo '<img src="../images/garcon.gif">';	}
else
{	echo '<img src="../images/fille.gif">';	}
		
echo '<a href="index.php?page=fiche_indiv&famille='.$row1['famille'].'&id='.$row1['id'].'" target="_blank">1.  <i>'.$row1['nom'].' '.$row1['prenom'].'</i></a>';
if ($row1['surnom'] != '')
{	echo ' (dit '.$row1['surnom'].')'; }
echo ' (';
echo SUBSTR($row1['date_naissance'], -4);	
echo '-';
echo SUBSTR($row1['date_dc'], -4);	
echo ') ';

	//******** Recherche et affichage conjoints

$tonarray = array($link);

$marg_1 = substr($row1['date_mariage_1'], -4);
$marg_2 = substr($row1['date_mariage_2'], -4);
$marg_3 = substr($row1['date_mariage_3'], -4);
$marg_4 = substr($row1['date_mariage_4'], -4);
	
$tonarray[0]=array("mariage" => "$marg_1" ,"date_mariage" => $row1['date_mariage_1'] , "conjoint" => $row1['num_cj_1']);
$tonarray[1]=array("mariage" => "$marg_2" ,"date_mariage" => $row1['date_mariage_2'] , "conjoint" => $row1['num_cj_2']);	
$tonarray[2]=array("mariage" => "$marg_3" ,"date_mariage" => $row1['date_mariage_3'] , "conjoint" => $row1['num_cj_3']);	
$tonarray[3]=array("mariage" => "$marg_4" ,"date_mariage" => $row1['date_mariage_4'] , "conjoint" => $row1['num_cj_4']);	

sort($tonarray);
	
for($i=0; $i<=3; $i++)
{
	if ($tonarray[$i]['conjoint'] != "") 
	{	
		$query4 = 'SELECT id,num_indiv,famille,nom,prenom,sexe,date_naissance,date_dc FROM individus WHERE num_indiv LIKE '.$tonarray[$i]['conjoint'].' ';
		$result4 = mysql_query($query4) or die(mysql_error());
		$row4 = mysql_fetch_array($result4);

		echo '<b>X</b>  '.$tonarray[$i]['mariage'].'';
	  		
		if ($row4['sexe'] == 'M')
		{	echo '<img src="../images/garcon.gif">';	}
		else
		{	echo '<img src="../images/fille.gif">';	}
		echo '<a href="index.php?page=fiche_indiv&famille='.$row4['famille'].'&id='.$row4['id'].'" target="_blank"><i>'.$row4['nom'].' '.$row4['prenom'].'</i></a>';
		echo ' (';
		echo SUBSTR($row4['date_naissance'], -4);	
		echo '-';
		echo SUBSTR($row4['date_dc'], -4);	
		echo ') ';
	}
}	
	
//******2° génération***********	

if ($row1['sexe'] == 'M')
{	$select2 = 'SELECT * FROM individus WHERE num_pere = "'.$row1['num_indiv'].'" ORDER BY RIGHT(date_naissance,4)';	}
elseif ($row1['sexe'] == 'F')
{	$select2 = 'SELECT * FROM individus WHERE num_mere = "'.$row1['num_indiv'].'" ORDER BY RIGHT(date_naissance,4)';	}
$result2 = mysql_query($select2) or die ('Erreur : '.mysql_error() );

while ($row2 = mysql_fetch_array($result2)) 
{	
	echo '<div style="margin-left:60px">';
	if ($row2['sexe'] == 'M')
	{	echo '<img src="../images/garcon.gif">';	}
	else
	{	echo '<img src="../images/fille.gif">';	}
		
	echo '<a href="index.php?page=fiche_indiv&famille='.$row2['famille'].'&id='.$row2['id'].'" target="_blank">2.  <i>'.$row2['nom'].' '.$row2['prenom'].'</i></a>';

	echo ' (';
	echo SUBSTR($row2['date_naissance'], -4);	
	echo '-';
	echo SUBSTR($row2['date_dc'], -4);	
	echo ') ';	

}
A voir également:

4 réponses

yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
10 déc. 2018 à 19:17
bonjour, si tu veux faire cela dans l'ordre des générations, je pense que le plus simple, c'est, quand tu travailles sur une génération, de préparer une liste avec les individus de la génération suivante.
tu pourrais par exemple faire une fonction qui a une liste d'individus en paramètre, fait tout le travail 1., 2., 3. pour chacun de ses individus, et retourne la liste des individus de la génération suivante.
le programme principal appellera cette fonction pour une liste incluant l'individu de départ, puis, tant que la fonction retourne une liste non vide, rappelle la fonction en lui passant la liste retournée.
0
Heuuuu, je suis désolé mais je n'ai rien compris. Quelle fonction php utiliser ?
0
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
10 déc. 2018 à 19:32
une fonction que tu vas créer.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
10 déc. 2018 à 20:09
Bonjour,

Il ne faut pas code chaque génération une par une .... et éviter au maximum de lancer des requêtes dans des boucles.
Ce qu'il te faut.. c'est extraire toutes les données de ta bdd
Boucler dessus afin de générer un array correctement organisé
Utiliser cet array pour générer l'affichage voulu (via du récursif )
Mais bon.. le mieux lorsque l'on veut gérer un arbre généalogique (ou toute structure en forme d'arbre...) c'est déjà de concevoir la bdd correctement et utiliser la gestion d'arbre intervallaire.
https://stephanelegrand.wordpress.com/2009/01/03/gestion-dune-structure-darbre-sous-mysql/
https://sqlpro.developpez.com/cours/arborescence/





0
t671 Messages postés 1419 Date d'inscription lundi 25 février 2008 Statut Membre Dernière intervention 26 février 2024 11
11 déc. 2018 à 11:20
Merci à tous !
L'exemple que donne Jordane est très intéressant ! Mais qui implique une refonte de la base Mysql pour coller au script. A voir ...............
Moi qui pensais imbriquer des boucles dans des boucles .................
0