PHPによるODBCデータページングの一例


 PHP  ODBC        
   :PHP
$pagesize = 2; //       
$con = odbc_connect("access_test","","",SQL_CUR_USE_ODBC) or die("    ODBC   access_test"); //    ODBC   
$sql = "select count(*) as total from test"; //      SQL  
$rst = odbc_exec($con,$sql) or die("$sql    "); //        SQL  
$recordcount = odbc_result($rst,1); //      ,       $recordcount = odbc_result($rst,"total");
odbc_free_result($rst); //    
$pagecount = bcdiv($recordcount+$pagesize-1,$pagesize,0); //     
if(!isset($page)) $page = 1; //          ,        
if($page<1) $page = 1; //     1 ,      
if($page>$pagecount) $page = $pagecount; //         ,       
if($page>0){ //   0 ,     
echo '>>    ';
echo '   ';
if($page>1){
echo '   ';
}
else{
echo '   ';
}
if($page<$pagecount){
echo '   ';
}
else{
echo '   ';
}
echo '   ';
echo '  : ' . $page . '/' . $pagecount . '  ';
echo $pagesize . ' /  ';
echo ' ' . $recordcount . '  ';
$sql = "select * from test"; //    SQL  
$rst = odbc_exec($con,$sql) or die("$sql    "); //      SQL  
$fieldcount = odbc_num_fields($rst); //      
echo '';
echo ' ';
for($i=1;$i<=$fieldcount;$i++){
echo ' ' . odbc_field_name($rst,$i) . ' '; //   $i    
}
echo '
';
$rowi = ($page-1)*$pagesize+1;
for($i=0;$i<$pagesize;$i++){
echo ' ';
if($rowi>$recordcount){
for($j=0;$j<$fieldcount;$j++){
echo '   ';
}
}
else{
odbc_fetch_into($rst,$rowi,&$row);
for($j=0;$j<$fieldcount;$j++){
$field = $row[$j];
if($field=='') $field = ' ';
echo ' ' . $field . ' ';
}
$rowi = $rowi+1;
}
echo '
';
}
echo ' ';
odbc_free_result($rst); //    
}
else{
echo "   ";
}
odbc_close($con); //         
?>