Foros del Web » Programando para Internet » PHP »

while ($row = pg_fetch_row($result)) De tres en tres ¡¿??

Estas en el tema de while ($row = pg_fetch_row($result)) De tres en tres ¡¿?? en el foro de PHP en Foros del Web. He usado el while ($row = pg_fetch_row($result)) , para imprimir datos dentro de una tabla . Pero no entendi del todo su funcionamiento, ya que ...
  #1 (permalink)  
Antiguo 30/08/2011, 13:27
Avatar de EthanBrody  
Fecha de Ingreso: abril-2011
Ubicación: Tierra Blanca, Veracruz-Llave, Mexico, Mexico
Mensajes: 21
Antigüedad: 13 años
Puntos: 1
while ($row = pg_fetch_row($result)) De tres en tres ¡¿??

He usado el while ($row = pg_fetch_row($result)), para imprimir datos dentro de una tabla .

Pero no entendi del todo su funcionamiento, ya que no veo donde indicamos los incrementos de los REGISTROS (no de las celdas), y ahora tengo un problema.

Necesito imprimir datos en tablas, pero de manera que el 1er registro se vaya a 1 tabla1, el 2do se vaya a otra tabla2 y el 3ro se vaya a otra tabla3 ... y que hay se repita el ciclo, que 4to registro se vaya a tabla1, el 5to se vaya a tabla2 y así consecutivamente.

Muchas gracias.
  #2 (permalink)  
Antiguo 30/08/2011, 13:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: while ($row = pg_fetch_row($result)) De tres en tres ¡¿??

Avanza solamente un registro a la vez, ya que pg_fetch_row() avanza el puntero de uno en un, para lo que quieres hacer, puedes hacer algo así:

Código PHP:
Ver original
  1. $reg1 = array();
  2. $reg2 = array();
  3. $reg3 = array();
  4. $counter = 0;
  5. while ($row =pg_fetch_row($result)) {
  6.       $reg1[] = $row;
  7.       $row = pg_fetch_row($result);
  8.       $reg2[] = $row;
  9.       $row = pg_fetch_row($result);
  10.       $reg3[] = $row;
  11. }

Así ya tendrías 3 rows que puedes ciclarlos en tus tablas usando foreach() por ejemplo.

Saludos.
  #3 (permalink)  
Antiguo 30/08/2011, 13:47
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: while ($row = pg_fetch_row($result)) De tres en tres ¡¿??

Cita:
Iniciado por GatorV Ver Mensaje
Avanza solamente un registro a la vez, ya que pg_fetch_row() avanza el puntero de uno en un, para lo que quieres hacer, puedes hacer algo así:

Código PHP:
Ver original
  1. $reg1 = array();
  2. $reg2 = array();
  3. $reg3 = array();
  4. $counter = 0;
  5. while ($row =pg_fetch_row($result)) {
  6.       $reg1[] = $row;
  7.       $row = pg_fetch_row($result);
  8.       $reg2[] = $row;
  9.       $row = pg_fetch_row($result);
  10.       $reg3[] = $row;
  11. }

Así ya tendrías 3 rows que puedes ciclarlos en tus tablas usando foreach() por ejemplo.

Saludos.
Tengo una pregunta con ese ejemplo. En caso que el segundo $row = pg_fetch_row($result); ya no tenga resultados, el tercero no tirara algun notice o warning?
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #4 (permalink)  
Antiguo 30/08/2011, 13:48
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: while ($row = pg_fetch_row($result)) De tres en tres ¡¿??

No, no da error porque cuando no tiene más registros devuelve false.

Edit: ¿Qué significa lo que dije? que el último elemento del array tres, tendrá como último registro uno con el valor false, ya sería sino quitarlo con array_pop y ya está.
__________________
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; 30/08/2011 a las 14:00

Etiquetas: registro, row, tabla, tres
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 23:13.