Foros del Web » Programando para Internet » PHP »

error en includes dinámicos

Estas en el tema de error en includes dinámicos en el foro de PHP en Foros del Web. Hola gente. Tengo una duda, espero me ayuden. Al hacer un include dinámico para un sistema de menus, me sale el siguiente error: Notice: Undefined ...
  #1 (permalink)  
Antiguo 17/03/2005, 12:01
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 19 años, 3 meses
Puntos: 0
error en includes dinámicos

Hola gente. Tengo una duda, espero me ayuden.
Al hacer un include dinámico para un sistema de menus, me sale el siguiente error:

Notice: Undefined variable: cmd in F:\Sitios\iep\www\index02b.php on line 57

Nota: Trabajo en un localhost

El códifo de mi include dinámico es la siguiente:
Código:
<? 
if($cmd== "") { 
include("principal.php");
} 

else { 
if(file_exists("$cmd.php")) { 

include("$cmd.php"); 
} 
else { 

echo("<center>Sección no disponible por el momento</center><br><br>") ;
} 
} 
?>
¿Cuál es el error, que mefalta y que debo de hacer?
Gracias de antemano.
  #2 (permalink)  
Antiguo 17/03/2005, 12:08
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Imagino que cmd es un parametro que pasas por URL, ¿verdad? Entonces cuando llamas a la pagina sin pasar el parametro, en el script no se crea ninguna variable llamada cmd. Por eso te avisa, por si acaso te has equivocado con el nombre.

La solucion es usar isset() (www.php.net/isset) o empty() (www.php.net/empty). Y de paso te aconsejo que uses los arrays superglobales $_GET y $_POST para acceder a los parametros que pases. Mira en una de las primeras FAQs la explicacion del por que.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 17/03/2005, 12:21
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 19 años, 3 meses
Puntos: 0
Gracias por la respuesta, pero el "isset" lo tengo definido asi:
Código:
<?php 
   if(isset($PATH_INFO)) { 
      $vardata = explode('/', $PATH_INFO); 
        $num_param = count($vardata); 
        if($num_param % 2 == 0) { 
            $vardata[] = ''; 
            $num_param++; 
        } 
        for($i=1; $i<$num_param; $i+=2) { 
            $$vardata[$i] = $vardata[$i+1]; 
        $total=$total + $$vardata[$i]; 
        } 
    } 
?>
<? 
if($cmd== "") { 
include("principal.php");
} 

else { 
if(file_exists("$cmd.php")) { 

include("$cmd.php"); 
} 
else { 

echo("<center>Sección no disponible por el momento</center><br><br>") ;
} 
} 
?>
Si, cmd es un parametro que paso por URL.

Ayudaaaaa, porfis.
  #4 (permalink)  
Antiguo 17/03/2005, 14:29
 
Fecha de Ingreso: octubre-2004
Ubicación: Guatemala
Mensajes: 83
Antigüedad: 19 años, 5 meses
Puntos: 0
Yo creo que la solucion ya la ha dado josemi:

Cita:
Iniciado por josemi

La solucion es usar isset() (www.php.net/isset) o empty() (www.php.net/empty). Y de paso te aconsejo que uses los arrays superglobales $_GET y $_POST para acceder a los parametros que pases. Mira en una de las primeras FAQs la explicacion del por que.

Saludos.
El isset lo tienes que hacer, preferiblemente, con todos los parametros por URL, utilizando los arrays superglobales.

en tu caso:

Código PHP:
if (isset($_GET['cmd']))
{  
$cmd=$_GET['cmd'];

__________________
Definitivamente la vida no es como en las películas...
C'est la vie
  #5 (permalink)  
Antiguo 17/03/2005, 15:44
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 19 años, 3 meses
Puntos: 0
Disculpen la ignorancia en algunos puntos. Estos códigos trabajan correctamente con un servidor IIS en windows xp o necesariamente debo trabajar con apache, pues antes de entrar en este mundo de PHP, estuve un poquitin metido en ASP.
Prgunto, esto, pues me sigue saliendo el error antes mencionado.

Gracias.
  #6 (permalink)  
Antiguo 17/03/2005, 23:17
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 19 años, 3 meses
Puntos: 0
Alguna sugerencia, por favor?
  #7 (permalink)  
Antiguo 18/03/2005, 02:03
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Al codigo de ogamboa_gt le falta una parte:
Código PHP:
if (isset($_GET['cmd']))
{
  
$cmd=$_GET['cmd'];
} else {
  
$cmd="";

Tal como lo habia puesto, si no le pasabas el parametro seguia sin estar definido $cmd.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 18/03/2005, 02:44
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 5 meses
Puntos: 7
Si quieres mantener el código que has puesto tienes que cambiar:
Código PHP:
   if(isset($PATH_INFO)) { 
Por algo así:
Código PHP:
if (isset($_ENV['PATH_INFO'])) { 
Pero es mucho más sencillo lo que te ha puesto josemi, utilizando un URL que sea como este:
Código PHP:
<a href="milink.php?cmd=misdatos"
¿Cómo es el URL que estás utilizando? ¿es como el que te he puesto? Creo que nos falta este dato para entender mejor el problema...
  #9 (permalink)  
Antiguo 18/03/2005, 06:13
 
Fecha de Ingreso: diciembre-2004
Mensajes: 207
Antigüedad: 19 años, 3 meses
Puntos: 0
Gracias amigos, por la ayuda.
Prefiero mandar la URL de la siguiente manera:
Código PHP:
<a href="milink.php?cmd=misdatos"
Pues de esta forma me es mas sencillo, aunque me dijeron que podia hacerlo asi:
Código PHP:
<a href="milink.php/cmd/misdatos"
Como ya les mencioné, prefiero hacerlo con el primer código mencionado.
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 12:12.