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">
<?
}
?>
- 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"
)
);
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"]));
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">
<?
}
?>
- 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)
Código PHP:
foreach($lista as $value => $href)
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>";
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");?>
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.