- 论坛徽章:
- 0
|
[数据库 分页] php+mssql分页问题 在线等
<?php
class DBSQL{
var $querynum = 0;
var $querylist = '';
var $LinkId = 0;
var $Insertid = 0;
//connect('数据库主机','用户名','密码','数据库名','永久连接');
function connect($dbhost="localhost", $dbuser, $dbpw, $dbname) {
$this->;LinkId = @mssql_connect($dbhost, $dbuser, $dbpw) or die("无法连接主机" ;
//选择连接数据库
@mssql_select_db($dbname) or die("无法载入数据库" ;
}
//连接数据库结束
//查询语句
function query($sql) {
if(eregi("UPDATE|DELETE",$sql)){
$query = @mssql_query($sql,$this->;LinkId);
}else{
if(eregi("insert into",$sql)){$sql="$sql SELECT @@IDENTITY as fileId";$sqls='yes';}else{$sqls='no';}
$query = @mssql_query($sql,$this->;LinkId) or die($sql);
}
if($sqls=='yes'){
$insId = $this->;fetch_row($query);
$this->;Insertid=$insId[0];
}
$this->;sql_debug .= $sql.'<br>;';
return $query;
}
//返回数组资料
function fetch_array($query, $type=MYSQL_ASSOC) {
$query = @mssql_fetch_array($query, $type);
return $query;
}
//取得结果数据
function result($query, $row) {
$query = @mssql_result($query, $row);
return $query;
}
//取得返回列的数目
function num_rows($query) {
$query = @mssql_num_rows($query);
return $query;
}
//返回单列的各字段
function fetch_row($query) {
$query = @mssql_fetch_row($query);
return $query;
}
//移动内部返回指针
function data_seek($res,$num){
return @mssql_data_seek($res,$num);
}
//返回最后一次使用 INSERT 指令的 ID
function insert_id(){
return $this->;Insertid;
}
//关闭数据库
function dbclose() {
return @mssql_close($this->;LinkId);
}
//释放返回占用内存
function free_result(){
return @mssql_free_result($this->;LinkId);
}
/*--------------------------- 分页函数 ---------------------------------*/
//分页
/*例子:
$info = $db->;limit("SELECT id,test FROM test",$_GET['page'],10);
$pages = $info['info']; //获取分页信息
for($i=0;$i<$pages['nowlimit'];$i++){
$show = $info[$i];
echo $show['id']." - $show[test]<br>;";
}
echo $db->;multi($pages['nums'],$pages['limit'],$pages['nowpage'],$pages['pages'],'a.php?',1).'<br>;<br>;';
*/
//limit(sql语句 ,获取当前跳专页数,每页分的信息数,最大信息数[如果有责不查询数据库])
function limit($sql,$page='0',$limit=10,$maxs=''){
$show = Array();
$page = (int)trim($page);
$limit = (int)trim($limit);
$maxs = (int)trim($maxs);
$query = $this->;query($sql); //执行语句
//分页处理开始
$maxs==''? $Alls = $this->;num_rows($query) Alls = $maxs; //处理最大信息数
$MaxPages = (int)ceil($Alls/$limit); //处理分了几页
if(!isset($page) || $page<=1){ $page=1;} //$page变量标示当前显示的页
if($page >; $MaxPages){ $page=$MaxPages; } //$page变量标示当前显示的页
$PageNum = ($page-1)*$limit; //数据查询指针数
//分页处理结束
if($this->;data_seek($query,$PageNum)){
for($i=0;$i<$limit;$i++){
$user = $this->;fetch_array($query);
if($user){
$show[] = $user;
$nowlimit += 1; //计算当前列出的信息数
}
}
}
$show['info'] = array(
"limit"=>;$limit, //每页的分页数
"nowlimit"=>;$nowlimit, //列出当前的信息数
"nowpage"=>;$page, //当前页数
"pages"=>;$MaxPages, //分了几页
"nums"=>;$Alls, //当前查询中最大信息数
);
return $show;
}
//分页处理
//multi(最大分页数, 每页多少信息数, 当前页数, 分页数量, 翻页地址)
function multi($num, $perpage, $curr_page, $pages, $mpurl,$style=1) {
$multipage = '';
if($num >; $perpage) {
$page = 5;
$offset = 2;
$from = $curr_page - $offset;
$to = $curr_page + $page - $offset - 1;
if($page >; $pages) {
$from = 1;
$to = $pages;
} else {
if($from < 1) {
$to = $curr_page + 1 - $from;
$from = 1;
if(($to - $from) < $page && ($to - $from) < $pages) {
$to = $page;
}
} elseif($to >; $pages) {
$from = $curr_page - $pages + $to;
$to = $pages;
if(($to - $from) < $page && ($to - $from) < $pages) {
$from = $pages - $page + 1;
}
}
}
switch($style){
//样式1
//共有 192 页 | 首 页 上一页 下一页 末 页
case'1':
if(($curr_page-1)<=1){$pt= 1;}else{$pt=$curr_page-1;}
if(($curr_page+1)>;=$pages){$pd=$pages;}else{$pd=$curr_page+1;}
$multipage .= "共 $pages 页 | <a href=\"$mpurl&page=1\">;首 页</a>; <a href=\"$mpurl&page=$pt\">;上一页</a>; <a href=\"$mpurl&page=$pd\">;下一页</a>; <a href=\"$mpurl&page=$pages\">;末 页</a>;";
break;
}
}else{
$multipage .= "目前只有一页";
}
return $multipage;
}
}
?>;
以前一个同事写的简单的,呵呵,偶用几年没动过它了。。 |
|