Foros del Web » Programando para Internet » PHP » Zend »

Zend_Db: select() detiene el ciclo del while

Estas en el tema de Zend_Db: select() detiene el ciclo del while en el foro de Zend en Foros del Web. Buenas tardes, tengo el siguiente sencillo código, que nunca me dio problemas usando mysql o PDO. Código PHP: $categories  =  $db -> select ()-> from ...
  #1 (permalink)  
Antiguo 24/04/2012, 18:14
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Exclamación Zend_Db: select() detiene el ciclo del while

Buenas tardes,
tengo el siguiente sencillo código, que nunca me dio problemas usando mysql o PDO.

Código PHP:
$categories $db->select()->from'categories' )->where('parent=0')->query();

while( 
$row $categories->fetch() ) 
{
    echo 
'<li class="category">' $row['category'] . '</li>';
    
    
$subCategories $db->select()->from'categories' )->where('parent='.$row['id'])->query();


AL hacer la segunda consulta, esta actua como un "break" y no continua el ciclo del while.

Alguien sabe porque sucede esto?

Gracias!
  #2 (permalink)  
Antiguo 24/04/2012, 18:29
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Zend_Db: select() detiene el ciclo del while

puede haber un error en la consulta y no estas mostrando el error, entonces te frena la ejecución .... digo ... de pronto ... me parece
  #3 (permalink)  
Antiguo 24/04/2012, 18:35
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Zend_Db: select() detiene el ciclo del while

dejame entender algo estás haciendo eso en la vista?? ahora, no estas controlando excepciones ni nada parecido??
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #4 (permalink)  
Antiguo 24/04/2012, 18:39
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Zend_Db: select() detiene el ciclo del while

No, estoy usando algunos componentes de Zend, en este caso Zend_Db pero sin la estructura MVC..

De todos modos, no hay error en la consulta. En más, si hago lo siguiente:

Código PHP:
Ver original
  1. echo $subCategories->rowCount();

Arroja el numero de filas afectadas..
  #5 (permalink)  
Antiguo 24/04/2012, 18:44
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Zend_Db: select() detiene el ciclo del while

Este sera el código completo:

Código PHP:
Ver original
  1. while( $row = $categories->fetch() )
  2. {  
  3.     $subCategories = $db->select()->from( 'categories' )->where('parent='.$row['id'])->query();
  4.     echo '<ul>';
  5.     while ($subCategory = $subCategories->fetch())
  6.     {
  7.         echo '<li>' . $subCategory['category'] . '</li>';
  8.     }
  9.     echo '</ul>';
  10. }

Y el resultado que arroja es:
Código HTML:
Ver original
  1. Monitores
  2.  - Monitores LCD
  3.  - Monitores LCD TOP
  4.  - Monitores LCD TOP

por lo tanto, el segundo while lo ejecuta bien, imprime las subcategorias, pero no continua con el primer while!
  #6 (permalink)  
Antiguo 24/04/2012, 18:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Zend_Db: select() detiene el ciclo del while

Que tal McBlink,

Prueba hacer un fetchAll y luego iterar.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 24/04/2012, 18:55
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Zend_Db: select() detiene el ciclo del while

si le quitas la consulta de las subcategorias te itera sobre todas las categorias??
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #8 (permalink)  
Antiguo 24/04/2012, 18:58
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Zend_Db: select() detiene el ciclo del while

masterpuppet,
hice lo que me dijiste, use fetchAll() y recorri los resultados con dos foreach().

Se ejecuto todo correctamente, pero de todos modos me quedo la duda ahora porque cortaba el while de esa forma..

Saludos.
  #9 (permalink)  
Antiguo 24/04/2012, 18:59
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Zend_Db: select() detiene el ciclo del while

Cita:
Iniciado por carlos_belisario Ver Mensaje
si le quitas la consulta de las subcategorias te itera sobre todas las categorias??
Exactamente, si le quito esa consulta muestra las todas las categorias!
  #10 (permalink)  
Antiguo 24/04/2012, 19:18
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Zend_Db: select() detiene el ciclo del while

Si no recuerdo mal es un problema con el cursor, que driver estas utilizando ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #11 (permalink)  
Antiguo 24/04/2012, 19:22
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Zend_Db: select() detiene el ciclo del while

Cita:
Iniciado por masterpuppet Ver Mensaje
Si no recuerdo mal es un problema con el cursor, que driver estas utilizando ?
Estoy usando el driver MYSQLI. Decís que es un bug de Zend_Db?
  #12 (permalink)  
Antiguo 24/04/2012, 19:43
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Zend_Db: select() detiene el ciclo del while

He ahí la madre del cordero, mysqli, Zend hace lo que deberia para no tener problemas con el cursor, utilizar store_result, pero por alguna razón a mysqli le da lo mismo, de todas formas te sugiero que utilices PDO_MYSQL, al ser el driver mas utilizado tiene la tendencia a tener menos problemas.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: class, corta, select, zend-db, ciclos
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 05:00.