Bonjour,

je galère sur un problème et même en ayant lu quelques posts sur le forum, je ne trouve toujours pas la solution.

J'ai deux tables :
- document : id, nom, lien ...
- type_document : id, nom, id_parent

Chaque document appartient à un type.
Un type peut-être le sous type d'un autre type (on aura donc id_parent = id du sur-type, ou le type parent d'un sous type donc (et si aucun sous-type, id_parent = 0).

J'aimerai afficher la liste de mes documents classés par type et sous-type.

Un exemple pour illustrer :

Type europe
--- doc Schengen
- Type France
--- doc Paris
--- doc Lyon

Type amérique
--- doc Canada
--- doc Mexique
Sauf que pour le moment avec mon code je n'obtiens que :
- Type France
--- doc Paris
--- doc Lyon

Type amérique
--- doc Canada
--- doc Mexique
Et pas le premier type avec ses documents associés. On passe directement à son premier sous-type.

Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
$reqdoc = mysql_query("SELECT DISTINCT T.id_type_document,T.nom_type_document,T.id_parent
FROM type_document T JOIN document D
ON T.id_type_document = D.id_type_document
WHERE D.id_projet = $projet AND T.id_parent = 0
ORDER BY T.nom_type_document;");
while ($data = mysql_fetch_array($reqdoc))
{
	$type = $data['nom_type_document'];
	$id = $data['id_type_document'];
	$parent = $data['id_parent'];
 
	// On récupère les sous types de ce type
	$reqsstype = mysql_query("SELECT id_type_document,nom_type_document FROM type_document WHERE id_parent = $id;");
	$sstype = mysql_fetch_array($reqsstype);
	// S'il y a un sous type (ou +)
	if(mysql_num_rows($reqsstype) != 0)
	{
		echo '<tr><td><h4>&nbsp;&nbsp;&nbsp;&nbsp;'.$type.$sstype['nom_type_document'].'</h4></td></tr>';
		$id = $sstype['id_type_document'];
	}
	else echo '<tr><td><h4>'.$type.'</h4></td></tr>';
	$req = mysql_query("SELECT nom_document,id_document,etat_document,lien_document
FROM document WHERE id_type_document = $id;");
	while ($donnees = mysql_fetch_array($req))
	{
		$nomdoc = $donnees['nom_document'];
		echo '<tr><td>><span class="blanc"> '.$nomdoc.'</span> ('.$donnees['etat_document'].')</td>';
		echo '<td>&nbsp;&nbsp;<a href="download.php?dossier='.$dossier.'&filename='.$donnees['lien_document'].'">Télécharger</a></td></tr>';
	}
}
J'ai essayé plein de méthodes en vain : faire des while "il y a un sous type" mais du coup ça ne m'affichait que les documents du dernier sous-type s'il en existait, et rien d'autre. A noter également qu'il peut y avoir plusieurs étages de types :
- type / sous type / sous sous type / sous sous sous type etc ...

J'ai essayé de voir en récupérant l'ancien nom de type et en comparant avec le nouveau mais rien non plus.

Enfin bon, un peu d'aide ferait plaisir parce que là ...