在网上看了差不多两天的入门教程,就动手写了这个东西,高手有空给看看,哪可以更优化或改正,感谢中......
原来是做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();
?>

解决方案 »

  1.   

    做一广告
    感谢PHP程序员(QQ群:20023401)里的萝莉控,惹秋凉,HoRde.YounG,浩斯多莫,微微隆起的小腹................
    感谢PHP之高手的崛起1(QQ群:67219003)里的创业服务网,青色的风,木木林...............
    感谢论坛里的foolbirdflyfirst,phpBoy005..................
      

  2.   

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

  3.   

    还不错了。自用还行要在项目中使用最好还是用一些成熟的类。可以去学习phpbb连接数据库的代码。
      

  4.   

    一步步我会加上的linkis这个定义我会改改的
    功能上会慢慢加上的
    异常部分还不知道会起什么作用,是不是容错的意思?phpbb我已经下了
    我会看看的分页这个只是暂时放上做测试的
    主要是数据库连接和查询后后的结果返回
    谢谢回复哥们.............