Foros del Web » Programando para Internet » PHP »

Tutorial Menu simple

Estas en el tema de Tutorial Menu simple en el foro de PHP en Foros del Web. Hola a todos. Esto esta dirigido sobre todo a las personas que se estan incorporando al PHP. Pero tambien, porque no, a todos los demas. ...
  #1 (permalink)  
Antiguo 01/09/2007, 02:41
 
Fecha de Ingreso: septiembre-2006
Mensajes: 64
Antigüedad: 17 años, 7 meses
Puntos: 2
Tutorial Menu simple

Hola a todos. Esto esta dirigido sobre todo a las personas que se estan incorporando al PHP. Pero tambien, porque no, a todos los demas. Hay que tener en cuenta que es bastante simple y pensado para sitios web, mas bien simples, con pocas paginas.

Se trata de la creacion de un menu, el tipico a la izquierda, que muestre los enlaces a las paginas y que sepa en cual nos encontramos.

Pongo el codigo y luego lo explico.

Creamos "menu.php"
Código PHP:
<?
//Creamos el menu.
//     "Titulo del menu"
//    "nombre del link" => "enlace"
$links = array(
    
"menu" => array(
        
"index1"=>"index.php",
        
"index2"=>"index2.php",
        
"index3"=>"index3.php"
        
),// no olvidar esta coma para crear al siguiente menu.
    
"usuarios" => array(
        
"user1"=>"user.php",
        
"user2"=>"user2.php",
        
"user3"=>"user3.php"
        
)
);
//    Obtenemos la pagina en la que estamos.
//    Con $_SERVER["SCRIPT_NAME"], obtenemos la ruta del script
//  Con explode dividimos la cadena en partes separadas por la barra de directorio "/".
//    Con end seleccionamos el ultimo valor de la cadena, es el nombre del script en el que estamos.
$pag_actual =end(explode("/",$_SERVER["SCRIPT_NAME"]));
?>
<style type="text/css">
<!--
#menu {
    border: 1px solid #006699;
}
#menu th {
    background-color: #006699;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: normal;
    color: #FFFFFF;
    text-align: center;
}
#menu td {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: normal;
    color: #990000;
    background-image: url(li.gif);
    background-repeat: no-repeat;
    background-position: 2px 8px;
    padding-left: 10px;
    height: 20px;
    border-top-width: 1px;
    border-right-width: 1px;
    border-bottom-width: 1px;
    border-left-width: 1px;
    border-bottom-style: dotted;
    border-top-color: #006699;
    border-right-color: #006699;
    border-bottom-color: #006699;
    border-left-color: #006699;
    border-top-style: none;
    border-right-style: none;
    border-left-style: none;
}
#menu a {
    font-family: Arial, Helvetica, sans-serif;
    color: #009900;
    text-decoration: underline;
    font-size: 12px;
    font-weight: normal;
}
-->
</style>
<?
foreach($links as $titulo => $lista)
{
?>
<table width="150" cellpadding="1" cellspacing="1" id="menu">
  <tr>
    <th><? echo ucfirst(strtolower($titulo)); ?></th>
  </tr>
  <?
  
foreach($lista as $value => $href)
  {
  if(
$pag_actual == $href$lnk ucfirst(strtolower($value));
          else 
$lnk "<a href='$href'>".ucfirst(strtolower($value))."</a>";
  
?>
  <tr>
    <td><? echo $lnk?></td>
  </tr>
  <?
  
}
  
?>
</table>
<br style="font-size:4px">
<?
}
?>
En este ejemplo se usan 6 archivos más aparte de menu.php, pero pueden ser tantos como se necesiten.
- index.php, index2.php, index3.php
- user.php, user2.php, user3.php

Ahora por partes:
Crear el menu:
Código PHP:
$links = array(
    
"menu" => array(
        
"index1"=>"index.php",
        
"index2"=>"index2.php",
        
"index3"=>"index3.php"
        
),// no olvidar esta coma para pasar al siguiente menu.
    
"usuarios" => array(
        
"user1"=>"user.php",
        
"user2"=>"user2.php",
        
"user3"=>"user3.php"
        
)
); 
Esto, a los mas nuevos, les puede parecer más complicado, pero trateré de explicarlo bien.
Se trata de un array dentro de otro. Creamos la variable $links como un array y cada valor es el titulo de la seccion del menu y un array que contiene el nombre del enlace y el enlace en si.

Obterner pagina actual:
Código PHP:
$pag_actual =end(explode("/",$_SERVER["SCRIPT_NAME"])); 
Obtenemos la pagina en la que nos encontramos mediante $_SERVER["SCRIPT_NAME"]. Esta muestra la ruta completa hasta la pagina. Es decir mostraria algo asi:
pruebas/menu/menu.php
pero lo que nos interesa es que nos muestre "menu.php" para saber en que pagina estamos. Se consigue facilmente con
$pag_actual =end(explode("/",$_SERVER["SCRIPT_NAME"]));.
- explode crea un array separando la ruta por "/". obtendriamos el siguiente array:
[0] pruebas
[1] menu
[2] menu.php
y con end seleccionariamos el ultimo valor. en este caso "menu.php". ahora tenemos el nombre de la pagina actual en $pag_actual.

Mostrar los resultados:
Código PHP:
<?
foreach($links as $titulo => $lista)
{
?>
<table width="150" cellpadding="1" cellspacing="1" id="menu">
  <tr>
    <th><? echo ucfirst(strtolower($titulo)); ?></th>
  </tr>
  <?
  
foreach($lista as $value => $href)
  {
  if(
$pag_actual == $href$lnk ucfirst(strtolower($value));
          else 
$lnk "<a href='$href'>".ucfirst(strtolower($value))."</a>";
  
?>
  <tr>
    <td><? echo $lnk?></td>
  </tr>
  <?
  
}
  
?>
</table>
<br style="font-size:4px">
<?
}
?>
Aqui vemos 2 "foreach" que sirve para recorrer arrays de principio a fin y obtener sus valores. que realiza lo siguiente:
- se recorre $links y se obtiene el valor $titulo y otro array $lista que contiene los nombres de los enlaces y los enlaces en si.
Código PHP:
foreach($links as $titulo => $lista
Y con el siguiente:
Código PHP:
 foreach($lista as $value => $href
se recorren los enlaces para crear la lista.
Con esto lo que ocurre es que se crea una tabla por cada valor de $titulo, en este ejemplo 2 "menu" y "usuarios", y a su vez cada uno de estos tiene 3 enlaces "index.php", "index2.php", etc... creados en la primera parte del codigo.

Enlaces.
Código PHP:
 if($pag_actual == $href$lnk ucfirst(strtolower($value)); 
          else 
$lnk "<a href='$href'>".ucfirst(strtolower($value))."</a>"
Este condicional hace lo siguiente. Comprueba a donde apunta el enlace a crear "$href" y si es distinto a donde estamos crea una etiqueta "<a>" para hacer el link. Y si es igual solo muestra el nombre del enlace.

En este ejemplo, he usado distintos estilos para que se vea diferente si es un enlace a una pagina o la pagina actual.

Solo falta crear los archivos "index.php","index2.php","user.php", etc... tantos como queramos para el menu.
En estos archivos. Solo es necesario hacer:
Código PHP:
<?require("menu.php");?>
en el lugar donde queramos que muestre el menu. Aunque el codigo de obtner la pagina actual lo tenemos dentro de "menu.php", este obtendra como pagina la que llama al script. es decir si entramos en "index.php" el require obtendra de pagina actual "index.php" y no "menu.php", funcionando correctamente.

Es mi primera mini tutorial en php. Yo no tengo mucha experiencia. Pero me gustaria que me hicieseis comentarios, si vale la pena para algo o si más bien hubiera dedicado el tiempo a pintar huevos crudos (jejejejje)

Un saludos a todos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 00:24.