Foros del Web » Programando para Internet » PHP »

no entiendo este error Notice: Undefined offset

Estas en el tema de no entiendo este error Notice: Undefined offset en el foro de PHP en Foros del Web. hola maestros estoy haciendo un ejercicio con una matriz . -lee de la bd id de cursos. $sql="SELECT id FROM curso "; $res=mysql_query($sql) or die ...
  #1 (permalink)  
Antiguo 08/02/2006, 08:36
Avatar de mveraa  
Fecha de Ingreso: diciembre-2002
Ubicación: santiago-chilito
Mensajes: 1.895
Antigüedad: 15 años
Puntos: 2
no entiendo este error Notice: Undefined offset

hola maestros estoy haciendo un ejercicio con una matriz .

-lee de la bd id de cursos.

$sql="SELECT id FROM curso ";


$res=mysql_query($sql) or die ("no lee query");
$num=mysql_num_rows($res);





For ($i=0;$i<$num-1;$i++)

{

-dado el total de registros corre de 0 al $num(total de registros) y el id lo pone en matriz curso.

$curso[$i]=mysql_result($res,$i,0);


-muestra el contenido del la matriz curso con ese indica ($i)
echo "curso:".$curso[$i];
}

-selecciona un numero(azar) entre 0 y el numero de registro($num). ej.2

$numero=rand ( 0 , $num );


-muestra el curso obtenido al azar.

echo "curso seleccionado:".$curso[$numero]; -el error aparece en esta linea.


este es el error que sale

Notice: Undefined offset: 2 in algoritmo_final.php on line 36


un saludo
__________________
"Cuando se adelanta un oponente, enfréntalo y salúdalo; si intenta retroceder, déjalo seguir su camino"
  #2 (permalink)  
Antiguo 08/02/2006, 08:40
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 12 años, 2 meses
Puntos: 18
Creo que el problema es que el rand calcula un numero aleatorio entre los dos parámetros, los dos inclusive. Entonces, deberías poner lo siguiente:
Código PHP:
$numero=rand $num-); 
  #3 (permalink)  
Antiguo 08/02/2006, 10:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Fuera del problema puntual ... Si trabajas con SQL, .. el SQL como leguaje que es tiene muchas cosas interesantes .. por ejemplo el hecho de seleccionar un registro aleatorio de ese resultado de tu consulta SQL simple lo puedes hacer con SQL directo: más limpio y óptimo (imagina si tuvieras miles de registros y necesitas mostrar uno aleatoriamente):

SELECT id FROM curso ORDER BY RAND() LIMIT 1

El "RAND()" es la misma función que usas en PHP y otros lenguajes .. pero del SQL de Mysql .. LIMIT te limita los resultados, de hecho ahí se limita a "1" sólo que es lo que quieres ... pero es muy simple por ejemplo "dar N cursos aleatorios" (tan sólo cambiando ese n°).

Más info y detalles:
http://mysql.conclase.net/curso/index.php?fun=RAND

Un saludo,
  #4 (permalink)  
Antiguo 08/02/2006, 10:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por cierto . .en las funciones de tratamiento de array's tienes las funciones:

array_rand()
http://www.php.net/manual/en/function.array-rand.php

Para tomar un elemento aleatorio de tu array ...


shuffle()
http://www.php.net/manual/en/function.shuffle.php

Con eso desordenas un array completo .. luego es cosa de tomar el primer el elemento (el 0) si sólo quieres uno al azar.

El error que te indica en:
Notice: Undefined offset

Te dice que estás intentando acceder a un indice del array que no existe. Revisa el valor que generas en $numero y recuerda que los indices de un array van de 0 a N.

Un saludo,
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 11:24.