小型MYSQL+PHP分页类库

zhuhuquan29 2009-09-29 09:10:43
给大家共享以下昨天搞半天写出来的数据库类大家多指点一下哦

<?php
/*
*
*
*
*
*
*小型DB类
*有什么需要修改的地方大家多指点一下我也是刚学到类
*所以不懂的地方很多修改的地方也指正一下小弟会虚心
*接受并休整错误的
*
*
*/
class DB
{

/**************************
*****数据库访问的结果集*****
***************************/

var $conn = '';

/**************************
*****数据访问的判断********
***************************/

var $result = '';

/*******************************
*****初始化数据库的结果总数*****
********************************/

var $num = '';

/*******************************
*****初始化数据库的返回结果*****
********************************/

var $list = array();

/*******************************
*********初始化分页结果*********
********************************/

var $p = array();

/********************************
*********初始化页数结果*********
********************************/

var $show=array();

var $o2show=array();

var $str='';//初始化路径地址

/*
*
*
*
* $sql 参数以数组形式传进去
*$sql['dbip']数据库地址
*$sql['dbuser']数据库用户
*$sql['dbpass']数据库密码
*$sql['dbname']数据库名
*
*
*
*/
public function DB($sql)//构造函数用于连接数据库
{

$this->conn = mysqli_connect($sql['dbip'],$sql['dbuser'],$sql['dbpass'],$sql['dbname']);//连接

if(mysqli_connect_errno())//判断是否连接成功
{

exit("数据库连接失败未知错误请仔细检查数据库是否配置有误");

}
mysqli_query($this->conn,"SET NAMES utf8");//运行字符编码规则

return $this->conn;//返回结果

$this->str=DB::str();
}
/*
*
*
*
*$sql数据库语句
*并执行把结果负给类全局变量$this->list
*
*
*
*/
public function query($sql)
{
if(ereg("^(insert|update|delete|select|INSERT|SELECT|DELETE|UPDATE)",$sql))
{
$this->result = @mysqli_query($this->conn,$sql) or die("数据加载错误");//执行数据库语句
}
if(ereg("^(insert|INSERT)",$sql))//判断语句的类型是否为insert
{

return true;

}

elseif(ereg("^(update|UPDATE)",$sql))//判断语句的类型是否为update
{

return true;

}
elseif(ereg("^(delete|DELETE)",$sql))//判断语句的类型是否为delete
{

return true;

}
elseif(ereg("^(select|SELECT)",$sql))//判断语句的类型是否为select时候执行并返回字段所有数据
{

$int = 0;

while($row = @mysqli_fetch_assoc($this->result))//取字段结果
{

$this->list[$int] = @$row;
$int++;

}
return $this->list;
}
else
{

return false;

}
}
/*
*
*
*
*无参数类库函数
*取出结果的总数
*
*
*/
public function num()
{

$this->num = @mysqli_num_rows($this->result);//结果的总行数

return $this->num;

}
/*
*
*
*
*实现LIMIT功能详细请看db/db.php文件使用例子
*
*
*
*/
public function limit($page = '1',$pagesize = '10')//$page变量用于变别本页页数
{

$pagein = $page;

if($page!= 0 or $page!= 1)//当前页数不等于0或1的时候从$page变量减去一
{

$page -= 1;

}
$intage = $page*$pagesize;//配置显示的第一个数据

$int = $intage+$pagesize-1;//配置显示的最后一个数据

for($a = $intage;$a <= $int;$a++)//输出结果
{

if(!$this->list[$a])break;
$this->p['query'][] = $this->list[$a];
$ac[] = $a;

}
/*
*配置的页数
*/
$pages = (int)(count($this->list)/$pagesize);

$pagea = count($this->list)/$pagesize;

$pageq = $pagea-$pages;

if($pageq>0)
{

$pages += 1;

}
$this->p['page_is'] = $pagein; //本页数

$this->p['count_page'] = (int)($pages);//总页数

$this->p['select_start'] = $intage;//数据的起始位置

$this->p['select_counts'] = count($ac);//数据的数量

return $this->p;

}
/*
*
*
*
*
*显示分页的页数
*
*
*
*
*/
public function Count_show($why='',$count_show = 10,$string = '',$previous='',$next='',$as='')//显示页数
{

$int = ((int)$this->p['page_is'])-((int)$count_show);//控制显示页数的初始直

$ints = $this->p['page_is']+$count_show;//控制显示页数的结束

$intage = $count_show*2+1;//控制页数的显示数量

if($int <= 0 and $int > 0)//..
{

$int = 1;

}

$str=$this->str;//分析路径地址

if($this->p['page_is'] > 1)//分析上一页的页数

{
$a = $this->p['page_is']-1;

$this->show['previous']=" <a href ='{$str}?page={$a}{$why}'" . $previous . " >上一页</a> ";

}

else

{

$this->show['previous']=" <a href='#' {$previous}>上一页</a> ";

}


for($a = $int; $a <= $this->p['count_page']; $a++)/*执行页数的显示*/

{

if($a<$int or $a<1)

{

continue;

}
if($a==$this->p['page_is'])
{
$this->show[]=" <a href='#' ".$as.">".$a."</a> ";
continue;
}else
{

$this->show[]=" <a href ='{$str}?page={$a}{$why}' {$string}>" . $a . "</a> ";

}
if($a >= $ints)
{
break;
}
}

if($this->p['page_is']<$this->p['count_page'])//分析下一页的页数

{

$a = $this->p['page_is']+1;
$this->show["next"]=" <a href = '{$str}?page={$a}{$why}' {$next} >下一页</a> ";
}
else
{
$a = $this->p['page_is']+1;
$this->show["next"]=" <a href='#' {$next}>下一页</a>";

}
unset($a);
return $this->show;
}
//分页函数参数:(参数1.'其他的连接参数比如:&action=index&id=1 这快必须添加&字符',参数2.'显示页数的控制写2的话就显示除了本页的前2个跟后2个当前两个跟后两个不存在他就不显示',参数3.'为了在A标签里头添加样式写了后面几个参数这个参数是用来控制显示页数参数用法如:class="page_show"',参数4。'上一页的样式参数',参数5.'下一页的样式参数用法跟参数3一样',参数6.'本页的数字参数如当我访问的是第3页的时候第3页的参数')
public function Baidupageshow($why='',$count_show='',$string='',$previous='',$next='',$as='')
{
$page=DB::Count_show($why,$count_show,$string,$previous,$next,$as);
echo $page['previous'];//输出上一页
for($a=0;$a<=count($page)-2;$a++)
{
echo $page[$a];//输出页数
}
echo $page['next'];//输出下一页
}
/***********未完成的分页函数(不推荐)*************/
/**
public function o2pageshow($page = '1')
{

$in_page=$page-1;
echo "<a href='".$this->str."?page={$in_page}'>previous</a>";
for($a=$in_page+1;$a<=$in_page+9;$a++)
{
echo $this->o2show[$a]=$a.' ';
}
echo "<a href='".$this->str."?page={$a}'>NEXT</a>";

}**/
public function str()
{

$str='http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
return $str;

}
}
?>
...全文
193 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fpstar2005 2009-09-29
  • 打赏
  • 举报
回复
北京五极星信息系统技术有限公司现招聘5名PHP程序员。
职位要求:
1.熟悉PHP语言,能自己解决实际问题。
2.能书写常用的SQL语句。
3.熟悉HTML/Javascript/等WEB技术
4.至少有一年以上的PHP工作经验
5.工作积极主动,比较踏实,责任心强。

符合以下条件者优先:
在linux环境下能简单操作和配置一些常用服务。
对cakephp或者symfony框架有丰富的开发经验(不做必须要求);

工作地点:北京海淀区知春路紫金数码3#909
薪水待遇:面议
联系人:徐小姐
邮箱:xulingling2009@gmail.com
公司网址:http://www.fp-star.com
公司简介: 北京五极星信息系统技术有限公司成立于2005年7月。是一家综合软件产品服务提供商。公司位于中关村知春路紫金数码园,是拥有多个具有自主知识产权产品的高科技企业。
除去自主软件产品研发以外,公司同时还提供对日软件开发服务。经过多年的积累,目前公司拥有一批优秀的软件工程师,能为客户提供从基本业务分析一直到系统详细设计、开发、测试、售后服务等一系列的优质服务。
quege 2009-09-29
  • 打赏
  • 举报
回复
支持 很好!
zhuhuquan29 2009-09-29
  • 打赏
  • 举报
回复
自己先顶一下做沙发等待各路英雄中

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧