PDA

View Full Version : pagination via ODBC



cybercoder
جمعه 25 مرداد 1387, 19:50 عصر
امروز که جمعست داشتم هاردمو مرتب می کردم به تابعی که قبلا برای Pagination در ODBC نوشته بودم برخوردم.

براتون میذارم شاید به درد کسی بخوره
لطفا مدیران محترم این پست رو به تاپیکی که برای کلاس ها و توابع بود منتقل کنند چون من گشتم پیدا نکردمش کجا رفت!



<?php
function pager($db,$table_name,$fields,$whereclause,$maxrow )
{
if ( isset($_GET['page']) )
$page=$_GET['page'] ;
else
$page=0 ;

// first row in ODBC is not 0 it is 1, wonderful !!!
$startrow=$page*$maxrow+1 ;

// Counting All Records in Table
$count_query="SELECT COUNT(*) FROM $table_name" ;
// Where Clause
if (!empty($whereclause))
$count_query.=' WHERE '.$whereclause ;

$exec_count_query=odbc_exec($db,$count_query) ;
odbc_fetch_row($exec_count_query) ;
$recordcount=odbc_result($exec_count_query,1) ;
// Fetch Records into Array
// Main Select Statement
$sql=Sprintf("SELECT %s FROM %s ",$fields,$table_name) ;
// Where Clause
if (!empty($whereclause))
$sql.=' WHERE '.$whereclause ;

$exec_query=odbc_exec($db,$sql) ;
odbc_fetch_row($exec_query) ;

$i=$startrow ; $j=0 ;
while (($row=odbc_fetch_object($exec_query,$i)) && $j<$maxrow){
$rows[]=$row ;
++$i ; ++$j ;
}

if ( $maxrow > 0 )
$pages=ceil( $recordcount / $maxrow ) -1 ;
else
$pages=0 ;
?>
<div id="page_nav" align="center">
<?php
if ( ($page!=0) && ($pages>0) )
{
$prevpage=$page-1 ;
print "<a href=?page=$prevpage.>Previous</a>&nbsp" ;
}

for ( $i=0;$i<=$pages;$i++ )
{
$j=$i+1 ;
print "&nbsp<a href=?page=$i>$j</a>" ;
}
if ( ($page!=$pages) && ($pages>0) )
{
$nextpage=$page+1 ;
print "&nbsp<a href=?page=$nextpage>Next</a>" ;
}
?>
</div>
<?php
odbc_free_result($exec_query) ;
return $rows ;
}
?>

موفق باشید