PDA

View Full Version : page-pagination issue



simy202
جمعه 08 بهمن 1389, 10:50 صبح
I am extracting values from database and want to display them. However, since the results are huge, so I've done pagination. The first page works well, while when I clicked on the 2nd page, the page gets reloaded and no results are displayed. I failed to figure out what's wrong with my coding,

the PHP pagination (http://www.phpkode.com/scripts/tag/pagination/) code is placed in a seperate file named functions.php as below:


1. function build_url($filename, $key, $value){
2. $values = array();
3. $query_str = array();
4. parse_str($_SERVER['QUERY_STRING'], $values);
5. foreach ($values as $k=>$v) {
6. if ($k!=$key) {
7. $query_str[] = "{$k}={$v}";
8. }
9. }
10. $query_str[] = "{$key}={$value}";
11. return "$filename?".implode("&", $query_str);
12. }
13.
14. //paging script
15. function pagingScript($filename, $page_num, $numofpages) {
16. $range = 20;
17. $range_min = ($range % 2 == 0) ? ($range / 2) - 1 : ($range - 1) / 2;
18. $range_max = ($range % 2 == 0) ? $range_min + 1 : $range_min;
19. $page_min = $page_num- $range_min;
20. $page_max = $page_num+ $range_max;
21.
22. $page_min = ($page_min < 1) ? 1 : $page_min;
23. $page_max = ($page_max < ($page_min + $range - 1)) ? $page_min + $range - 1 : $page_max;
24. if ($page_max > $numofpages) {
25. $page_min = ($page_min > 1) ? $numofpages - $range + 1 : 1;
26. $page_max = $numofpages;
27. }
28.
29. $page_min = ($page_min < 1) ? 1 : $page_min;
30.
31. $page_pagination .= "<br /><table align='center' width='100%'><tr><td align='left' width='10%'>";
32. if ( ($page_num > ($range - $range_min)) && ($numofpages > $range) ) {
33. $page_pagination .= '<a title="First" href="'.build_url($filename, "page", 1).'">&lt;&lt;</a> ';
34. }
35. if ($page_num != 1) {
36. $page_pagination .= '<a href="'.build_url($filename, "page", $page_num-1).'">Previous</a> ';
37. }
38. $page_pagination .= "</td><td align='center' width='80%'>";
39.
40. for ($i = $page_min;$i <= $page_max;$i++) {
41. if ($i == $page_num)
42. $page_pagination .= '<b>' . $i . '</b> &nbsp; ';
43. else
44. $page_pagination.= '<a href="'.build_url($filename, "page", $i).'">'.$i.'</a> &nbsp; ';
45. }
46.
47. $page_pagination .= "</td><td align='right' width='10%'>";
48. if ($page_num < $numofpages) {
49. $page_pagination.= ' <a href="'.build_url($filename, "page", $page_num+1).'">Next</a>';
50. }
51. if (($page_num< ($numofpages - $range_max)) && ($numofpages > $range)) {
52. $page_pagination .= ' <a title="Last" href="'.build_url($filename, "page", $numofpages).'">&gt;&gt;</a> ';
53. }
54. $page_pagination .= "</td></tr></table><br />";
55.
56. echo $page_pagination;
57. }
58.
59.
60.
Thanks for any help.

tbebest
شنبه 09 بهمن 1389, 10:20 صبح
Hi,please put your sql ; may be your sql statment has a problem,TNX.

MMSHFE
شنبه 09 بهمن 1389, 10:31 صبح
Hi friend. I'v prepared a class for you to do this:


<?PHP
//Copyright: www.ncis.ir
class Paginate
{
private $items;
private $db;
private $table;
private $server;
private $user;
private $pass;

public Paginate($d,$t,$i=10,$s='localhost',$u='root',$p=' ')
{
this->db=$d;
this->table=$t;
this->server=$s;
this->user=$u;
this->pass=$p;
this->items=$i;
}

public Get($page)
{
$start=($page-1)*this->items;
mysql_connect(this->server,this->user,this->pass);
mysql_select_db(this->table);
$result=mysql_query("select * from `".this->table."` limit $start,".this->items);
return $result;
}
}
?>
And here's an example of it's usage:


$paginate = new Paginate('mydb','mytable'); //10 rows per page
# or
$paginate = new Paginate('mydb','mytable',25); //25 rows per page
# or this is your server information differs
$paginate = new Paginate('mydb','mytable',25,'myserver','myuser',' mypass');
Now you can get the records of any page just by using:


$result=$paginate->Get($_GET['page']);
Where $_GET['page'] is you page number that is sent via URL.
I'll be glad to know your idea about this simple class.
Best Regards.

binyaft
شنبه 09 بهمن 1389, 11:58 صبح
ی دفه بیاین یه فروم انگلیسی بزنیم دیگه :D
ایجاد تاپیک انگلیسی یا پینگلیش و پاسخ دادن به اون ممنوع هست

با تشکر

MMSHFE
شنبه 09 بهمن 1389, 12:09 عصر
ی دفه بیاین یه فروم انگلیسی بزنیم دیگه :D
ایجاد تاپیک انگلیسی یا پینگلیش و پاسخ دادن به اون ممنوع هست

با تشکر
با سلام، راستش بنده هم وقتي اين تاپيك رو ديدم تعجب كردم ولي وقتي محل سكونتشون رو ديدم، ترجيح دادم جواب بدم. شايد بنده خدا بنا به يكسري دلايل نتونه فارسي بنويسه و به نظرم نبايد از اين انجمن طرد بشه. موفق و مؤيد باشيد.