Does anybody have the script for the paging like in Digg.com ? 1 2 3 .... 10 11 etc . Is it the CSS/Javascript ? design of those boxes of the page numbers is very nice and clean.. similar on digital point..
both.. paging script as well as that cSS. paging needs to be similar to digg eg 1 2 .... 10 11..... 20 21
I noticed ebaumsworld.com is using the same pagination buttons, and also wordpress codex. Im guessing theres a plugin somewhere, if you find it please let me know as well.
<?php class CI_Pagination { var $limit = 10; // how many per page var $select_what = '*'; // what to select var $add_query = ''; var $otherParams = ''; /* customize links */ var $first_r = 'FIRST'; var $next_r = '>'; var $previous_r = '<'; var $last_r = 'LAST'; function getQuery($return_q=FALSE) { $query = mysql_query('SELECT SQL_CALC_FOUND_ROWS '.$this->select_what.'' . ' FROM '.$this->the_table.' '.$this->add_query.'' . ' LIMIT '.$this->start.', '.$this->limit.''); $nbItems = mysql_result(mysql_query('SELECT FOUND_ROWS() AS nbr'), 0, 'nbr'); if($nbItems > ($this->start + $this->limit)) { $final = $this->start + $this->limit; } else { $final = $nbItems; } if($return_q==FALSE) { return $nbItems; } else { return $query; } } function paginate() { $nbItems = CI_Pagination::getQuery(FALSE); if($nbItems<=$this->limit) { return; } else { $allPages = ceil($nbItems/$this->limit); $currentPage = floor($this->start/$this->limit) + 1; $pagination = ""; if ($allPages>10) { $maxPages = ($allPages>9) ? 9 : $allPages; if ($allPages>9) { if ($currentPage>=1&&$currentPage<=$allPages) { $pagination .= ($currentPage>4) ? " ... " : " "; $minPages = ($currentPage>4) ? $currentPage : 5; $maxPages = ($currentPage<$allPages-4) ? $currentPage : $allPages - 4; for($i=$minPages-4; $i<$maxPages+5; $i++) { $pagination .= ($i == $currentPage) ? "<a href=\"#\" class=\"current\">".$i."</a> " : "<a href=\"".$this->filePath."/".(($i-1)*$this->limit).$this->otherParams."\">".$i."</a> "; } $pagination .= ($currentPage<$allPages-4) ? " ... " : " "; } else { $pagination .= " ... "; } } } else { for($i=1; $i<$allPages+1; $i++) { $pagination .= ($i==$currentPage) ? "<a href=\"#\" class=\"current\">".$i."</a> " : "<a href=\"".$this->filePath."/".(($i-1)*$this->limit).$this->otherParams."\">".$i."</a> "; } } if ($currentPage>1) { $pagination = "<a href=\"".$this->filePath."/0".$this->otherParams."\">".$this->first_r."</a>" . " <a href=\"".$this->filePath."/".(($currentPage-2)*$this->limit).$this->otherParams."\">" . "".$this->previous_r."</a> ".$pagination; } if ($currentPage<$allPages) { $pagination .= "<a href=\"".$this->filePath."/".($currentPage*$this->limit).$this->otherParams."\">" . "".$this->next_r."</a> <a href=\"".$this->filePath."/".(($allPages-1)*$this->limit).$this->otherParams."\">" . "".$this->last_r."</a>"; } return '<div class="pages">' . $pagination . '</div>'; } } } ?> PHP:
include('pagination.php'); $obj = new CI_Pagination(); $obj->start = $_GET['start']; $obj->filePath = site_url('listings/show_listings/'.$cat_id); $obj->select_what = 'ID'; $obj->the_table = 'mytable'; $obj->add_query = 'WHERE category = '.$category.' AND active=1 ORDER BY ID DESC'; $query = $obj->getQuery(TRUE); PHP:
div.pages div, div.pages a { margin-right: 1px; padding: 1px 5px 2px 5px; border: 1px solid #999; text-decoration: none; font-size: 12px; color: #999; } div.pages div, div.pages a:hover { border: 1px solid #999; background-color:#d7d7d7; color:#fff; } div.pages .current { border: 1px solid #999; background-color:#d8d8d8; } PHP: link example for pagination: article.php?ID=1&start=0 - where 0 is the start number from where should the pagination start. For more pagination examples use this link Here's an example with the result (scroll down to the bottom - hope it helps).
Varun, you can also use PEAR:ager, it's a nice package that can support a lot of features like ajax or mod_rewrite.