Yii Framework Forum: Ayuda con paginación - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Ayuda con paginación Rate Topic: -----

#1 User is offline   quarkmarino 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 11-August 10
  • Location:México

Posted 19 September 2010 - 07:02 AM

Hola, ojala alguien me pudiera ayudar, tengo un problema con la paginacion, resulta que al paginar me muestra un total de x elementos, el cual es menor al numero de elementos que obtengo en la consulta de los items, lo que sucede es que al realizar la consulta al crear un CactiveDataProvider para un CListView mis elementos los agrupo de acuerdo a un campo, por lo que resultan menos elementos de los que cuenta la consulta que obtiene el numero de elementos para la paginacion, he ubicado el problema parcialmente veo que la consulta para contar es:
SELECT COUNT(DISTINCT `existence`.`id`) FROM `tbl_existence` `existence` LEFT JOIN `tbl_playset` `playset` ON (`existence`.`playsetId`=`playset`.`id`) WHERE (playset.year = 1993 AND visibility = 1) 


si tan solo supiera como cambiar el campo a través el cual realiza el conteo de 'id' por 'playsetId'( el cual es el que uso para agurpar en la otra consulta ) funcionaria(lo he probado como consulta directa), he intentado varias maneras, pero aun no ubico en donde cambio el atributo por el cual cuenta la paginacion de elementos, bueno gracias de antemano.
0

#2 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 20 September 2010 - 05:59 AM

View Postquarkmarino, on 19 September 2010 - 07:02 AM, said:

Hola, ojala alguien me pudiera ayudar, tengo un problema con la paginacion, resulta que al paginar me muestra un total de x elementos, el cual es menor al numero de elementos que obtengo en la consulta de los items, lo que sucede es que al realizar la consulta al crear un CactiveDataProvider para un CListView mis elementos los agrupo de acuerdo a un campo, por lo que resultan menos elementos de los que cuenta la consulta que obtiene el numero de elementos para la paginacion, he ubicado el problema parcialmente veo que la consulta para contar es:
SELECT COUNT(DISTINCT `existence`.`id`) FROM `tbl_existence` `existence` LEFT JOIN `tbl_playset` `playset` ON (`existence`.`playsetId`=`playset`.`id`) WHERE (playset.year = 1993 AND visibility = 1) 


si tan solo supiera como cambiar el campo a través el cual realiza el conteo de 'id' por 'playsetId'( el cual es el que uso para agurpar en la otra consulta ) funcionaria(lo he probado como consulta directa), he intentado varias maneras, pero aun no ubico en donde cambio el atributo por el cual cuenta la paginacion de elementos, bueno gracias de antemano.


Como solución temporal, te recomiendo que para paginar consultas con group o having o cualquier otra consulta "compleja", uses el count de php

$models= ClassName::model()->findAll();
$cantidad=count($models);


http://www.yiiframew...e-record-count/

KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#3 User is offline   Asgaroth 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 371
  • Joined: 17-July 09
  • Location:Bogota, Colombia

Posted 20 September 2010 - 09:25 AM

Seria bueno tambien si dejas ver algo del codigo que estas usando cuando creas el CActiveDataProvider y cuando creas el CPagination.

Asgaroth,
- Extension: Dynamic DataProvider Behavior
- Extension: XUpload - jQuery File Upload Extension
- Extension: PhpQuickProfiler - A Web Log Router that will help you profile your application
- Extension: XDateView - A Date grouped Grid View
- Extension: Foundation - An easy to use, powerful, and flexible framework for building prototypes and production code on any kind of device.



- Wiki: How to generate Yii like Documentation
- Wiki: How to re enable logging during unit testing
0

#4 User is offline   gallego123 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 535
  • Joined: 11-August 09
  • Location:Argentina

Posted 20 September 2010 - 09:37 AM

View PostAsgaroth, on 20 September 2010 - 09:25 AM, said:

Seria bueno tambien si dejas ver algo del codigo que estas usando cuando creas el CActiveDataProvider y cuando creas el CPagination.

Asgaroth,



ok, aquí el ejemplo de mi código
uso el método setTotalItemCount



         	if ($agrupa) {
		$criteria->group=implode(',',$col_group);                
                $cantidad=count(CActiveRecord::model($modelClass)->findAll($criteria));
         	}

         	$models=new CActiveDataProvider($modelClass, array(
			'criteria'=>$criteria,
 	        	));
           	
                if ($agrupa)
               	$models->setTotalItemCount($cantidad);

		$this->render('show',array(
			'models'=>$models,
		));




espero te sirva

[edit]

el view


<?php $this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'consulta-grid',
	'dataProvider'=>$models,
	'columns'=>$columnas,
        'summaryText'=>'Mostrando {start}-{end} de {count}',
	)); 
?>


This post has been edited by Horacio Segura: 20 September 2010 - 09:39 AM

KISS - Keep It Simple Stupid
ASAP-As Soon As Possible
http://www.yiiframew...oc/cookbook/71/
0

#5 User is offline   quarkmarino 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 11-August 10
  • Location:México

Posted 21 September 2010 - 06:54 AM

Hola, gracias estuve fuera de linea un rato, lo revisare y comentare que sucede, gracias.
0

#6 User is offline   quarkmarino 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 10
  • Joined: 11-August 10
  • Location:México

Posted 21 September 2010 - 08:51 AM

Hola Gracias, he usado el setTotalItemCount que me recomendó Horacio, me funciona bien, la cuenta la obtuve con un countBySql (igual y cambio de método, al menos ya funciona), con una consulta similar a la que explicaba al principio, apenas he encontrado y estoy entendiendo la relación "STAT", pero no se aun si la vaya a aplicar en este caso, de cualquier forma, así ha quedado perfecto( por ahora... :D ) Gracias.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users