Foros del Web » Programando para Internet » PHP »

mysql_fetch_array 2 veces por qué no funciona?

Estas en el tema de mysql_fetch_array 2 veces por qué no funciona? en el foro de PHP en Foros del Web. -- Hola. Me encuentro hoy con que ejecuto mysql_fetch_array 2 veces en el mismo script y la segunda vez no me muestra los mismos resultados ...
  #1 (permalink)  
Antiguo 27/07/2011, 16:00
Avatar de GendeDios  
Fecha de Ingreso: mayo-2007
Ubicación: Paraiso de America
Mensajes: 135
Antigüedad: 16 años, 11 meses
Puntos: 10
mysql_fetch_array 2 veces por qué no funciona?

--
Hola.
Me encuentro hoy con que ejecuto mysql_fetch_array 2 veces en el mismo script y la segunda vez no me muestra los mismos resultados que la primera, no me muestra nada.

No encuentro razón lógica del motivo:

Código PHP:
Ver original
  1. <?php
  2.         for ($i=0; $i<$num_resultados; $i++)
  3.         {
  4.             $row = mysql_fetch_array($result);
  5.             echo $row['ced'].'<br>';
  6.         }
  7. ?>
  8. <br>
  9. <?php
  10.         for ($i=0; $i<$num_resultados; $i++)
  11.         {
  12.             $row2 = mysql_fetch_array($result);
  13.             echo $row2['ced'].'<br>';
  14.         }
  15. ?>

Cómo puedo volver al inicio de mysql_fetch_array($result) para volver a imprimir el arreglo?

Agredezco enormemente su colaboración aquí en este vacio que hoy no logro resolver.

Saludos.
--
  #2 (permalink)  
Antiguo 27/07/2011, 16:11
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: mysql_fetch_array 2 veces por qué no funciona?

Libera la primera consulta con mysql_free_result y vuelve a consultar para la segunda. Dejo un ejemplo rápido:

Código PHP:
Ver original
  1. <?php
  2. mysql_connect('localhost', 'user', 'pass');
  3. mysql_select_db('basededatos');
  4.  
  5. $sql = 'select * from tabla';
  6. $res = mysql_query($sql);
  7.  
  8. $num_resultados = mysql_num_rows($res);
  9.  
  10.  
  11. for ($i = 0; $i < $num_resultados; $i++) {
  12.     $row = mysql_fetch_array($res);
  13.     echo $row['campo'] . '<br>';
  14. }
  15.  
  16. $sql = 'select * from tabla';
  17. $res = mysql_query($sql);
  18.  
  19. $num_resultados = mysql_num_rows($res);
  20.  
  21.  
  22. for ($i = 0; $i < $num_resultados; $i++) {
  23.     $row2 = mysql_fetch_array($res);
  24.     echo $row2['campo'] . '<br>';
  25. }
  26. ?>
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 27/07/2011, 16:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: mysql_fetch_array 2 veces por qué no funciona?

El problema es que dicha función trabaja con un puntero, una ves recorrido no puedes volver a hacerlo a menos que resetees el puntero.

Cita:
Iniciado por GendeDios Ver Mensaje
[...] No encuentro razón lógica del motivo: [...]
Te invito a leer el manual:
http://php.net/manual/es/function.mysql-data-seek.php

andresdzphp, es absurdo tener que ejecutar dos veces la misma consulta, usa el sentido común.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 27/07/2011, 16:15
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: mysql_fetch_array 2 veces por qué no funciona?

Cita:
Iniciado por pateketrueke Ver Mensaje
El problema es que dicha función trabaja con un puntero, una ves recorrido no puedes volver a hacerlo a menos que resetees el puntero.



Te invito a leer el manual:
[url]http://php.net/manual/es/function.mysql-data-seek.php[/url]

andresdzphp, es absurdo tener que ejecutar dos veces la misma consulta, usa el sentido común.
Si por eso dije que era rápido, prefiero agregar el resultado a un array si lo voy a usar luego.

Código PHP:
Ver original
  1. <?php
  2.  
  3. $c = mysql_connect('localhost', 'root', 'pass');
  4. $sql = 'select * from persona';
  5. $res = mysql_query($sql);
  6. $num_resultados = mysql_num_rows($res);
  7.  
  8. while ($reg = mysql_fetch_array($res)) {
  9.     $lista[] = $reg['nombre'];
  10. }
  11.  
  12.  
  13. echo implode('<br/>', $lista);
  14.  
  15. echo '<hr />';
  16.  
  17. echo implode('<br/>', $lista);

Ahora aplicando mysql_data_seek como dice @pateketrueke

Código PHP:
Ver original
  1. <?php
  2.         for ($i=0; $i<$num_resultados; $i++)
  3.         {
  4.             $row = mysql_fetch_array($result);
  5.             echo $row['ced'].'<br>';
  6.         }
  7. ?>
  8. <br>
  9. <?php
  10.  
  11.       mysql_data_seek($res, 0);
  12.  
  13.         for ($i=0; $i<$num_resultados; $i++)
  14.         {
  15.             $row2 = mysql_fetch_array($result);
  16.             echo $row2['ced'].'<br>';
  17.         }
  18. ?>
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 27/07/2011 a las 16:36 Razón: Agregando información y aprendiendo más =)
  #5 (permalink)  
Antiguo 27/07/2011, 16:54
Avatar de GendeDios  
Fecha de Ingreso: mayo-2007
Ubicación: Paraiso de America
Mensajes: 135
Antigüedad: 16 años, 11 meses
Puntos: 10
Respuesta: mysql_fetch_array 2 veces por qué no funciona?

--
Que bueno encontrar personas como ustedes en este mundo.
Muchas gracias.
--

Etiquetas: order-by
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 13:39.