Foros del Web » Programando para Internet » PHP »

[Duda] Links activos con PHP

Estas en el tema de [Duda] Links activos con PHP en el foro de PHP en Foros del Web. Hola, tengo el siguiente código con el cual debería mostrar en el menú principal de mi sitio, los links activos, cuando configuro para el index.php ...
  #1 (permalink)  
Antiguo 24/10/2013, 23:33
Avatar de Mosiah16  
Fecha de Ingreso: abril-2010
Ubicación: Antofagasta
Mensajes: 70
Antigüedad: 14 años
Puntos: 1
[Duda] Links activos con PHP

Hola, tengo el siguiente código con el cual debería mostrar en el menú principal de mi sitio, los links activos, cuando configuro para el index.php funciona correctamente, pero cuando utilizo un link de tipo pagina.php?seccion=servicios, no me muestra el link activo en esa sección del sitio, aquí el código, el cual lo tome de una tema de este mismo foro:

Código PHP:
<?php 

function Menu($sitio) { 
$url 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']; 
if(
ereg($sitio,$url)) {echo 'class="active"'; } 
}  
?>
Código HTML:
<ul>
 <li><a href="index.php" title="Inicio" <?php Menu('index.php') ?>>Inicio</a></li>
 <li><a href="pagina.php?seccion=contacto" title="Contacto" <?php Menu('pagina.php?seccion=contacto') ?>>Contacto</a></li>
</ul> 
Si por ejemplo pongo pagina.php, funciona, pero si pongo un link a otra sección del sitio quedan activos los dos en el menu.

Espero me puedan ayudar, desde ya muchas gracias.
__________________
Tu mente es capaz de todo...
  #2 (permalink)  
Antiguo 25/10/2013, 01:19
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Respuesta: [Duda] Links activos con PHP

Para empezar, ereg es una función deprecada en php 5.3, asi que en teoría no es la mejor idea usarla.

Segundo, lo que usa es una expresión regular. En este caso, tu variable $url siempre va a matchear con algo que tenga index.php, por eso en la pagina te aparece siempre todos los links como activo, ya que tanto index.php como index.php?seccion=loquesea hacen match en esa expresión regular.

Lo que se me ocurre es que podrías usar una comparación con $_SERVER['REQUEST_URI'].

Código PHP:
Ver original
  1. if ($_SERVER['REQUEST_URI'] == $menu) { echo ' class="active"'; }
__________________
Sin Ideas
  #3 (permalink)  
Antiguo 25/10/2013, 01:45
Avatar de Mosiah16  
Fecha de Ingreso: abril-2010
Ubicación: Antofagasta
Mensajes: 70
Antigüedad: 14 años
Puntos: 1
Respuesta: [Duda] Links activos con PHP

he probado poner eso, pero me muestra el link activo de index.php en la pagina de contacto que sería pagina?seccion=contacto
__________________
Tu mente es capaz de todo...
  #4 (permalink)  
Antiguo 25/10/2013, 08:28
Avatar de elporfirio  
Fecha de Ingreso: octubre-2013
Mensajes: 37
Antigüedad: 10 años, 6 meses
Puntos: 4
Respuesta: [Duda] Links activos con PHP

tendrias que poner una condicion

En el caso de que no envien una URL valida con la variable requerida:

Código PHP:
Ver original
  1. $seccionActiva = isset($_GET["seccion"]) ? $_GET["seccion"] : $valorDefecto;

Última edición por elporfirio; 25/10/2013 a las 08:28 Razón: olvide Highlight =P
  #5 (permalink)  
Antiguo 25/10/2013, 09:15
Avatar de Mosiah16  
Fecha de Ingreso: abril-2010
Ubicación: Antofagasta
Mensajes: 70
Antigüedad: 14 años
Puntos: 1
Respuesta: [Duda] Links activos con PHP

con que exactamente tengo que hacer la condición, con el mismo if de arriba?
__________________
Tu mente es capaz de todo...

Última edición por Mosiah16; 25/10/2013 a las 09:20
  #6 (permalink)  
Antiguo 25/10/2013, 19:34
Avatar de Mosiah16  
Fecha de Ingreso: abril-2010
Ubicación: Antofagasta
Mensajes: 70
Antigüedad: 14 años
Puntos: 1
Respuesta: [Duda] Links activos con PHP

Ayuda por favor :)
__________________
Tu mente es capaz de todo...

Etiquetas: links
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




La zona horaria es GMT -6. Ahora son las 10:55.