Foros del Web » Programando para Internet » PHP »

Duda con mysql_fetch_array

Estas en el tema de Duda con mysql_fetch_array en el foro de PHP en Foros del Web. Saludos compañeros, estoy empezando con el php y bueno les comento aqui mi duda. Hasta ahora para poder leer todos los datos de un array ...
  #1 (permalink)  
Antiguo 14/03/2010, 22:28
Avatar de Sr_Furia  
Fecha de Ingreso: abril-2009
Mensajes: 111
Antigüedad: 10 años, 8 meses
Puntos: 8
Duda con mysql_fetch_array

Saludos compañeros, estoy empezando con el php y bueno les comento aqui mi duda.

Hasta ahora para poder leer todos los datos de un array simple, siempre uso un bucle for sencillo como el que pongo a continuacion, en el que el valor de $i , va sumandose :


Código PHP:

$array
[0]="valor uno";
$array[1]="valor dos";
$array[2]="valor tres";

for (
$i=0$i<3$i++)
   echo 
"array[$i]; 
El problema viene con una parte de codigo en la que despues de hacer una consulta a una base de datos, se muestran los datos del resultado usando la funcion mysql_fetch_array. Basicamente lo que no logro comprender, es que es lo que hace que avanzar el puntero en las posiciones del array ? Os escribo aqui debajo el trozo de codigo , que funciona a la perfeccion mostrandome todo que le pido en la consulta a la base de datos.

Pero lo que me gustaria que alguien me explicase, el motivo por el cual va mostrando todas las posiciones del array, porque dentro del bucle, yo no veo nada parecido a row[$i] . Espero puedan ayudarme, les dejo aqui el codigo

Código PHP:
for ($i=0$i<$num_resultados$i++)
      {
          
$fila mysql_fetch_array ($resultado);
          echo 
"Nombre : ".$fila["nombre"]."<br>";
          echo 
"Email  : ".$fila["email"]."<br>";
          echo 
"Marca  : ".$fila["marca"]."<br>";
          echo 
"Modelo : ".$fila["modelo"]."<br><br>";
      } 
  #2 (permalink)  
Antiguo 14/03/2010, 22:48
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.978
Antigüedad: 11 años, 4 meses
Puntos: 2192
Respuesta: Duda con mysql_fetch_array

Lo que pasa es que al ejecutar una consulta mysql_query() se genera un juego de resultados, al que solo puedes tener acceso mediante funciones como mysql_fetch_row(), mysql_fetch_assoc(), mysql_fetch_array(), etc. y cada llamada con estas funciones hace que avance el apuntador en los resultados obtenidos por la consulta.

Lo que haces en tu ciclo for() es simplemente ejecutar mysql_fetch_array() tantas veces como resultados obtuviste de la consulta, pero bien podrias cambiar el bucle por while(condicion) {}

Código PHP:
Ver original
  1. while($fila = mysql_fetch_array($resultado)) {
  2.     echo "bla bla bla";
  3. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 15/03/2010, 00:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 9 años, 8 meses
Puntos: 0
De acuerdo

Amigo pasa que cuando haces $fila = mysql_fetch_array ($resultado); la variable $fila pasa a ser un arreglo de php, con las posiciones que devuelve la consulta en la base de datos. Es por eso que al hacer echo "Nombre : ".$fila["nombre"]."<br>"; te devuelve un nombre obtenido en la consulta, daria el mismo resultado hacer:
echo "Nombre : ".$fila[1]."<br>";
echo "Email : ".$fila[2]."<br>";
y asi sucesivamente en el mismo orden que te los devuelva mysql.

Pasa amigo mio que cuando haces $fila = mysql_fetch_array ($resultado); , $fila se crea como un arreglo de php con una longuitud que es determinada por los datos que contenga fetch_array al hacer la consulta sql.

Por eso $fila contiene los datos de la consulta y puedes acceder a ellos mediante llamadas como estas: $fila["nombre"]; $fila["email"]; cabe mencionar que seria lo mismo hacer: $fila[1]; $fila[2];.

Última edición por GatorV; 15/03/2010 a las 01:35
  #4 (permalink)  
Antiguo 15/03/2010, 07:25
Avatar de Sr_Furia  
Fecha de Ingreso: abril-2009
Mensajes: 111
Antigüedad: 10 años, 8 meses
Puntos: 8
Respuesta: Duda con mysql_fetch_array

Gracias por las respuestas.

Yo pensaba que para hacer mover el puntero del array, habia que moverlo obligatoriamente mediante un bucle, en el que fuera variando el indice de cada"casilla del array".

Por lo que entiendo aqui, cada vez que se repite la llamada a la funcion, esata avanza automaticamente el puntero un puesto a la derecha, y por eso es por lo que la llamada a la funcion mysql_fetch_array esta dentro dentro del bucle for.

Gracias por aclararme estas dudas, estoy empezando en este mundo, y se agradece saber que hay alguien que te echa una mano cuando lo necesitas ;)
  #5 (permalink)  
Antiguo 15/03/2010, 09:51
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 12 años, 1 mes
Puntos: 5
Respuesta: Duda con mysql_fetch_array

Cita:
Iniciado por Sr_Furia Ver Mensaje
Yo pensaba que para hacer mover el puntero del array, habia que moverlo obligatoriamente mediante un bucle, en el que fuera variando el indice de cada"casilla del array".

;)
Me pasó lo mismo al principio, cuando solo conocía C

Cita:
Iniciado por Sr_Furia Ver Mensaje
Por lo que entiendo aqui, cada vez que se repite la llamada a la funcion, esata avanza automaticamente el puntero un puesto a la derecha, y por eso es por lo que la llamada a la funcion mysql_fetch_array esta dentro dentro del bucle for.
Sip, mas o menos traducido a code sería
Código PHP:
Ver original
  1. while ($fila = mysql_fetch_array($consulta){
  2. echo $fila['campo_tabla1'];
  3. echo $fila['campo_tabla2'];
  4. }

Etiquetas: Ninguno
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:50.