Nous allons maintenant créer une classe PHP permettant de générer dynamiquement la télécommande suivant la structure décrite précédemment. La classe décrite ici est en PHP 4.
Programmation > PHP
Recherche :   
Actualité Système Salon Concours Outils Programmation Devparadise Programmation HTML .Net JavaScript VBScript ASP PHP Visual Basic Perl Java Active X SQL XML WAP Delphi Graphisme Flash Web Design Promotion Référencement Publicité Valeur de votre site Outils Systèmes Windows Unix Linux Benchmark Hardware Réseaux locaux Droit Sécurité
Création d’un menu déroulant en PHP et XML
  Auteur : Yves PETIT
Classe de génération du menu dynamique

Nous allons maintenant créer une classe PHP permettant de générer dynamiquement la télécommande suivant la structure décrite précédemment. La classe décrite ici est en PHP 4.

Publicité 
Nous allons maintenant créer une classe PHP permettant de générer dynamiquement la télécommande suivant la structure décrite précédemment. La classe décrite ici est en PHP 4, si vous la réalisez en PHP 5 il est important d'intégrer la portée des méthodes et des variables.

Commençons par la mise en place des éléments constituant le futur objet "bouton" :

// Classe Bouton
Class Bouton
{

    // Texte du bouton
    var $texte;
    // Lien du bouton
    var $lien;
    // Description de la page de destination du bouton
    var $desc;
    // Niveau de priorité du bouton (non utiliser dans cette version)
    var $nv;
    // Etat du bouton - page en cours = page du bouton
    var $etat;
    // True si le bouton est un enfant
    var $isenfts;
    // Tableau contenant les éventuels enfants
    var $enfants;
    // Nombre d'enfants
    var $nbenfts;
    // Marge pour le calcul de la longueur en pixels du texte
    var $LENADD = 0;

    // Constructeur
    function Bouton($strTexte, $strLien, $strDesc, $intNv, $BoolEtat, $BoolEnft)
    {

      $this->texte = $strTexte;
      $this->lien = $strLien;
      $this->desc = $strDesc;
      $this->nv = $intNv;
      $this->etat = $BoolEtat;
      $this->isenfts = $BoolEnft;
      //
      $this->nbenfts = 0;
    }
}

Incorporons maintenant à cette classe, deux méthodes nous permettant pour l'une d'insérer un nouvel enfant et pour l'autre de déterminer le plus grand texte dans les boutons enfants.

// Cette méthode va nous permettre d'ajouter des enfants à notre bouton
function AddEnfts($strTexte, $strLien, $strDesc, $BoolEtat)
{

    // Incrémente le nombre d'enfants associé au bouton
    $this->nbenfts++;
    // Créer un objet bouton dans le tableau des enfants du bouton
    $this->enfants[] = new Bouton($strTexte, $strLien, $strDesc, $this->nbenfts, $BoolEtat, true);
}

// Méthode permettant de trouver la chaîne la plus longue
function FindMaxEnfts()
{

    // Initialisation de la valeur temporaire
    $tmpVal = 0;
    // Bouclage sur tous les enfants d'un bouton
    foreach ($this->enfants as $enfant)
    {
      // Si le texte est plus long que la variable temporaire, on remplace par la nouvelle valeur
      if (strlen($enfant->texte) > $tmpVal)
      {
        $tmpVal = strlen($enfant->texte);
      }
    }
    // On retourne la valeur
    return $tmpVal;
}

Continuons en intégrant les méthodes d'affichage des boutons parents et enfants :

// Méthode écrivant la partie de code HTML appropriée
function EchoTelec()
{

    // Si nbenfts = 0, alors il n'y a pas d'enfants
    if ($this->nbenfts == 0)
    {
      // Si nbenfts = true, alors la page en cours est la page du bouton
      if ($this->etat)
      {
        $this->StartEchoTxt();
      }
      else
      {
        $this->StartEchoBtn();
      }
      // Fermeture du bouton
      $this->EndEchoBtn();
    }
    else
    {
      // Ecriture du code HTML pour le parent et le début de code des enfants
      $this->StartEchoBtnEnft();
      // Brassage de tout les enfants et écriture du code HTML
      foreach ($this->enfants as $enfant)
      {
        $this->EchoEnft($enfant);
      }
      // Fermeture du bouton
      $this->EndEchoBtnEnft();
    }
}

// Méthode d'écriture du début du bouton sans enfant
function StartEchoBtn()
{

    echo "<dl style="width: " . (strlen($this->texte) + $this->LENADD) * 8 . "px;"> ";
    echo "<dt onmouseover="javascript:montre();" style="width: " . (strlen($this->texte) + $this->LENADD) * 8 . "px;"><a href="" . $this->lien . "" title="" . $this->desc . "" style="width: " . (strlen($this->texte) + $this->LENADD) * 8 . "px;" class="MYMENU">" . $this->texte . "</a></dt> ";
}

// Méthode de fermeture du bouton
function EndEchoBtn()
{

    echo "</dl> ";
}

// Méthode d'écriture du bouton de la page en cours
function StartEchoTxt()
{

    echo "<dl style="width: " . (strlen($this->texte) + $this->LENADD) * 8 . "px;"> ";
    echo "<dt onmouseover="javascript:montre();" style="width: " . (strlen($this->texte) + $this->LENADD) * 8 . "px;"><span class="MYMENU" style="width: " . (strlen($this->texte) + $this->LENADD) * 8 . "px;">" . $this->texte . "</span></dt> ";
}

// Méthode d'ouverture du bouton parent et des boutons enfants
function StartEchoBtnEnft()
{

    echo "<dl style="width: " . (strlen($this->texte) + $this->LENADD) * 8 . "px;"> ";
    echo "<dt onmouseover="javascript:montre('Prnt" . $this->nv . "');" style="width: " . (strlen($this->texte) + $this->LENADD) * 8 . "px;"><span class="MYMENU" style="width: " . (strlen($this->texte) + $this->LENADD) * 8 . "px;">" . $this->texte . "</span></dt> ";
    echo "<dd id="Prnt" . $this->nv . ""> ";
    echo "<ul style="width: " . ($this->FindMaxEnfts() + $this->LENADD) * 8 . "px;"> ";
}

// Méthode de fermeture du bouton parent et des boutons enfants
function EndEchoBtnEnft()
{

    echo "</ul> ";
    echo "</dd> ";
    echo "</dl> ";
}

// Méthode d'écriture HTML des boutons enfants
function EchoEnft($MonEnfnt)
{

    echo "<li><a href="" . $MonEnfnt->lien . "" class="MYLIMENU">" . $MonEnfnt->texte . "</a></li> ";
}

Pour le calcul des largeurs des cellules nous prenons donc la longueur de la chaîne texte plus un éventuel coefficient de sécurité, multiplié par huit.

Notre classe PHP est maintenant terminée.

Précédent   Suivant
Création d’un menu déroulant en PHP et XML
  • Création du menu déroulant
  • Classe de génération du menu dynamique
  • Utilisation d’un fichier XML pour la création du menu
  • A lire aussi sur Devparadise.com :
  • Comment ouvrir un pop-up après validation d’un formulaire par les contrôles d...
  • Création en VB6 d'une DLL ActiveX utilisant GDI+, et appel de cette dernière ...
  • Création d’un menu déroulant en PHP et XML
  • Illustration de l’héritage de classe et de l’implémentation d’interface en c#...
  • La sérialisation (Marshaling) en XML en C# .Net 2.0
  • A télécharger aussi sur Devparadise.com :
  • Comment ouvrir un pop-up après validation d’un formulaire par les contrôles d...
  • SOURCES : Création en VB6 d'une DLL ActiveX utilisant GDI+, et appel de cette...
  • Sources de l'article sur la génération d'un menu avec xml et php
  • Source de l'article sur l’héritage de classe et de l’implémentation
  • Code Source : sérialisation (Marshaling) en C# .Net 2.0

  • © 1997-2009 tous droits réservés Devparadise.com
    Les logos, et marques déposées sont la propriété de leurs détenteurs respectifs.
    Devparadise.com s'est engagé à respecter la confidentialité des données personnelles régies par la loi 78-17 du 6 janvier 1978.
    Déclaration C.N.I.L. n° 621623
    php,xml,class,classe,menu,déroulant,horizontale,li,dd,dt,dl,ul