Vous êtes ici Codes PHP et MySQL > Classes > Classes de génération de menu (sans base de...

 

Classes de génération de menu (sans base de données)

Ensemble de 2 classes et une fonction permettant de créer facilement un menu et un sous-menu. Le contenu se gère en configurant les classes, pas besoin de base de données.

Un exemple est implémenté. Pour tester, veillez à ce que les pages existent bien.
 
bud
[3] sources en PHP voir
Code vu 4177 fois
Enregistré le 22 Juil 2008
  • Digg ce code sur digg.com
  • Bookmark ce code sur del.icio.us
  • Bookmark ce code sur Google
  • Bookmark ce code sur Yahoo
  • Ajoute Classes de génération de menu (sans base de données)
  • Partage ce code sur Facebook
 
 
 
 

Code Source


01.
02.
03.
04.
05.
06.
07.
08.
09.
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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
 
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Classes de génération de menu (sans base de données)      */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts430-PHP.htm              */
/* Auteur         : bud                                                       */
/* Date édition   : 22 Juil 2008                                              */
/*                                                                            */
/******************************************************************************/

/**
***        Menu building class
***            => complete constructor to add new items
**/

class Menu
{
    /**
    ***    +---------------------------------------------------------------+
    ***    |      Menu                                        |
    ***    +---------------------------------------------------------------+
    ***    |    brief        class constructor                     |    
    ***    +---------------------------------------------------------------+
    **/
    function Menu()
    {
        $this->add("home""index.php");
        $this->add("category name 1""cat2.php");
        $this->add("category name 1""cat2.php");
    }
        
    /**
    ***    +---------------------------------------------------------------+
    ***    |     add                                        |
    ***    +---------------------------------------------------------------+
    ***    |    brief        add an item to the menu                |    
    ***    |    param        $name: screen name of the link         |    
    ***    |    param        $page: path to the page to call        |    
    ***    +---------------------------------------------------------------+
    **/
    function add($name$page)
    {
        $this->$page->name $name;
        $this->$page->page $page;
    }
}

/**
***        Sub-Menu building class
***            => complete build() method to add new items
**/
class Submenu extends Menu
{
    var $menu;
    
    /**
    ***    +---------------------------------------------------------------+
    ***    |    Submenu                                    |
    ***    +---------------------------------------------------------------+
    ***    |    brief        class constructor                        |    
    ***    +---------------------------------------------------------------+
    **/
    function Submenu($menu)
    {
        $this->menu $menu;
        $this->build();
    }

    /**
    ***    +---------------------------------------------------------------+
    ***    |    build                                         |
    ***    +---------------------------------------------------------------+
    ***    |    brief        build submenu object                     |    
    ***    |    param    $name: title of the page                          |    
    ***    |    param    $page: title of the page                                  |    
    ***    |    param    $submenu: title of the page                        |    
    ***    +---------------------------------------------------------------+
    **/
    function build()
    {
        switch( $this->menu )
        {
            case 'index.php':
            case 'sub11.php':
            case 'sub12.php':
            case 'sub13.php':
            $this->menu 'cat1.php';
            parent::add("sub 1 1""sub11.php");
            parent::add("sub 1 2""sub12.php");
            parent::add("sub 1 3""sub13.php");
            break;
                
            case 'cat2.php':
            case 'sub21.php':
            case 'sub22.php':
            case 'sub23.php':
            $this->menu 'cat2.php';
            parent::add("sub 2 1""sub21.php");
            parent::add("sub 2 2""sub22.php");
            parent::add("sub 2 3""sub23.php");
            break;    
            
            case 'cat3.php':
            case 'sub31.php':
            case 'sub32.php':
            case 'sub33.php':
            $this->menu 'cat3.php';
            parent::add("sub 3 1""sub31.php");
            parent::add("sub 3 2""sub32.php");
            parent::add("sub 3 3""sub33.php");
            break;    
            
            default:
            $this->menu NULL;
            break;
        }
    }
}


    /**
    ***    +---------------------------------------------------------------+
    ***    |       menu                                        |
    ***    |    /!    do not forget to change default value of uri (line 3)    |    
    ***    +---------------------------------------------------------------+
    ***    |    brief        print menu                            |    
    ***    |    CSS        item:            ul#menu, ul#submenu         |    
    ***    |            selected item:     li a.selected             |    
    ***    +---------------------------------------------------------------+
    **/
    function menu()
    {
        // get the name of the requested page
        preg_match("!/((w+).php)!",$_SERVER['REQUEST_URI'], $uri);
        if( !isset($uri[1]) )    $uri=array("""index.php");
        
        // initialization
        $menu = new Menu();
        $submenu = new Submenu($uri[1]);
        
        // printing menu
        print("<!-- menu -->n");
        print("<ul id="menu">n");
        foreach($menu as $item)
        {
            if( is_object($item) )
            {
                print("t<li><a href="./".$item->page.""");
                if( $item->page == $uri[1] || $item->page == $submenu->menu )
                {
                    print(" class="selected"");
                }
                print(">".$item->name."</a></li>n");
            }
        }
        print("</ul>n");
        
        // printing submenu (if it exists)
        if( !is_null($submenu->menu) )
        {
            print("n<!-- sub menu -->n");
            print("<ul id="submenu">n");
            foreach($submenu as $item)
            {
                if( is_object($item) )
                {
                    print("t<li><a href="./".$item->page.""");
                    if( $item->page == $uri[1] )
                    {
                        print(" class="selected"");
                    }
                    print(">".$item->name."</a></li>n");
                }
            }
            print("</ul>n");
        }
    }    

menu();

?>

 

Fonctions du code

: Expression rationnelle standard - (PHP 4, PHP 5)
: Crée un tableau - (PHP 4, PHP 5)
: Détermine si une variable est affectée - (PHP 4, PHP 5)
: Affiche une chaîne de caractères - (PHP 4, PHP 5)
: Détermine si une variable est de type objet - (PHP 4, PHP 5)
: Indique si une variable vaut NULL - (PHP 4 >= 4.0.4, PHP 5)
Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Librairie PHP

Connexion

 
 

Classes

 
 

PHP

 
 
 
 
    Offres d'emploi

Plus de 500 offres d'emploi PHP/MySQL

Offres d'emploi
 
    Editeur PHP
 
        Publicité