Search code examples
phpzend-paginator

Zend Pagination with array


I'm currently using ezSQL, which I believe to be a great SQL wrapper. I've been tasked with adding in pagination that we can just drop in. Zend has one, which seems like it should work, as it's loosely coupled with the rest of Zend. I'm returning an array with ezSQL, ala:

$results = $db->get_results("SELECT * FROM table", ARRAY_A);

and then shifting this in to the paginator:

$paginator = Zend_Paginator::factory($results);

If I var_dump($paginator), I see the values listed from the query. However, if I echo $paginator->pageCount), I get NULL. What's the deal?

Unfortunately, switching from ezSQL to Zend_DB is essentially impossible for our group, so that's out of the question.

EDIT: Output from print_r($paginator):

Zend_Paginator Object
(
    [_cacheEnabled:protected] => 1
    [_adapter:protected] => Zend_Paginator_Adapter_Array Object
        (
            [_array:protected] => Array
                (
                    [0] => Array
                        (
                            [first_name] => Doug
                            [last_name] => Lawrence
                            [avatar] => Doug_Lawrence.png
                            [updated_by] => 14306
                            [id] => 413
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-29 12:57:52
                            [publish_date] => 10/29/09
                        )

                    [1] => Array
                        (
                            [first_name] => Jason
                            [last_name] => Lewis
                            [avatar] => Jason.Lewis.jpg
                            [updated_by] => 13547
                            [id] => 411
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-25 09:19:48
                            [publish_date] => 10/25/09
                        )

                    [2] => Array
                        (
                            [first_name] => David
                            [last_name] => Bowman
                            [avatar] => David_Bowman.png
                            [updated_by] => 13564
                            [id] => 409
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-24 15:13:13
                            [publish_date] => 10/24/09
                        )

                    [3] => Array
                        (
                            [first_name] => David
                            [last_name] => Bowman
                            [avatar] => David_Bowman.png
                            [updated_by] => 13564
                            [id] => 410
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-24 15:15:48
                            [publish_date] => 10/24/09
                        )

                    [4] => Array
                        (
                            [first_name] => Greg
                            [last_name] => Morris
                            [avatar] => GKMorris.png
                            [updated_by] => 13555
                            [id] => 408
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-24 10:21:14
                            [publish_date] => 10/24/09
                        )

                    [5] => Array
                        (
                            [first_name] => Thom
                            [last_name] => Rainer
                            [avatar] => Thom_Rainer.jpg
                            [updated_by] => 13560
                            [id] => 405
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-23 06:53:43
                            [publish_date] => 10/23/09
                        )

                    [6] => Array
                        (
                            [first_name] => David
                            [last_name] => Bowman
                            [avatar] => David_Bowman.png
                            [updated_by] => 13564
                            [id] => 406
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-23 16:20:33
                            [publish_date] => 10/23/09
                        )

                    [7] => Array
                        (
                            [first_name] => Tom
                            [last_name] => Harper
                            [avatar] => 1225910432_63
                            [updated_by] => 10843
                            [id] => 402
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-22 11:17:16
                            [publish_date] => 10/22/09
                        )

                    [8] => Array
                        (
                            [first_name] => Jerome
                            [last_name] => Daley
                            [avatar] => Jerome_Daley.png
                            [updated_by] => 13554
                            [id] => 403
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-22 14:06:31
                            [publish_date] => 10/22/09
                        )

                    [9] => Array
                        (
                            [first_name] => Mark
                            [last_name] => Howell
                            [avatar] => Mark_Best.png
                            [updated_by] => 13561
                            [id] => 404
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-22 21:44:51
                            [publish_date] => 10/22/09
                        )

                    [10] => Array
                        (
                            [first_name] => Margaret
                            [last_name] => Marcuson
                            [avatar] => Marcuson.png
                            [updated_by] => 14398
                            [id] => 401
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-21 18:21:55
                            [publish_date] => 10/21/09
                        )

                    [11] => Array
                        (
                            [first_name] => Barry
                            [last_name] => Winders
                            [avatar] => Barry_Winders.png
                            [updated_by] => 13552
                            [id] => 400
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-20 20:08:36
                            [publish_date] => 10/20/09
                        )

                    [12] => Array
                        (
                            [first_name] => Stephen
                            [last_name] => Gray
                            [avatar] => Stephen_Gray.png
                            [updated_by] => 13556
                            [id] => 399
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-20 09:59:16
                            [publish_date] => 10/20/09
                        )

                    [13] => Array
                        (
                            [first_name] => Alan
                            [last_name] => Chandler
                            [avatar] => Alan_Chandler.png
                            [updated_by] => 13549
                            [id] => 398
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-19 12:03:07
                            [publish_date] => 10/19/09
                        )

                    [14] => Array
                        (
                            [first_name] => Mark
                            [last_name] => Howell
                            [avatar] => Mark_Best.png
                            [updated_by] => 13561
                            [id] => 396
                            [title] => 
                            [synopsis] => 
                            [create_date] => 2009-10-17 12:30:16
                            [publish_date] => 10/17/09
                        )

                )

            [_count:protected] => 15
        )

    [_currentItemCount:protected] => 
    [_currentItems:protected] => 
    [_currentPageNumber:protected] => 1
    [_filter:protected] => 
    [_itemCountPerPage:protected] => 5
    [_pageCount:protected] => 3
    [_pageRange:protected] => 10
    [_pages:protected] => 
    [_view:protected] => 
)

Solution

  • As Zak wrote, you are missing

    $paginator->setItemCountPerPage(10);
    $paginator->setCurrentPageNumber(1);
    

    that you can create a view script to render the paginator controls and the items in the paginator.

    Than you have to call

    $paginator->getPages()->pageCount
    

    if you are not using Zend_View and it's paginatorControl view helper.