Código de PHP - Crear un menú a partir de un array de valores en PHP con HTML5

Imágen de perfil

Crear un menú a partir de un array de valores en PHP con HTML5gráfica de visualizaciones


PHP

estrellaestrellaestrellaestrellaestrella(6)
Publicado el 28 de Octubre del 2013 por Xavi
17.765 visualizaciones desde el 28 de Octubre del 2013. Una media de 112 por semana
Código de ejemplo, que muestra como crear un menú a partir de un array de valores, mostrando menús y submenus.

Versión 1
estrellaestrellaestrellaestrellaestrella(6)

Publicado el 28 de Octubre del 2013gráfica de visualizaciones de la versión: Versión 1
17.766 visualizaciones desde el 28 de Octubre del 2013. Una media de 112 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Puedes ver un ejemplo del mismo aquí.
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
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
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="utf-8">
    <meta title="Ejemplo de crear un menú a partir de un array de valores en PHP con HTML5">
    <style>
        nav     {
            width:180px;
            background-color:#6589ff;
            font-family:Arial;font-size:0.8em;
            color:#ccc;
        }
        nav ul  {list-style:none;padding-left:0px;}
        nav li  {padding:2px 0px;border-bottom:1px solid #c3c3c3;}
        nav ul li  {padding-left:10px;}
 
        nav a   {text-decoration:none;color:#fff;}
        nav a:hover li   {background-color:#3a68ff;}
 
        .submenu {padding-left:20px;}
    </style>
</head>
 
<body>
<h1>Ejemplo de crear un menú a partir de un array de valores en PHP con HTML5</h1>
<?php
# definimos el array de valores para el menu y submenus
$menu=array(
    array(
        'titulo'            => 'Página inicial',
        'enlace'            => 'index1.php',
        'subcategoria'      => array(
            array(
                'id'        => 'index1a',
                'titulo'    => 'Clientes',
                'enlace'    => 'index1a.php',
            ),
            array(
                'id'        => 'index1b',
                'titulo'    => 'Proveedores',
                'enlace'    => 'index1b.php',
            ),
        ),
    ),
    array(
        'titulo'            => 'Comerciales',
        'enlace'            => 'index2.php',
        'subcategoria'      => array()
    ),
    array(
        'titulo'            => 'Listados',
        'enlace'            => '', # Esta opcion de menu no dispone de enlace
        'subcategoria'      => array(
            array(
                'id'        => 'index3a',
                'titulo'    => 'Listado de Clientes',
                'enlace'    => 'index3a.php',
            ),
            array(
                'id'        => 'index3a',
                'titulo'    => 'Listado de Proveedores',
                'enlace'    => 'index3b.php',
            ),
            array(
                'id'        => 'index3a',
                'titulo'    => 'Listado de Comerciales',
                'enlace'    => 'index3c.php',
            ),
        ),
    ),
    array(
        'titulo'            => 'Contactar',
        'enlace'            => 'index4.php',
        'subcategoria'      => array()
    )
);
 
/**
 * Funcion para mostrar los enlaces
 * Tiene que recibir el array de valores y la clase a asignar que puede ser:
 *  menu o submenu
 */
function mostrarEnlace($menu,$class)
{
    if($menu['enlace'])
    {
        echo "<a href='".$menu['enlace']."'>";
    }
 
    echo "<li class='".$class."'>";
        echo $menu['titulo'];
    echo "</li>";
 
    if($menu['enlace'])
    {
        echo "</a>";
    }
}
 
echo "<nav>";
    echo "<ul>";
    # recorremos todo el array de valores
    for($i = 0; $i < count($menu); $i++)
    {
        mostrarEnlace($menu[$i],"menu");
 
        # Si dispone de subcategorias, las mostramos
        if(count($menu[$i]["subcategoria"])>0)
        {
            for ($j=0;$j<count($menu[$i]["subcategoria"]);$j++)
            {
                mostrarEnlace($menu[$i]["subcategoria"][$j], "submenu");
            }
        }
    }
    echo "<ul>";
echo "</nav>";
?>
</body>
</html>



Comentarios sobre la versión: Versión 1 (6)

Jeison Rubiano
02 de Julio del 2014
estrellaestrellaestrellaestrellaestrella
no me permite direccionar a mis pag que tengo de php que puedo hacer ...


<html lang="es">
<head>
<meta charset="utf-8">
<meta title="Proyecto para emplear">
<style>
nav {
width:180px;
background-color:#0404B4;
font-family:Arial;font-size:0.8em;
color:#ccc;
}
nav ul {list-style:none;padding-left:0px;}
nav li {padding:2px 0px;border-bottom:1px solid #c3c3c3;}
nav ul li {padding-left:10px;}

nav a {text-decoration:none;color:#fff;}
nav a:hover li {background-color:#3a68ff;}

.submenu {padding-left:30px;}
</style>
</head>

<body>
<h1>Proyecto para emplear 001</h1>
<?php
# definimos el array de valores para el menu y submenus
$menu=array(
array(
'titulo' => 'Registrarse',
'enlace' => 'registro.php',
'subcategoria' => array(
array(
'id' => 'perfil.php',
'titulo' => 'Perfil',
'enlace' => 'perfil.php',
),
array(
'id' => 'cambiar_contrasena.php',
'titulo' => 'Cambiar contraseña',
'enlace' => 'cambiar_contrasena.php',
),
array(
'id' => 'comprobar.php',
'titulo' => 'Comprobar',
'enlace' => 'comprobar.php',
),
),
),

);

/**
* Funcion para mostrar los enlaces
* Tiene que recibir el array de valores y la clase a asignar que puede ser:
* menu o submenu
*/
function mostrarEnlace($menu,$class)
{
if($menu['enlace'])
{
echo "<a href='".$menu['enlace']."'>";
}

echo "<li class='".$class."'>";
echo $menu['titulo'];
echo "</li>";

if($menu['enlace'])
{
echo "</a>";
}
}

echo "<nav>";
echo "<ul>";
# recorremos todo el array de valores
for($i = 0; $i < count($menu); $i++)
{
mostrarEnlace($menu[$i],"menu");

# Si dispone de subcategorias, las mostramos
if(count($menu[$i]["subcategoria"])>0)
{
for ($j=0;$j<count($menu[$i]["subcategoria"]);$j++)
{
mostrarEnlace($menu[$i]["subcategoria"][$j], "submenu");
}
}
}
echo "<ul>";
echo "</nav>";
?>
</body>
</html>
Responder
Dante
30 de Marzo del 2015
estrellaestrellaestrellaestrellaestrella
Solicito puedan orientarme o mostrarme algún ejemplo de como hacer menú y sub menú con php y mysql el cual también pueda crear nuevos menus,editarlos o eliminarlos ... saludos
Responder
Mesk
27 de Septiembre del 2015
estrellaestrellaestrellaestrellaestrella
Que buen chiste :D
Responder
luis
28 de Mayo del 2015
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder
juan
04 de Septiembre del 2015
estrellaestrellaestrellaestrellaestrella
como hacer un menu vertical en php
Responder
abrkof
22 de Noviembre del 2015
estrellaestrellaestrellaestrellaestrella
aca les dejo mi codigo con php y pdo para crear menus y submenus dinamicos

<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', 'vertrigo');
define('DB_NAME', 'hybridhyper');
define('DB_CHAR', 'utf8');
?>

class Database extends PDO{
//Seteamos una función publica de orden estático para la conexión
public static function pdoDB(){
//Realizamos la conexión mediante PDO la cual es de clase universal
$db = new PDO(
'mysql:
host='.DB_HOST.';
dbname='.DB_NAME.';
charset='.DB_CHAR.'',
''.DB_USER.'',
''.DB_PASS.'');
//Le asignamos los atributos correspondientes para realizar la conexión
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//retornamos la conexion
return $db;
}
}
?>

<?php

if ( ! function_exists('my_menu_ppal')){

function my_menu_ppal(){
//Instanciamos a la clase de conexion de la base de datos
$pdo = Database::pdoDB();

//Preparamos la primera consulta
$stmt1 = $pdo->prepare('Select id, name, url, orden from menu ORDER BY orden ASC');

$stmt1->execute();
//Delvemos un arreglo con la siguiente fila
$stmtx = $stmt1->fetchAll();

$menu = "\n";
//Evaluamos si el arreglo trae algo
if(count($stmtx) > 0);
foreach($stmtx as $row1){
//Preparamos la segunda consulta
$stmt2 = $pdo->prepare('SELECT id, name, url, menu_id, orden FROM submenu WHERE menu_id = "'.$row1['id'].'" ORDER BY orden ASC');
$stmt2->execute();
//Contamos el numero de filas que trae
$rows = $stmt2->rowCount();

$m = $row1['url'];
//Evaluamos si el arreglo viene vacío
if($rows == 0){
$menu .= "<li><a href=".host_url('')."$m>".$row1['name']."</a></li>\n";
}
else{
$menu .= "<li class='menu'>\n <a href=".host_url('')."$m>".$row1['name']."</a>\n <ul class='sub-menu'>\n";
foreach($stmt2 as $row2){
$submenu = $row2['url'];
$menu .= "<li><a href=".host_url('')."$submenu>".$row2['name']."</a></li>\n";
}
$menu.= "</ul></li>\n";
}
}
$menu .="";
return $menu;
}
}
?>
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s2520