Foros del Web » Programando para Internet » PHP »

Undefined index y Undefined variable

Estas en el tema de Undefined index y Undefined variable en el foro de PHP en Foros del Web. Que tal Maestros, estoy haciendo una busqueda pero tengo varios problemas con Undefined index y Undefined variable @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original if ( ...
  #1 (permalink)  
Antiguo 23/06/2011, 19:28
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 9 años, 10 meses
Puntos: 4
Pregunta Undefined index y Undefined variable

Que tal Maestros, estoy haciendo una busqueda pero tengo varios problemas con Undefined index y Undefined variable
Código PHP:
Ver original
  1. if ($_GET["busqueda"]!="")
Código PHP:
Ver original
  1. $fila_campos=mysql_query("SELECT * FROM isistemas WHERE nombre_residente=nombre_residente ". $filtro .";",$conexion);
Código PHP:
Ver original
  1. elseif ($_GET["busqueda"]!="")
Código PHP:
Ver original
  1. $fila_campos=mysql_query("SELECT * FROM isistemas WHERE nombre_residente=nombre_residente ". $filtro ." LIMIT $inicio,$registros;",$conexion);
Código PHP:
Ver original
  1. <span><?php echo $enlace; ?></span>


y este es el codigo completo:

<?php
include("conexion.php");

//===================== CREAMOS FILTRO DE BUSQUEDA =========================
if ($_GET["busqueda"]!="") //Si se ha escrito algo para buscar
{
if (is_string($_GET["busqueda"]))
$filtro = " and (nombre_residente like '%". $_GET["busqueda"] ."%' or correo_electronico=". $_GET["busqueda"] .")" ;
else
$filtro = " and (nombre_residente like '%". $_GET["busqueda"] ."%' or correo_electronico like '%". $_GET["busqueda"] ."%')" ;
$enlace="<a href='consultaresidentesisistemas.php' title='Clic para ver todos los Residentes'>Mostrar todos</a>";
}
//===================== FIN FILTRO DE BUSQUEDA =========================

//Consultamos la tabla isistemas
$fila_campos=mysql_query("SELECT * FROM isistemas WHERE nombre_residente=nombre_residente ". $filtro .";",$conexion);
//Averiguamos cuántos registros devolvió la consulta anterior.
$numero_reg=mysql_num_rows($fila_campos);

//============== VERIFICAR RESULTADOS DE LA BUSQUEDA O CONSULTA ==================
if ($numero_reg==0 && $_GET["busqueda"]=="")
{ //Si no buscamos nada y la consulta arrojó CERO productos, mostrar mensaje.
echo mostrar_mensaje_error("Sin registros","No se encontro; ningun registro en la base de datos","","<a href='ISistemas.php'>Ingresar nuevo Residente</a>");
exit();
} elseif ($numero_reg==0){ //Mensaje para mostrar
$mensaje_registros="<font color='red'>No se han hallado registros con el criterio: <strong>". $_GET["busqueda"] ."</strong></font>";
} elseif ($_GET["busqueda"]!=""){//MEnsaje para mostrar
$mensaje_registros="<font color='blue'>Registros hallados con el criterio '<strong>". $_GET["busqueda"] ."</strong>': ". $numero_reg ."</font>";
} else {
$mensaje_registros="Registros en la base de datos: ". $numero_reg;
}
//============== FIN VERIFICAR RESULTADOS DE LA BUSQUEDA O CONSULTA ==================

//============== GESTIONAR PAGINACION =============================
$numero_reg=mysql_num_rows($fila_campos);
$registros = 5;
$pagina = $_REQUEST["num"];

if (!$pagina) {
$inicio = 0;
$pagina = 1;
}
else {
$inicio = ($pagina - 1) * $registros;
}
//============== FIN PAGINACION =============================

//Consulta con limit que permite paginar
$fila_campos=mysql_query("SELECT * FROM isistemas WHERE nombre_residente=nombre_residente ". $filtro ." LIMIT $inicio,$registros;",$conexion);
$total_paginas = ceil($numero_reg / $registros);

?>
<html>
<head>
<title>Consulta</title>
</head>

<body>
<div class="auto-style7">
<br>
<a href="menu2.php">Atras</a><br>
</div>
<form method="get" action="consultaresidentesisistemas.php?num=1">
<span class="auto-style8">&nbsp;&nbsp;&nbsp;&nbsp; Buscar</span>&nbsp;
<input name="busqueda" type="text" id="busqueda" style="width: 209px" value="<?php echo $_GET['busqueda'];?>">&nbsp;&nbsp;&nbsp;
<input name="btnbuscar" type="submit" id="btnbuscar" value="Buscar" class="auto-style9">&nbsp;&nbsp;&nbsp;
<span><?php echo $enlace; ?></span><span><?php echo $mensaje_registros ?></span><br>
<br><hr><br></form><br>
<center>
<table border="0" cellspacing="0" style="width: 100%">
<tr>
<th width="150" ><div align="center" >Nombre Residente</div></th>
<th width="50" ><div align="center" >Correo Electronico</div></th>
<th width="100" ><div align="center" >Telefono</div></th>
<th width="100" ><div align="center" >Nombre del Proyecto</div></th>
<th width="150" ><div align="center" >Asesor P/ Residencias</div></th>
<th width="150" ><div align="center" >Revisor de Informe Tecnico</div></th>
<th width="100" ><div align="center" >Fecha Inicio</div></th>
<th width="100" ><div align="center" >Fecha Termino</div></th>
<th width="100" ><div align="center" >Fecha Examen</div></th>
<th width="50" ><div align="center" >Modificar</div></th>
<th width="50" ><div align="center" >Eliminar</div></th>
</tr>
<?php


$color="#E0E0E0";
while ($fila=mysql_fetch_array($fila_campos))
{
if ($color=="#FFFFCC") //claro
$color="#FFFF9F";
else
$color="#FFFFCC";
?>
<tr bgcolor="<?php echo $color; ?>">
<td>
<div align="center"><?php echo $fila["nombre_residente"]; ?></div></td>
<td>
<div align="center"><?php echo $fila["correo_electronico"]; ?></div></td>
<td>
<div align="center"><?php echo $fila["telefono"]; ?></div></td>
<td>
<div align="center"><?php echo $fila["nombre_proyecto"]; ?></div></td>
<td>
<div align="center"><?php echo $fila["asesor"]; ?></div></td>
<td>
<div align="center"><?php echo $fila["revisor"]; ?></div></td>
<td>
<div align="center"><?php echo $fila["fecha_inicio"]; ?></div></td>
<td>
<div align="center"><?php echo $fila["fecha_termino"]; ?></div></td>
<td>
<div align="center"><?php echo $fila["fecha_examen"]; ?></div></td>
<td><div align="center"><a onClick="window.open('modificarISistemas.php?nomre s=<?php echo $fila["nombre_residente"]; ?>&num=<?php echo $_GET["num"]; ?>','Modificar','width=850,height=600,left=250,top =100,menubar=1,toolbar=1,resizable=0,resizable=no, scrollbars=0,scrollbars=yes')" href="javascript:void(0);">Modificar</a></div></td>
<td><div align="center"><a href="confirmaeliminaresidente.php?nomres=<?php echo $fila["nombre_residente"]; ?>&num=<?php echo $_GET["num"]; ?>" title="Clic para eliminar <?php echo $fila["nombre_residente"]; ?>">Eliminar</a></div></td>
</tr>
<?php
}
?>

</table><?php

//Pagina Anterior
if(($pagina - 1) > 0) {
echo "<a href='consultaresidentesisistemas.php?num=".($pagi na-1)."'>< Anterior</a> ";
}
//Listado de paginas
if ($total_paginas>1)
{
for ($i=1; $i<=$total_paginas; $i++){
if ($pagina == $i) {
echo "<b><font color='#FF0000' size='3'>".$pagina."</font></b> ";
} else {
echo "<a href='consultaresidentesisistemas.php?num=$i'>$i</a> ";
}
}
}
//Pgina Siguiente
if(($pagina + 1)<=$total_paginas) {
echo " <a href='consultaresidentesisistemas.php?num=".($pagi na+1)."'>Siguiente ></a>";
}

?>
</center>
</body>
</html>



tengo mas de 1 semana y no he podido resolver los problemas alguien que me pueda orientar?
Muchas gracias.
  #2 (permalink)  
Antiguo 23/06/2011, 20:06
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 12 años
Puntos: 322
Respuesta: Undefined index y Undefined variable

Undefined index significa que estás intentando acceder a un índice inexistente de un array. Undefined variable significa que estás intentando acceder a una variable inexistente..

Deberías especificar la línea de cada error para poder ayudarte...

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 23/06/2011, 20:18
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 9 años, 10 meses
Puntos: 4
Pregunta Respuesta: Undefined index y Undefined variable

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3.  
  4. //===================== CREAMOS FILTRO DE BUSQUEDA =========================
  5. if ($_GET["busqueda"]!="") //Si se ha escrito algo para buscar
  6. {
  7.     if (is_string($_GET["busqueda"]))
  8.         $filtro = " and (nombre_residente like '%". $_GET["busqueda"] ."%' or correo_electronico=". $_GET["busqueda"] .")" ;
  9.     else
  10.         $filtro = " and (nombre_residente like '%". $_GET["busqueda"] ."%' or correo_electronico like '%". $_GET["busqueda"] ."%')" ;  
  11.     $enlace="<a href='consultaresidentesisistemas.php?num=1' title='Clic para ver todos los Residentes'>Mostrar todos</a>";
  12. }
  13.     //===================== FIN FILTRO DE BUSQUEDA =========================
  14.  
  15. //Consultamos la tabla isistemas
  16. $fila_campos=mysql_query("SELECT * FROM isistemas WHERE nombre_residente=nombre_residente ". $filtro .";",$conexion);
  17. //Averiguamos cuántos registros devolvió la consulta anterior.
  18. $numero_reg=mysql_num_rows($fila_campos);
  19.  
  20. //============== VERIFICAR RESULTADOS DE LA BUSQUEDA O CONSULTA ==================
  21. if ($numero_reg==0 && $_GET["busqueda"]=="")
  22. { //Si no buscamos nada y la consulta arrojó CERO productos, mostrar mensaje.
  23.     echo mostrar_mensaje_error("Sin registros","No se encontro; ningun registro en la base de datos","","<a href='ISistemas.php'>Ingresar nuevo Residente</a>");
  24.     exit();
  25. } elseif ($numero_reg==0){ //Mensaje para mostrar
  26.     $mensaje_registros="<font color='red'>No se han hallado registros con el criterio: <strong>". $_GET["busqueda"] ."</strong></font>";
  27. } elseif ($_GET["busqueda"]!=""){//MEnsaje para mostrar
  28.     $mensaje_registros="<font color='blue'>Registros hallados con el criterio '<strong>". $_GET["busqueda"] ."</strong>': ". $numero_reg ."</font>";
  29. } else {
  30.     $mensaje_registros="Registros en la base de datos: ". $numero_reg;
  31. }
  32. //============== FIN VERIFICAR RESULTADOS DE LA BUSQUEDA O CONSULTA ==================
  33.  
  34. //============== GESTIONAR PAGINACION =============================
  35. $numero_reg=mysql_num_rows($fila_campos);
  36. $registros = 5;
  37. $pagina = $_REQUEST["num"];
  38.  
  39. if (!$pagina) {
  40.     $inicio = 0;
  41.     $pagina = 1;
  42. }
  43. else {
  44.     $inicio = ($pagina - 1) * $registros;
  45. }
  46. //============== FIN PAGINACION =============================
  47.  
  48. //Consulta con limit que permite paginar
  49. $fila_campos=mysql_query("SELECT * FROM isistemas WHERE nombre_residente=nombre_residente ". $filtro ." LIMIT $inicio,$registros;",$conexion);
  50. $total_paginas = ceil($numero_reg / $registros);
  51.  
  52. ?>
  53. <html>
  54. <head>
  55. <title>Consulta</title>
  56. <style type="text/css">
  57. .ms-simple1-main {
  58.     border-left-style: none;
  59.     border-right-style: none;
  60.     border-top: 1.5pt solid green;
  61.     border-bottom: 1.5pt solid green;
  62. }
  63. .ms-simple1-tl {
  64.     border-left-style: none;
  65.     border-right-style: none;
  66.     border-top-style: none;
  67.     border-bottom: .75pt solid green;
  68. }
  69. .ms-simple1-top {
  70.     border-left-style: none;
  71.     border-right-style: none;
  72.     border-top-style: none;
  73.     border-bottom: .75pt solid green;
  74. }
  75.  
  76. *
  77. {
  78. padding: 0em;
  79. margin: 0em;
  80. }
  81.  
  82. *
  83. {
  84. padding: 0em;
  85. margin: 0em;
  86. }
  87.  
  88. .auto-style7 {
  89.     text-align: right;
  90. }
  91.  
  92. .auto-style8 {
  93.     font-family: Aharoni;
  94.     font-size: medium;
  95.     color: #00FF00;
  96. }
  97.  
  98. .auto-style9 {
  99.     font-family: Aharoni;
  100. }
  101.  
  102. </style>
  103. </head>
  104.  
  105. <body>
  106. <div class="auto-style7">
  107. <br>
  108. <a href="menu2.php">Atras</a><br>
  109. </div>
  110. <form method="get" action="consultaresidentesisistemas.php?num=1">
  111.     <span class="auto-style8">&nbsp;&nbsp;&nbsp;&nbsp; Buscar</span>&nbsp;
  112.  <input name="busqueda" type="text" id="busqueda" style="width: 209px" value="<?php echo $_GET['busqueda'];?>">&nbsp;&nbsp;&nbsp;  
  113.     <input name="btnbuscar" type="submit" id="btnbuscar" value="Buscar" class="auto-style9">&nbsp;&nbsp;&nbsp;
  114.         <span><?php echo $enlace; ?></span><span><?php echo $mensaje_registros ?></span><br>
  115.     <br><hr><br></form><br>
  116. <center>
  117. <table border="0" cellspacing="0" style="width: 100%">
  118.         <tr>
  119.           <th width="150"   ><div align="center" >Nombre Residente</div></th>
  120.           <th width="50"  ><div align="center" >Correo Electronico</div></th>
  121.           <th width="100"  ><div align="center" >Telefono</div></th>
  122.           <th width="100"  ><div align="center" >Nombre del Proyecto</div></th>
  123.           <th width="150"  ><div align="center" >Asesor P/ Residencias</div></th>
  124.           <th width="150"  ><div align="center" >Revisor de Informe Tecnico</div></th>
  125.           <th width="100"  ><div align="center" >Fecha Inicio</div></th>
  126.           <th width="100"  ><div align="center" >Fecha Termino</div></th>
  127.           <th width="100"  ><div align="center" >Fecha Examen</div></th>
  128.           <th width="50"  ><div align="center" >Modificar</div></th>
  129.           <th width="50" ><div align="center" >Eliminar</div></th>
  130.         </tr>
  131.         <?php
  132.    
  133.    
  134.     $color="#E0E0E0";
  135.     while ($fila=mysql_fetch_array($fila_campos))
  136.     {
  137.         if ($color=="#FFFFCC") //claro
  138.             $color="#FFFF9F";
  139.         else
  140.             $color="#FFFFCC";
  141.     ?>
  142.         <tr bgcolor="<?php echo $color; ?>">
  143.           <td>
  144.             <div align="center"><?php  echo $fila["nombre_residente"]; ?></div></td>
  145.           <td>
  146.           <div align="center"><?php  echo $fila["correo_electronico"]; ?></div></td>
  147.           <td>
  148.           <div align="center"><?php  echo $fila["telefono"]; ?></div></td>
  149.           <td>
  150.           <div align="center"><?php  echo $fila["nombre_proyecto"]; ?></div></td>
  151.           <td>
  152.           <div align="center"><?php  echo $fila["asesor"]; ?></div></td>
  153.           <td>
  154.           <div align="center"><?php  echo $fila["revisor"]; ?></div></td>
  155.           <td>
  156.           <div align="center"><?php  echo $fila["fecha_inicio"]; ?></div></td>
  157.           <td>
  158.           <div align="center"><?php  echo $fila["fecha_termino"]; ?></div></td>
  159.           <td>
  160.           <div align="center"><?php  echo $fila["fecha_examen"]; ?></div></td>
  161.           <td><div align="center"><a onClick="window.open('modificarISistemas.php?nomres=<?php echo $fila["nombre_residente"]; ?>&num=<?php echo $_GET["num"]; ?>','Modificar','width=850,height=600,left=250,top=100,menubar=1,toolbar=1,resizable=0,resizable=no,scrollbars=0,scrollbars=yes')" href="javascript:void(0);">Modificar</a></div></td>
  162.           <td><div align="center"><a href="confirmaeliminaresidente.php?nomres=<?php  echo $fila["nombre_residente"]; ?>&num=<?php echo $_GET["num"]; ?>" title="Clic para eliminar <?php echo $fila["nombre_residente"]; ?>">Eliminar</a></div></td>
  163.         </tr>
  164.         <?php
  165.     }
  166.     ?>
  167.        
  168.       </table><?php
  169.  
  170.     //Pagina Anterior
  171.     if(($pagina - 1) > 0) {
  172.         echo "<a href='consultaresidentesisistemas.php?num=".($pagina-1)."'>< Anterior</a> ";
  173.         }
  174.     //Listado de paginas
  175.     if ($total_paginas>1)
  176.     {
  177.         for ($i=1; $i<=$total_paginas; $i++){
  178.             if ($pagina == $i) {
  179.                 echo "<b><font color='#FF0000' size='3'>".$pagina."</font></b> ";
  180.             } else {
  181.                 echo "<a href='consultaresidentesisistemas.php?num=$i'>$i</a> ";
  182.             }
  183.         }
  184.     }
  185.     //Pgina Siguiente
  186.     if(($pagina + 1)<=$total_paginas) {
  187.         echo " <a href='consultaresidentesisistemas.php?num=".($pagina+1)."'>Siguiente ></a>";
  188.     }
  189.  
  190. ?>
  191. </center>
  192. </body>
  193. </html>

los errores estan en la linea 5,16,27,49 y 114
Undefined index: busqueda in C:\wamp\www\Sistema\consultaresidentesisistemas.ph p on line 5
Undefined variable: filtro in C:\wamp\www\Sistema\consultaresidentesisistemas.ph p on line 16
Undefined index: busqueda in C:\wamp\www\Sistema\consultaresidentesisistemas.ph p on line 27
Undefined variable: filtro in C:\wamp\www\Sistema\consultaresidentesisistemas.ph p on line 49
Undefined variable: enlace in C:\wamp\www\Sistema\consultaresidentesisistemas.ph p on line 114
gracias!!
  #4 (permalink)  
Antiguo 23/06/2011, 20:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 13 años, 1 mes
Puntos: 2534
Respuesta: Undefined index y Undefined variable

Vamos a verlo de la forma mas sencilla posible.

Las variables no sea definen solas, debe existir un algo o alguien que las defina en el contexto actual.

Un programador por ejemplo es el que define que variables necesita, sus valores, etc.
Código PHP:
$foo 'bar'
Asi entonces tambien existen variables super globales, las cuales define el mismo lenguaje -o usuario- bajo determinadas circunstancias.

Entonces PHP al recibir parametros en la URL define variables $_GET, si hay post entonces $_POST, etc.

script.php?candy=does
Código PHP:
echo $_GET['candy']; // does 
Si en dicha URL no colocamos ningun parametro despues del ? entonces no se definen variables $_GET, asi mismo pasa con otros tipos de variable en general.

Y eso es todo, los problemas con indices indefinidos es que precisamente no existe dicha clave en dicho array.

Los problema que indican que la variable no esta definida entonces asi es, simplemente no existe nada.

Cuando reflexionas con tu codigo, es facil observar que deliberadamente asumes que la variable $_GET['busqueda'] existe, pero no es asi.

¡Ahi tienes el error!

La solucion todo el tiempo es predefinir algun valor -en caso de variables definidas manualmente- o bien, asignar un valor por defecto en cualquier otra circunstancia.

Código PHP:
// usuario
$foo null// valor inicial

// if (algo) $foo = ...


// request
$foo = isset($_GET['bar']) ? $_GET['bar'] : null
De esta manera sabemos que aunque no se pase ninguna variable por URL al menos tenemos un valor defecto el cual nos va a evitar estos dolores de cabeza.

Espero que te sirva, y a los demas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 23/06/2011 a las 20:35 Razón: Errata
  #5 (permalink)  
Antiguo 23/06/2011, 20:30
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 9 años, 10 meses
Puntos: 4
De acuerdo Respuesta: Undefined index y Undefined variable

Muchisimas gracias!!! voy a chkar el codigo esta bien explicado.
  #6 (permalink)  
Antiguo 23/06/2011, 22:32
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 9 años, 10 meses
Puntos: 4
Pregunta Respuesta: Undefined index y Undefined variable

hola de nuevo, tras tu explicacion me quedo muy claro acerca de las variables de verdad muchas gracias, solo que he probado definir la variable busqueda como el ejemplo que pusiste, solo que aun no logro correrlo, seria mucho pedir como lo harias tu? y en que seccion del codigo iria? gracias master.
saludos!
  #7 (permalink)  
Antiguo 23/06/2011, 22:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 13 años, 1 mes
Puntos: 2534
Respuesta: Undefined index y Undefined variable

Yo definiría la variable antes de usarla, al inicio del script esta bien.
Código PHP:
$busqueda = isset($_GET['busqueda']) ? $_GET['busqueda'] : null
Y desde luego usar $busqueda a partir de ahí.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: index, undefined, variables
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 1 personas




La zona horaria es GMT -6. Ahora son las 20:02.