喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

上一主题 下一主题
 15  1/2  1  2  > 
     
标题: [原创] 数据操作类和分页类一起(欢迎指教批评)  
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
数据操作类和分页类一起(欢迎指教批评)

这个是我自己写的数据操作类和分页类!
请大家给点意见!
如果觉得好请加精华!!

<?php
/*
程序设计: 林建炫(飘枫设计室)
made in 广州 by 2006-10-26 晚
QQ: 5818500
Email: [email]linzhenxuan@163.com[/email]
尊重他人也尊重自己!请勿删除该版权信息
如果你使用、修改请保留该信息!
*/
include_once ("config.php");
include_once (
"cls_conn.php");
//$isdb= '1mysql,2mssql
//$pconnect = '1永久,0关
//$charset = 'gb2312 gbk utf-8
Class Cls_db
{
    var 
$acpath;
    var 
$sqlnum=0;
    var 
$isdb;
    var 
$pagesize 20;
    var 
$page;
    var 
$recordcount;
    var 
$pagecount;
    var 
$conn;
    Function 
__construct()
    {
        global 
$dbserver,$dbuser,$dbpassword,$dbname,$charset,$pconnect,$isdb,$acpath;
        
$this->conndb($dbserver,$dbuser,$dbpassword,$dbname,$charset,$pconnect,$isdb,$acpath);
        if (
$_POST['page']!="")
        {
            
$this->page=$_POST['page'];
        }
        else
        {
            
$this->page=$_GET['page'];
        }
        if (empty(
$this->page)){$this->page=1;}
        if (!
is_numeric($this->page)){$this->page=1;}
    }
//初始化了数据库连接和page的值
    
Function __destruct()
    {
        
$this->close();
    }
    Function 
conndb($dbserver,$dbuser,$dbpassword,$dbname,$charset='',$pconnect=0,$isdb=1,$acpath="")
    {
        
$this->isdb=$isdb;
        if(
$isdb==1)//mysql
        
{
            if (
$pconnect==1)
            {
                
mysql_pconnect($dbserver,$dbuser,$dbpassword) or die ("connection database is error!!");
            }
            else
            {
                
mysql_connect($dbserver,$dbuser,$dbpassword) or die ("connection database is error!!");
            }
            if (empty(
$charset))
            {
                
$charset "Gb2312";
            }
            if (
$charset)
            {
                
mysql_query("SET NAMES Gb2312");
            }
            
mysql_select_db($dbname) or die("select database name is error");
        }
//End if
        
        
if($isdb==2)
        {
            if (
$pconnect==1)
            {
                
mssql_pconnect($dbserver,$dbuser,$dbpassword) or die ("connection database is error!!");
            }
            else
            {
                
mssql_connect($dbserver,$dbuser,$dbpassword) or die ("connection database is error!!");
            }
            
mssql_select_db($dbname) or die("select database name is error"); 
        }
        
        if(
$isdb==3)
        {
//Access connection
            
$this->conn = new conn;
        }
//End function
    
}//end function
    
    
Function acopen($sql)
    {
        global 
$conn;
        
$conn = @new COM("ADODB.Connection") or die ("ADO连接失败!");
        
$connstr "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" realpath($this->acpath);
        
$conn->Open($connstr);
        return 
$conn->execute($sql);
    }
    
    Function 
query($query,$mthod=1)
    {
        global 
$isdb;
        
$this->sqlnum++;
        if (
$isdb==1)
        {
            
//LIMIT 0 , 10
            //分页中
            
if(substr($query,0,6)=="select" && $mthod==1)
            {
                
//求总页数
                
$temp mysql_query($query);
                
//改变sql语句
                
$query=$query." limit ".($this->page-1)*$this->pagesize." , ".$this->pagesize;
                
$this->num_rows($temp);
            }
            
$result mysql_query($query);
            return 
$result;
        }
        if (
$isdb==2)
        {
            return 
mssql_query($query);
        }
        
        if(
$isdb==3)
        {
            return 
$this->conn->execute($query);
        }
    }
    
    Function 
fetch_row($query)
    {
        Global 
$isdb;
        
//设置了info很好的提供了出错信息!
        
$info false;
        if (
$isdb==1)
        {
            if(!
$info mysql_fetch_row($query))
            {
                
$info false;
            }
            return 
$info;
        }
        if (
$isdb==2)
        {
            return 
mssql_fetch_row($query);
        }
    }
    
    Function 
fetch_array($query)
    {
        Global 
$isdb;
        if (
$isdb==1)
        {
            return 
mysql_fetch_array($query);
        }
        if (
$isdb==3)
        {
            return 
$this->conn->GetArray($query);
        }
    }
    
    Function 
insert_id()
    {
        return 
mysql_insert_id();
    }
    
    Function 
num_rows($query)
    {
        Global 
$isdb;
        if (
$isdb==1)
        {
            
$this->recordcount mysql_num_rows($query);//给$recordcount值
            
$this->pagecount ceil($this->recordcount/$this->pagesize);
            if (
$this->page>$this->pagecount){$this->page=$this->pagecount;}
        }
    }
    
    Function 
free_result($query)
    {
        Global 
$isdb;
        if(
$isdb==1)
        {
            
mysql_free_result($query);
        }
    }
    Function 
close()
    {
        if (
$this->isdb==1)
        {
            
mysql_close();
        }
        if (
$this->isdb==2)
        {
            
mssql_close();
        }
    }
    
//以下是分页信息
    
    
    
Function linkurl()//地址栏上多余的信息
    
{
        if(
$_GET)
        {
            
$get $_GET;
        }
        if(
$_POST)
        {
            
$get $_POST;
        }
        if(!
$_POST && !$_GET)
        {
            
$get $_GET;
        }
        
$i 0;
        foreach (
$get as $key=>$a)
        {
            if (
$key!="page"){
            if (
$i==0){
            
$result =  $key."=".$a;
            }
            else
            {
            
$result$result."&".$key."=".$a;
            }
            
$i++;
            }
        }
        return 
$result;
    }
    
//正式分页 样式1: 页次 1 / 2 页 共 37 条记录 30 条/页 分页:<< < 1 > >> 转到: 
    
Function page_one()
    {
        
//类型 页次 1 / 2 页 共 37 条记录 30 条/页 分页:<< < 1 > >> 转到: 
        
$pagesize $this->pagesize;
        
$pagecount $this->pagecount;
        
$recordcount $this->recordcount;
        
$page $this->page;
        
$temp "页次 $page / $pagecount 页 共 $recordcount 条记录 $pagesize 条/页 ";
        
$url $this->linkurl();
        if (!empty(
$url))
        {
            
$url "&".$url;
        }
        
$temp $temp." 分页:<a href='?page=1$url'><font title face='webdings' dypop='第一页'>9</font></a>";
        if(
$page>1)
        {
            
$temp $temp." <a href='?page=".($page-1)."$url'><font title face='webdings' dypop='上一页'>7</font></a> ";
        }
        else
        {
            
$temp $temp." <font title face='webdings' dypop='上一页'>7</font> ";
        }
        
$temp $temp."<b>$page</b>";
        if (
$page<$pagecount)
        {
            
$temp $temp." <a href='?page=".($page+1)."$url'><font title face='webdings' dypop='下一页'>8</font></a> ";
        }
        else
        {
            
$temp $temp." <font title face='webdings' dypop='下一页'>8</font> ";
        }
        
$temp $temp."<a href='?page=$pagecount$url'><font title face='webdings' dypop='最后一页'>:</font></a>";
        
$temp $temp."  转到:<select size='1' name='page' onchange=\"javascript:window.location='?page='+this.options[this.selectedIndex].value+'$url'\">";
        for(
$i=1;$i<=$pagecount;$i++)
        {
            if(
$_GET['page']==$i)
            {
                
$temp $temp."<option value=$i selected>第".$i."頁</option>";
            }
            else
            {
            
$temp $temp."<option value=$i>第".$i."頁</option>";
            }
        }
        
$temp $temp."</select>";
        return 
$temp;
    }
    
    
//正式分页 样式2(没美化): 500000 30 1/35041页 << < 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 > >>转到:
    
Function page_two($total=10,$bgcolor="#FFFBE8",$border="1px",$solid="#E4E4E4")
    {
        
$style="border: $border solid $solid";
        
$pagesize $this->pagesize;
        
$pagecount $this->pagecount;
        
$recordcount $this->recordcount;
        
$page $this->page;
        
$temp "页次 $page / $pagecount 页 共 $recordcount 条记录 $pagesize 条/页 ";
        
$url $this->linkurl();
        if (!empty(
$url))
        {
            
$url "&".$url;
        }
        
$temp "<table border='0' width='100%' id='table6' cellspacing='0' cellpadding='0' height='20'><tr>";
        
$temp .= "<td width='43' bgcolor='$bgcolor' style='$style'  align='center'>$recordcount</td>";
        
$temp .= " <td width='38' bgcolor='$bgcolor' style='$style' align='center'>$pagesize</td> <td width='89' bgcolor='$bgcolor' style='$style' align='center'>$page / ".$pagecount."页</td><td style='$style'>";
        if(
$page>1){$temp $temp." <a href='?page=1$url'><font title face='webdings' dypop='第一页'>9</font></a> ";}
        if(
$page>1)
        {
            
$temp $temp." <a href='?page=".($page-1)."$url'><font title face='webdings' dypop='上一页'>7</font></a> ";
        }
        if(
$page==$page==2)
        {
            for(
$i=1;$i<=$pagecount && $i<=$total;$i++)
            {
                if(
$i==1)
                {
                    if(
$page==&& $i==1)
                    {
                        
$temp.="&nbsp; <b>1</b> ";
                    }
                    else
                    {
                        
$temp $temp."&nbsp; <a href='?page=1$url'>1</a>";
                    }
                }
                else
                {
                    if(
$page==&& $i==2)
                    {
                        
$temp.=" | <b>2</b> ";
                    }
                    else
                    {
                        
$temp $temp." | "."<a href='?page=$i$url'>$i</a>";
                    }
                }
            }
        }
        if (
$page>2)
        {
            
$a $page-2;
            
$b $page+($total-3);
            for(
$i=$a;$i<=$pagecount && $i<=$b;$i++)
            {
                if(
$i==$a)
                {
                    if(
$page==$i)
                    {
                        
$temp.="<b>$a</b>";
                    }
                    else
                    {
                        
$temp $temp." <a href='?page=$a$url'>$a</a>";
                    }
                }
                else
                {
                    if(
$page==$i)
                    {
                        
$temp.=" | <b>$i</b>";
                    }
                    else
                    {
                        
$temp $temp." | "."<a href='?page=$i$url'>$i</a>";
                    }
                }
            }
        }
        if(
$page<$pagecount)
        {
            
$temp.=" <a href='?page=".($page+1)."$url'><font title face='webdings' dypop='下一页'>8</font></a> ";
        }
        if(
$page<$pagecount){$temp.=" <a href='?page=$pagecount$url'><font title face='webdings' dypop='最后一页'>:</font></a> ";}
        
$temp $temp."  <select size='1' name='page' onchange=\"javascript:window.location='?page='+this.options[this.selectedIndex].value+'$url'\">";
        for(
$i=1;$i<=$pagecount;$i++)
        {
            if(
$_GET['page']==$i)
            {
                
$temp $temp."<option value=$i selected>第".$i."頁</option>";
            }
            else
            {
            
$temp $temp."<option value=$i>第".$i."頁</option>";
            }
        }
        
$temp $temp."</select></td></table>";
        return 
$temp;
    }
}
/*已经注释掉了
$db = New cls_db;
$db->pagesize=5;
$query = $db->query("select username from user");
while ($row = $db->fetch_array($query))
{
    echo $row['username'].chr(10)."<br>";
}
echo $db->sqlnum;
echo $db->recordcount;
echo "<br>";
echo $db->page_one();
echo "<br>";
echo $db->page_two();
$db->close();
unset($db);
*/
?>
2006-11-6 10:12 AM#1
查看资料  Blog  发短消息  顶部
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
[推荐阅读] 招PHP开发与测试人员(长期有效)
写了1个多星期的东西!
本来要mysql和mssql和access一起操作的类!
目前之弄了mysql的!
不过感觉功能也可以了。
不知道还有没有地方不好!
请提出来!
如果好的话请斑竹加精华!
2006-11-6 10:13 AM#2
查看资料  Blog  发短消息  顶部
 
sanshi0815 (sanshi0815)
高级会员
Rank: 4
中级会员



UID 63534
精华 1
积分 533
帖子 669
金钱 523 喜悦币
威望 10
人脉 0
阅读权限 50
注册 2005-3-18
状态 离线
[推荐阅读] 各位同学习惯怎么操作MySQL?用类还是从上写到下?
写的不错,给加个精华
2006-11-6 01:57 PM#3
查看资料  Blog  发短消息  QQ  顶部
 
qh663
版主
Rank: 7Rank: 7Rank: 7
中级会员


UID 30020
精华 0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13
来自 河源
状态 离线
[推荐阅读] 分页类和数据操作类一起可以吗?
在数据库中的类,一般不要加入die函数。可以以错误返回的形式,在错误输出的时候就可以随意控制了。使用类时建议不用globa。以现行趋越来看,分页用表格排版可是为数不多的。毕竟xhtml从2004年中旬流行起来的一门技术越来越被看重,大多可以用css来控制了。



五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844
2006-11-6 06:59 PM#4
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
c1a1o1
版主
Rank: 7Rank: 7Rank: 7
一品带刀护卫


UID 68669
精华 0
积分 1210
帖子 2127
金钱 1210 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-2-17
状态 在线
[推荐阅读] 欲求兼职 兼职网站推广 兼职网页设计、兼职FLASH动画 网站建设
不错,支持下



流量交换联盟
php教材价格比较网言情小说
2006-11-7 12:08 AM#5
查看资料  Blog  发短消息  QQ  顶部
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
[推荐阅读] 欲求兼职网站建设、网页设计、FLASH动画 网络推广QQ115097132
用global是因为include 了一个config.php的配置文件!
里面具体到采用数据库的连接信息。
所以一定要用global了
具体分页用表格用css我还不知道怎么分。
有没有点指教?
2006-11-7 09:40 AM#6
查看资料  Blog  发短消息  顶部
 
lichee (lichee)
注册会员
Rank: 2
一般会员



UID 25095
精华 0
积分 62
帖子 152
金钱 0 喜悦币
威望 0
人脉 62
阅读权限 20
注册 2003-12-8
状态 离线
[推荐阅读] 有个表单提交后跳转页面的问题?
配置数组可以是做方法的参数设置、
为什么是一定呢
2006-11-7 06:18 PM#7
查看资料  发短消息  顶部
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
[推荐阅读] javascript 急 跪求啊 请帮帮忙。。。
是啊,建立$db
$db->conndb
这样的!
然后我要把那些配制都全局取啊
所以用global
比如$isdb是什么样的数据库1,是mysql2,是mssql...
这样的!
2006-11-8 10:31 AM#8
查看资料  Blog  发短消息  顶部
 
php5
金牌会员
Rank: 6Rank: 6
中级会员


UID 62897
精华 0
积分 1237
帖子 1089
金钱 1237 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2005-1-3
来自 福建
状态 离线
[推荐阅读] apache1.3.34静态安装时,怎么重装php5.1.6?
这个没有多大实用意义

如果仅仅是针对 MYSQL 这些过程仅仅是起到一个包装的作用

另外分页功能也不够....
2006-11-11 10:56 AM#9
查看资料  发短消息  顶部
 
piaofengnet
中级会员
Rank: 3Rank: 3



UID 82620
精华 0
积分 230
帖子 106
金钱 230 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2006-11-4
状态 离线
[推荐阅读] 可以让这两条规则共同存在吗?
分页功能不够?
能具体点吗?
2006-11-11 11:37 AM#10
查看资料  Blog  发短消息  顶部
 15  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.071979 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP