Foros del Web » Programando para Internet » PHP »

Menú + switch

Estas en el tema de Menú + switch en el foro de PHP en Foros del Web. Hola a todos, Yo solía utilizar el siguente código para cargar el contenido de los distintos enlaces de un sitio web, y ahora no sé ...
  #1 (permalink)  
Antiguo 22/08/2010, 02:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 153
Antigüedad: 14 años, 11 meses
Puntos: 1
Menú + switch

Hola a todos,

Yo solía utilizar el siguente código para cargar el contenido de los distintos enlaces de un sitio web, y ahora no sé xq no funciona.

¿alguien sabe a que se debe?

Muchas gracias.

Código PHP:
<?php
// incluir la cabecera de la página
   
include("interfaz/cabecera.php");
// incluir el menú de la página
   
include("interfaz/menu.php");
// incluir el contenido de la página

if (!isset($contenido))  
    
$contenido="inicio";     

 switch (
$contenido)
{

  case 
"inicio":

                 include(
"contenido/inicio.php");
 
  break;


  case 
"noticias":


                 include(
"contenido/noticias.php");
 
  break;


  case 
"contacto":


                 include(
"contenido/contacto.php");
 
  break;


}

// incluir el pie de la página
   
include("interfaz/pie.php");
?>
  #2 (permalink)  
Antiguo 22/08/2010, 04:46
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: Menú + switch

Hola.

El código no parece tener errores de sintaxis, por favor, indícanos cuál es el problema. ¿Da algún error? (especifica si es así), ¿Queda la página en blanco?

Si el problema es que carga cabecera, menú y pie pero no los contenidos, lo que puede estar pasando es que no recupere la variable $contenido de la url. Puedes probar agregar lo siguiente antes del if(isset... :

Código:
$contenido = $_GET["contenido"];
Te explico por si quieres saber, si antes te funcionaba y con eso se soluciona, el problema es una configuración de php denominada registers_globals que evita que esa asignación se haga automáticamente. Antes no se le daba importancia pero hace un tiempo casi todos los servidores lo han activado por defecto por razones de seguridad.

Saludos!
  #3 (permalink)  
Antiguo 22/08/2010, 05:13
 
Fecha de Ingreso: mayo-2009
Mensajes: 153
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Menú + switch

Cita:
Iniciado por geq Ver Mensaje
Hola.

El código no parece tener errores de sintaxis, por favor, indícanos cuál es el problema. ¿Da algún error? (especifica si es así), ¿Queda la página en blanco?

Si el problema es que carga cabecera, menú y pie pero no los contenidos, lo que puede estar pasando es que no recupere la variable $contenido de la url. Puedes probar agregar lo siguiente antes del if(isset... :

Código:
$contenido = $_GET["contenido"];
Te explico por si quieres saber, si antes te funcionaba y con eso se soluciona, el problema es una configuración de php denominada registers_globals que evita que esa asignación se haga automáticamente. Antes no se le daba importancia pero hace un tiempo casi todos los servidores lo han activado por defecto por razones de seguridad.

Saludos!
Hola

Ahora funciona casi todo, lo único que cuando cargo la web aparece el siguiente error:

Notice: Undefined index en la línea donde he incorporado la declaración:

$contenido = $_GET["contenido"];

Código PHP:
<?php
// incluir la cabecera de la página
   
include("interfaz/cabecera.php");
// incluir el menú de la página
   
include("interfaz/menu.html");
// incluir el contenido de la página

if (!isset($contenido))  
    
$contenido="inicio";    

$contenido $_GET["contenido"];

 switch (
$contenido)
{

  case 
"inicio":

                 include(
"contenido/inicio.html");
 
  break;


  case 
"noticias":


                 include(
"contenido/noticias.html");
 
  break;


  case 
"contacto":


                 include(
"contenido/temario.html");
 
  break;


}

// incluir el pie de la página
   
include("interfaz/pie.html");
?>
¿sabes a q se debe?

Muchas gracias
  #4 (permalink)  
Antiguo 22/08/2010, 05:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 153
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Menú + switch

Ok Gep, ya lo he solucionado:
Código PHP:
if (!isset($contenido)){  

                     
$contenido=include("contenido/inicio.html");
                                
                                   }

else{    

$contenido $_GET["contenido"];

 switch (
$contenido)
{
.....
.....
.....
}

Muchas gracias por la ayuda prestada
  #5 (permalink)  
Antiguo 22/08/2010, 05:22
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: Menú + switch

Hola,

Debes ponerlo al revez, la solución a la que llegaste no debe funcionar tampoco. Porque primero recupero el valor de $contenido y luego lo evalúo:

Código PHP:
$contenido $_GET["contenido"];
if (!isset(
$contenido))   
    
$contenido="inicio"
El error no es un error, sino un aviso de que $contenido no existe si no está en el link. Estas notificaciones pueden ser ignoradas, pero algunos servidores las muestran igual. Puedes ocultarlas agregando esto al principio del código:

Código PHP:
error_reporting(E_ALL E_NOTICE); 
Saludos!
  #6 (permalink)  
Antiguo 22/08/2010, 05:37
 
Fecha de Ingreso: mayo-2009
Mensajes: 153
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Menú + switch

Cita:
Iniciado por geq Ver Mensaje
Hola,

Debes ponerlo al revez, la solución a la que llegaste no debe funcionar tampoco. Porque primero recupero el valor de $contenido y luego lo evalúo:

Código PHP:
$contenido $_GET["contenido"];
if (!isset(
$contenido))   
    
$contenido="inicio"
El error no es un error, sino un aviso de que $contenido no existe si no está en el link. Estas notificaciones pueden ser ignoradas, pero algunos servidores las muestran igual. Puedes ocultarlas agregando esto al principio del código:

Código PHP:
error_reporting(E_ALL E_NOTICE); 
Saludos!
Hola gep,

Es curioso xq si lo pongo como me dices me salta el aviso, sin embargo si lo pongo como te he comentado todo funciona correctamente y no aparece el aviso.

Muchas gracias

Etiquetas: switch
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 15:24.