probleme sur une fonction

Mammouth du PHP | 1311 Messages

27 juin 2005, 19:35

salut
j'ai fait une fonction qui me permet d'afficher l'arborescence de mon site en testant si une page est un noeud ou non.
mon probleme vient du fait que la derniére feuille relatif a un noued n'est pas afficher
exemple
index est un noeud
et bateau,planche à voile, surf sont des feuilles

ma fonction retournera que
bateau et planche à voile

voici ma fonction
function arbre($id,$table,$form,$connect){
if(!isset($connect) or $connect==false)
	{
		echo 'connexion refusée';
	}
else{
		$res0=mysql_query('select * from '.$table.' where id='.$id.'') or die ("Erreur:".mysql_error());//on prend les info de la page mère
		$res1=mysql_fetch_array($res0);
		if($res1['level']==0)
			{
					echo '<ul><li id="racine">site</li>';//empeche de remonté trop haut
			}		
			else
			{
					echo '<li id="racine"><a href='.$_SERVER['PHP_SELF'].'?id='.$res1['level'].'>'.$res1['nom'].'</li></a>';//affichage mère
			}
		$res2=mysql_query('select * from '.$table.' where bord_gauche > "'.$res1['bord_gauche'].'" and bord_droit < "'.$res1['bord_droit'].'" and level="'.$res1['id'].'"') or die ('Erreur:'.mysql_error());
		$res3=mysql_fetch_array($res2);
		if($form==1){//si $form==1 alors on est dans le cas de l'exploreur pour creation
			while($res3=mysql_fetch_array($res2))//affichage des feuilles
			{
				extract($res3);
				if($bord_droit-$bord_gauche > 1)//test si on un noeud oui si la difference >1
				{	//affichage des noeuds
					echo '<li class="dossier"><label><a href='.$_SERVER['PHP_SELF'].'?id='.$id.'>'.$nom.'</a></label><input type="radio" name="selection" value='.$id.'/></li>';
				}else{ //affichage des feuilles
					echo '<li class="fichier"><label>'.$nom.'</label><input type="radio" name="selection" value='.$id.'/></li>';
				}
			}
		}else{//...
		}
	$res4=mysql_query('select count(id) from '.$table.' where bord_gauche > "'.$res1['bord_gauche'].'" and bord_droit < "'.$res1['bord_droit'].'" and level="'.$res1['id'].'"') or die ('Erreur:'.mysql_error());
	$res5=mysql_result($res4,0);
	echo '<p>il y a '.$res5.' pages filles</p></ul>';//donne le nombre de feuille d'un noeud
	}
}
je n'ai pas les idées tres clair sur cette fonction alors si vous pouvez m'aidez j'en serai tres reconnaissant
merci

Mammouth du PHP | 19672 Messages

27 juin 2005, 19:56

Je comprends à peu près rien à ce que tu veux faire: quelle est la structure de ta table et quels en sont les éléments ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1311 Messages

27 juin 2005, 20:15

alors j'ai fait quelque chose de tordu
je me suis servi de l'article de developpez.com
qui me permet de trouver une arborescence complete du site
et j'ai rajouter un champs "level"
celui ci me permet de selectionner que les pages d'un noeud(rang n) qui se trouve au niveau n-1

(cette facon de proceder un peu bizard me permet de d'afficher l'arborescence de mon site avec une seule requete)

voici la structure de ma table:

id,nom,bord_droit,bord_gauche,level

un petit algo(exemple pour la creation d'un menu a un seul niveau) pour metre les choses en place

je recupere un id de page via un formulaire
- j'extrait les données de cette page
-je lance un requete sur ma table qui selectionne les enfants(n-1) du noeud(n)
- et je les affiche


voila j'espere que j'ai été clair:?:

Mammouth du PHP | 19672 Messages

27 juin 2005, 20:39

mouais, si on veut, mais en fin de compte qu'est-ce qui ne marche pas ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 104 Messages

27 juin 2005, 20:40

Quel est le noeud du problème ?

Mammouth du PHP | 19672 Messages

27 juin 2005, 20:42

Quel est le noeud du problème ?
fggdm tu es un vilain garnement :langue:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1311 Messages

27 juin 2005, 20:43

mon probleme est le suivant
disons que le page "index" a 3 feuilles filles(bateau,planche à voile, surf)
ma fonction ne m'affichera pas la derniere feuille c'est a dire "surf"

Mammouth du PHP | 19672 Messages

27 juin 2005, 20:46

est-ce que le nombre de "feuilles" que tu affiches correspond à la réalité ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1311 Messages

27 juin 2005, 20:50

oui, donc mes requete sont bonne smais pas le traitement apres :?