用PHP实现ODBC数据分页显示一例 |
$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 <a href=" . $PHP_SELF . ?page=1">首页</a> ; if($page>1){ echo <a href=" . $PHP_SELF . ?page=. ($page-1) . ">前页</a> ; } else{ echo 前页 ; } if($page<$pagecount){ echo <a href=" . $PHP_SELF . ?page=. ($page+1) . ">后页</a> ; } else{ echo 后页 ; } echo <a href=" . $PHP_SELF . ?page= . $pagecount . ">尾页</a> ; 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 <table border="1" cellspacing="0" cellpadding="0">; echo <tr>; for($i=1;$i<=$fieldcount;$i++){ echo <th> . odbc_field_name($rst,$i) . </th>; //显示第$i个字段名 } echo </tr>; $rowi = ($page-1)*$pagesize+1; for($i=0;$i<$pagesize;$i++){ echo <tr>; if($rowi>$recordcount){ for($j=0;$j<$fieldcount;$j++){ echo <td> </td>; } } else{ odbc_fetch_into($rst,$rowi,&$row); for($j=0;$j<$fieldcount;$j++){ $field = $row[$j]; if($field==) $field = ; echo <td> . $field . </td>; } $rowi = $rowi+1; } echo </tr>; } echo </table>; odbc_free_result($rst); //释放资源 } else{ echo "无数据"; } odbc_close($con); //关闭连接并释放资源 ?> |