学习PHP2天后封装一个数据库连接和SQL查询分页类,高手给看看哪改改比较好

ceb 2009-03-14 01:45:42
在网上看了差不多两天的入门教程,就动手写了这个东西,高手有空给看看,哪可以更优化或改正,感谢中......
原来是做ASP,一直用记事本写程序的,下面这个类也是用记事本写的,老鸟门给条件一个工具,最好是轻量级绿色的


<?php
class p_data{
var $linkis = array(
"host" => "localhost",
"user" => "root",
"pass" => "",
"database" => "test"
),$conn,$CurrentPage = 1,$PageSize = 10,$TotalPage = 0;
function query($queryStr,$RowsNum=false){
$this->conn = $conn = @mysql_connect($this->linkis[host],$this->linkis[user],$this->linkis[pass]) or die("Could not connect to database host");
@MySQL_select_db($this->linkis[database],$conn) or die("Could not connect to database");
$QueryStr = $queryStr;
$QueryStr = preg_replace("/^select \[(.+?)\]/eis","'select count(1)'",$QueryStr);
$QueryStr = MySQL_query($QueryStr) or die("Could not query database");
$cRowsNum = mysql_fetch_row($QueryStr);
$cRowsNum = $cRowsNum[0];
if($cRowsNum){
if($RowsNum){
$PageSize = $this->PageSize;
$TotalPage = $cRowsNum?(($cRowsNum<$PageSize)?1:(($cRowsNum%$PageSize)?(int)($cRowsNum/$PageSize)+1:$cRowsNum/$PageSize)):0;
$CurrentPage = ($this->CurrentPage<1?1:($this->CurrentPage>$TotalPage?$TotalPage:$this->CurrentPage));
$offset = ($CurrentPage-1)*$PageSize;
$queryStr = "$queryStr limit $offset,$PageSize";
$this->CurrentPage = $CurrentPage;
$this->TotalPage = $TotalPage;
}
$queryStr = preg_replace("/^select \[(.+?)\]/eis","'select \\1'",$queryStr);
$res = MySQL_query($queryStr);
while($row = mysql_fetch_array($res)){
$rowset[] = $row;
}
}else{
$rowset = array();
}
return $rowset;
}
function close(){
MySQL_close($this->conn);
}
function showpage(){
$CurrentPage = $this->CurrentPage; //当前页
$TotalPage = $this->TotalPage; //总页数
$PageSize = $this->PageSize; //每页显示
if($CurrentPage<6){
$PageLong = 11 - $CurrentPage;
}else{
$Tcpage = $TotalPage-$CurrentPage;
if($Tcpage<6){
$PageLong = 11 - $Tcpage;
}else{
$PageLong = 5;
}
}
$output = "";
$TxPage = $CurrentPage-1;
$output .= ($CurrentPage>1?"<a href='?page=$TxPage'>上一页</a> ":"<a href='#'>上一页</a> ");
$output .= "分页: ";
for($i=1;$i<=$TotalPage;$i++){
if(($i<($CurrentPage+$PageLong)) && ($i>($CurrentPage-$PageLong))){
$output .= ($CurrentPage==$i?"<b>$i</b> ":"<a href='?page=$i'>$i</a> ");
}
}
$TxPage = $CurrentPage+1;
$output .= ($CurrentPage<$TotalPage?"<a href='?page=$TxPage'>下一页</a>":"<a href='#'>下一页</a>");
$this->close();
return $output;
}
}

$db = new p_data;
$db->CurrentPage = $_GET["page"]; //当前页
$db->PageSize = 10; //每页显示
$result = $db->query("SELECT
  • FROM `a`",true
  • );

    foreach($result as $row){
    echo $row['id'] . " " . $row['name'];
    echo "<br />";
    }
    echo $db->showpage();
    ?>
...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
应该网 2009-03-14
  • 打赏
  • 举报
回复
还不错了。自用还行

要在项目中使用最好还是用一些成熟的类。

可以去学习phpbb连接数据库的代码。
jackydrl 2009-03-14
  • 打赏
  • 举报
回复
作为一个学习PHP“二天”的人写的代码已经不错了!
但此代码没有满足封装的低藕合特性,如var linkis的定义,一般的作法是定义一个connect函数,然后你可以选择将外部定义的连接资源传过来,也可以将连接的参数(host,user...)传过来!如果在内部定义的话,万一有变动,修改就不好了!
还有就是如果有可能,你再把类完善一下,功能有点太... 并且没有考虑一些exception的情况

综合起来说,不错呵呵!!
phpboy 2009-03-14
  • 打赏
  • 举报
回复
写的不错,就是功能不多!
ceb 2009-03-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 phpBoy005 的回复:]
写的不错,就是功能不多!
[/Quote]
一步步我会加上的

[Quote=引用 3 楼 jackydrl 的回复:]
作为一个学习PHP“二天”的人写的代码已经不错了!
但此代码没有满足封装的低藕合特性,如var linkis的定义,一般的作法是定义一个connect函数,然后你可以选择将外部定义的连接资源传过来,也可以将连接的参数(host,user...)传过来!如果在内部定义的话,万一有变动,修改就不好了!
还有就是如果有可能,你再把类完善一下,功能有点太... 并且没有考虑一些exception的情况

综合起来说,不错呵呵!!
[/Quote]
linkis这个定义我会改改的
功能上会慢慢加上的
异常部分还不知道会起什么作用,是不是容错的意思?

[Quote=引用 4 楼 abest 的回复:]
还不错了。自用还行

要在项目中使用最好还是用一些成熟的类。

可以去学习phpbb连接数据库的代码。
[/Quote]
phpbb我已经下了
我会看看的

[Quote=引用 5 楼 getmonitor 的回复:]
时候没必要把数据库连接放到分页类里吧。
[/Quote]
分页这个只是暂时放上做测试的
主要是数据库连接和查询后后的结果返回




谢谢回复哥们.............
Zijian_Zhang 2009-03-14
  • 打赏
  • 举报
回复
两天,很厉害了。

支持一下,接分。
getmonitor 2009-03-14
  • 打赏
  • 举报
回复
时候没必要把数据库连接放到分页类里吧。
ceb 2009-03-14
  • 打赏
  • 举报
回复
做一广告
感谢PHP程序员(QQ群:20023401)里的萝莉控,惹秋凉,HoRde.YounG,浩斯多莫,微微隆起的小腹................
感谢PHP之高手的崛起1(QQ群:67219003)里的创业服务网,青色的风,木木林...............
感谢论坛里的foolbirdflyfirst,phpBoy005..................

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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