Ver Mensaje Individual
  #7 (permalink)  
Antiguo 05/08/2009, 19:55
jonatanc
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Mensaje: Notice: Undefined index

Estimado , ser novato no significa no interiorizarse sobre las soluciones propuestas , le explico en modo más extendido su problema y la solución planteada.

Su problema: Undefine index

El motivo del error "Notice: Undefined Index" , se debe a lo siguiente , imaginese usted que posee una fila de alumnos , cada alumno tiene una posición determinada en la fila , pues bien , numeremos los alumnos del 0 a la cantidad de alumnos que tengamos , es decir imaginemos que tenemos 5 alumnos:

Alumno Posición

Esteban 0
Juan 1
Eric 2
Jessica 3
Mercedes 4

Pues bien , esa es nuestra fila , como podria observar empezaremos a contar desde el 0 ,con lo cual si tenemos hasta el numero ordinal 4 quiere decir que tenemos (4+1) debido a que empezamos un numero antes a contar , es decir tendremos nuestros 5 alumnos.

Proseguimos , usted es un director muy malvado de escuela y desea castigar en forma aleatorio a que el alumno X limpie su despacho todos los dias durante un mes , usted siempre confiado en que sus alumnos no se escapen de la fila , justamente ese dia su madre lo llama en el momento de la elección del alumno a castigar y se da vuelta por un instante , cuando regresa la mirada sobre la fila , no nota que falta un alumno ya que previamente a usted le dieron una lista con los nombres y ya tenia como decisión anticipada castigar a Esteban porque le parecia feo su nombre , entoncés dice Esteban venga aqui , nadie va a donde usted solicita ya que esteban sin que usted se de cuenta se escapo de la fila y se escondio en un armario viejo .Entoncés al convocarlo no vendra con lo cual nos generara un problema de que al no existir no podremos convocarlo.

Pues bien creo que fue claro el ejemplo , pero ahora pasemos a php.

El tipo de dato estructuado ARREGLO es una estructura que puede modelizarse como una colección contigua y ORDENADA de elementos en memoria , quiere decir que imaginese que esteban ocupe la dirección de memoria 0000 , juan ocupara la 0001 y asi sucesivamente hasta la dirección 0004 que pertenecera a mercedes.Dicha estructura permite el acceso mediante la variable identificatoria , suponga en php lo siguiente:

Código php:
Ver original
  1. <?php
  2.  
  3. $dato=array(); //-- La variable identificatoria es $data
  4.  
  5. ?>

y un indice , por que un indice? como hemos dicho es una coleccion ORDENADA y su ocupación en memoria es consecutiva , con lo cual podemos decir que para acceder a dicha estructura lo hacemos en forma DIRECTA mediante un identificador y un valor entero del tipo ordinal (indice).

Veamos un ejemplo en php.

Código php:
Ver original
  1. <?php
  2.  
  3. $arreglo=array(1,2,3,4,5);
  4.  
  5. //-- Accesos validos
  6. echo $arreglo['0']; //-- Retorna 1
  7. echo $arreglo['1']; //-- Retorna 2
  8. echo $arreglo['2']; //-- Retorna 3
  9. echo $arreglo['3']; //-- Retorna 4
  10. echo $arreglo['4']; //-- Retorna 5
  11.  
  12. //-- Acceso invalido ya que el componente no existe
  13. echo var_dump($arreglo['6']);
  14.  
  15. ?>

Como vemos en el codigo al intentar acceder a un componente que no existe en una coleccion /arreglo nos dira en este caso NULL (Nulo) transporando estos conocimientos a su problema particular , el envio de datos mediante los metodos GET o POST generan arreglos Asociativos es decir (llave->valor) con los valores pasados via URL o FORM en el caso de GET y en el caso de POST pasados via formulario , al usted intentar acceder a un componente inexistente ID , debido a que usted en la cadena de consulta (QUERY_STRING) no ha accedido de la forma:

Código php:
Ver original
  1. http://www.micasalindalindalinda.com/index.php?id=valor

sino de la forma:

Código php:
Ver original
  1. http://www.micasalindalinda.com/index.php?

el componente id no existe en su arreglo GET , decimos GET debido a que los parametros pasados por URL son almacenados por dicho arreglo.

La solución a este problema se encuentra haciendo lo siguiente:

Código php:
Ver original
  1. <?php
  2. if(isset($_GET['id']){
  3. echo "esta pasado el parametro id";
  4. }else{
  5. echo "no esta pasado";
  6. }
  7. ?>

Vea usted que con la función isset comprobamos si una variable esta declarada o no , de este modo comprobamos si el parametro id esta inicializado y declarado en su arreglo GET , si no lo esta quiere decir que usted no accedio pasando ese parametro via url .

Espero que mi explicación le haya sido de utilidad .

Saludos!