Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5096598
  • 博文数量: 921
  • 博客积分: 16037
  • 博客等级: 上将
  • 技术积分: 8469
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-05 02:08
文章分类

全部博文(921)

文章存档

2020年(1)

2019年(3)

2018年(3)

2017年(6)

2016年(47)

2015年(72)

2014年(25)

2013年(72)

2012年(125)

2011年(182)

2010年(42)

2009年(14)

2008年(85)

2007年(89)

2006年(155)

分类:

2007-01-03 09:18:29

最近接到一项目,精略计算了一下内容,设计数据库表为45个左右。这么多表,的确够头疼的。怎么做到最少操作但能达到最大的效果呢?
  本人经过分析,决定自己写数据辅助类来协助ADODB来完成工作。
  首先,确定你的目录结构,本人目录结构如下:
|-admin //后台
|-adodb //adodb文件目录
|-smarty //smarty文件目录
|-images //图片及样式文件珓
|-dataclass //数据操作类文件夹
       |-class_test.php //测试类
|-configs //系统配置文件夹
       |-config.inc.php //系统配置文件
|-cache //缓冲目录
|-templates //模板文件
       |-templates_c //模板解析文件夹
            |-test.htm //测试模板文件
include.inc.php //系统包含文件集
smarty_adodb.inc.php //smarty adodb类声明文件
test.php //测试文件

  做好以上工作,让我们开始工作吧!首先,定义你的 config.inc.php 配置文件:
CODE:
php 
$_DB
[host] = 'localhost'
#数据库IP 
$_DB[user] = 'root'
#用户名 
$_DB[pass] = 'root'
#数据库密码 
$_DB[name] = 'yop';  
#数据库名 
$_DB[type] = 'mysql'
#类型 
?> 


smarty_adodb.inc.php
CODE:
$db = &ADONewConnection($_DB[type]); 
$db ->Connect($_DB[host],$_DB[user],$_DB[pass],$_DB[name]); 
#adodb链接 
$tpl=new Smarty

$tpl->template_dir="./templates"

$tpl->compile_dir="./templates/templates_c"

$tpl->left_delimiter '<{'

$tpl->right_delimiter '}>'

?> 


include.inc.php
CODE:
php 
include_once('./configs/config.inc.php'); 
#加载数据链接配置 
include_once('./adodb/adodb.inc.php');  
#加载adodb数据类 
include_once('./smarty/Smarty.class.php'); 
#加载smarty模板类 
include_once('./smarty_adodb.inc.php'); 
#加载smarty及adodb类调用集合文件 
include_once('./dataclass/class_test.php'); 
#加载HOBBY数据类 
?> 


接着我们开始写数据操作类,笔者的数据库结构如下:
CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(20) NOT NULL default '',
  `addtime` varchar(20) NOT NULL default '',
  KEY `id` (`id`)
)
class_test.php
CODE:
php 
class Test 

    function 
getTest_ByID($id
) { 
        global 
$db

        if ( empty(
$id
) ) { 
            return 
false

        } 
        
$sql "SELECT * FROM `Test` where ID='$id'"

        
$result $db->Execute($sql
); 
        
$data $result->FetchRow
(); 
        return 
$data

    } 
    function 
listTest($order='ID'
) { 
        global 
$db

        if( empty(
$order
) ){ 
            
$order 'ID'

        } 
        
$sql "SELECT * FROM `Test` order by $order desc"

        
$result $db->Execute($sql
); 
        
$rs 
= array(); 
        while ( 
$data $result->FetchRow
() ) { 
            
array_push($rs,$data
); 
        } 
        return 
$rs

    } 
    function 
setTest($id='',$pairs,$work=''
){ 
        global 
$db

        if(empty(
$id
)){ 
            
$sql " insert into Test "

            
$sql .= " ( " join(array_keys($pairs),",") . " ) "

            
$sql .= " values "

            
$sql .= " ( "" . join(array_values($pairs),"","") . "" ) "

        }else{ 
            if(
$work=='update'
){ 
                
$sql " $work Test "

                
array_walk($pairscreate_function('&$value,&$name','$value = $name . "="" . $value . """; '
) ); 
                
$sql .= " set " join(array_values($pairs),","
); 
                
$sql .= " where id=$id"

            }elseif(
$work=='delete'
){ 
                
$sql "$work from Test where ID='$id'"

            }
        } 
        
$result $db->Execute($sql
); 
        return 
$result

    } 

?> 


  上面这个类是最关键的。这个地方能明白,其它的都好说了。好,下面我们开始实例:

test.php
CODE:
php 
include_once('./include.inc.php'
); 
$test = new Test
(); 
$rs $test->listTest
(); 
foreach ( 
$rs as $array 
) { 
    
$list[]=$array

    
$tpl->assign("list",$list
); 

$tpl->display("test.htm"
); 
$info=array("name"=>"无喱头","addtime"=>date("Y-m-d"
)); 
$test->setTest('5',$info,'update'
); 
?> 


接着我们写个HTM出来
test.htm
CODE:
<{section name=sec loop=$list}> 
<{
$list[sec].name
}> 
<
BR

<{/
section}> 

注:实际类名数据库名并不如上,只偶有改变。如果操作异常,请自行改正
阅读(819) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~