Classe menu utilisation de dom...

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 9 mai 2006 à 16:30
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010 - 10 mai 2006 à 12:42
Alors voila je sais pas ce qu'il m'a prit de vouloir faire ca mais je me dit que ce n'est pas une si mauvaise chose en soit...

J ai donc voulu faire une classe menu en m aidant de la classe DOM afin
de creer un document en xml puis de le transformer en html pour avoir
un menu style arborescence...

J ai donc commencer et là je bloque complet je vois très bien ce qu'il faut faire mais je sais pas comment il faut le faire...

Je m'explique:

Le constructeur permet de creer le fichier xml qui contiendra le tout.

DefineFather permet de definir les choix disponible du genre:

-choix 1

-choix 2

-choix 3



DefineSon devrait permettre d ajouter un fils a un pere et donc on obtiendrais en ajoutant un fils a choix 1 ceci:



+choix 1

-choix 1.1

-choix 2

-choix 3



Evidement on aimerait pouvoir ajouter des fils a un fils


Il faut donc garder de quel pere le fils est issu et donc avoir une structure comme suit:
----------------------------

| objet DOMDocument |

----------------------------

| objet menu |

----------------------------

| --------------- |

| | Père1 | |

| --------------- |

| | Fils1 | |

| --------------- |

| | ... | |

| --------------- |

|
|
| |

| --------------- |

|
|
| |

| -------------- |

----------------------------

| Père 2 |

----------------------------

| Père 3 |

----------------------------



voici le code correspondant ... meme si on rajoute en plus un fils de fils



<?php



class MonMenu {



var $m_iLevel;

var $m_oFromObject;

var $m_sFile='menu.html';

var $m_sRoot='menu';



function __construct($m_sRoot){

$dom = new DOMDocument('1.0', 'iso-8859-1');

$root = $dom->createElement($m_sRoot);

$root = $dom->appendChild($root);

$this->$m_oFromObject[0]=$dom;

$this->$m_oFromObject[1]=$root;

}



function DefineFather($sRank){



//Objet DOM courant $m_oFromObject[]

$m_oFromObject[]=$this->$m_oFromObject[0]->createElement('Father');

$this->$m_oFromObject[] = $this->$m_oFromObject[1]->appendChild($m_oFromObject[]);

$oRankText = $this->$m_oFromObject[0]->createTextNode($sRank);

$oRankText = $this->$m_oFromObject[]->appendChild($oRankText);



}

function DefineSon($sRank,$oObjectFather){



}



function FindArboFather($oObjectFather){



}



}



$menu = new MonMenu();

$rang1=$menu->DefineFather('rang1');

$sousrang1=$menu->DefineSon('sous rang 1',$rang1);

$soussousrang1=$menu->DefineSon('sous rang 1',$sousrang1);

$rang2=$menu->DefineFather('rang2');

$rang3=$menu->DefineFather('rang3');



?>



J ai beaucoup de mal a implementer DefineSon donc si qqun a le courage de m aider ca serait avec grand plaisir



PS: si qqun cherches un dessinateur ascii de tableau ou veut créer des objet pere dodu me contacter aussi ... *devient fou*
-------------------------------------------------------------------------------------------------------

Il vaut mieux poser une question et passer pour bête que le rester
toute sa vie

1 réponse

huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
10 mai 2006 à 12:42
Ne serait-il pas plus simple de ne pas différencier (dans le code) Père et Fils :
en effet, dans la mesure ou un fils a la possibilité d'avoir lui aussi des fils, il devient père, cela devient donc embigu pour un élément donné de savoir si il est père ou fils.

En fait j'avais déjà travaillé sur un sustème similaire d'arborecense.
En utilisant un élément comme suit :
Element
{
Element_Parent (si null => racine)
AutresVariables
}

un test sur Element_Parent me permettait de savoir si l'élément courant possédait un élément parent (dans ce cas, il est fils - et peut-être père -) ou non (dans ce cas il est uniquement père).

En gros, ce que je te conseille, c'est de ne pas distinguer père et fils de manière structurelle, mais à l'utilisation.

J'espère que cela pourra t'aider ...

huberdine, mais dort aussi ...
0
Rejoignez-nous