Bonjour à tous !

Je suis actuellement sur un projet de gestion de demandes d'équipements pour une entreprise.

Tout d'abord voilà une description de ce que je voudrais réaliser (et qui me pose problème) :

Je dispose d'une BD SQL_Server 2005 contenant 2 tables : D_Equipement et D_Demande. Dans la table des demandes on retrouve l'ID de l'équipement associé.

Une demande est associée à un équipement donc, et chaque équipement peut avoir un parent (système d'un arbre hiérarchique)

ex : Un PC a pour fils PC_Fixe et PC_Portable, qui ont pour fils les différentes marques dont je ne citerais pas le nom



A côté, je dispose de deux pages PhP liste_equipements.php et liste_demandes.php qui font, comme leur nom l'indique, la liste des équipements et des demandes.

Jusque là tout va bien...

Dans la page liste_equipements.php, on peut liste les demandes pour un équipement précis (ce qui fait office de filtre).

Je récupère donc l'ID de l'équipement dans une variable $_GET comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
	echo '<td style="width=200px;"><input type="button" value="Liste des Demandes de cet Equipement" onClick="javascript:document.location.href=\'liste_demandes.php?dem_equipement='.$id_equip.'\'" /></td>';

De l'autre côté je récupère cette variable afin d'afficher les demandes pour l'équipement.

Mon problème est que je voudrais lister la liste des demandes des fils et cliquant sur un parent.

J'ai fait actuellement ceci :

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
32
33
34
	if(isset($_GET[dem_equipement]))
	{
		$tests_enfants=mssql_query('SELECT id FROM D_Equipement WHERE id_parent='.$_GET[dem_equipement]);
 
 
		//Tant que l'objet a des enfants on va boucler et passer la main à son enfant (pour savoir si lui même à des enfants)
		while($tests_enfants!==true)
 
		{
			$recup_id_enfant=mssql_fetch_array($tests_enfants);
 
			if(isset($recup_id_enfant[id]))
			{
 
				foreach($recup_id_enfant as $value)
				{
					$_GET[dem_equipement]=$value;
				}
			}
			else
			{
				break;
			}
 
	$tests_enfants=mssql_query('SELECT id FROM D_Equipement WHERE id_parent='.$_GET[dem_equipement]);
 
 
					}				
 
	$query = mssql_query('SELECT * FROM D_Demande
				WHERE id_equipement = '.$_GET[dem_equipement].'
				ORDER BY date_crea
			');				
}

Comme indiqué, je récupère le fils et j'affiche les demandes du fils.

Ça marche très bien...sauf lorsqu'un parent a deux fils (ou plus), car avec cette méthode je récupère les demandes pour un seul fils.

Donc si vous avez des idées pour résoudre mon problème, je suis tout ouïe