adodb+smarty+myClass 结合-数据类的智能操作

2016-02-19 16:49 10 1 收藏

下面图老师小编要向大家介绍下adodb+smarty+myClass 结合-数据类的智能操作,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - Web开发 】

  最近接到一项目,精略计算了一下内容,设计数据库表为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 配置文件:

  

?php$_DB[host] = 'localhost'; #数据库IP$_DB[user] = 'root'; #用户名$_DB[pass] = 'root'; #数据库密码$_DB[name] = 'yop'; #数据库名$_DB[type] = 'mysql'; #类型?

  smarty_adodb.inc.php

  

?$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 = '}';?

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  include.inc.php

  

?phpinclude_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

  

?phpclass 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($pairs, create_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

  

?phpinclude_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

  

{section name=sec loop=$list}{$list[sec].name}BR{/section}

  注:实际类名数据库名并不如上,只偶有改变。如果操作异常,请自行改正

  运行一下看看。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  怎么样,出来了吗效果。

  上面的类文件实现了数据智能化操作,有什么问题,请与我讨论。

来源:http://www.tulaoshi.com/n/20160219/1613208.html

延伸阅读
标签: PHP
  <? //【警告】:未经许可请勿随便修改 //------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------ //    // 【文件名】:        &...
标签: PHP
我的个人建议,下边的文字都是SMARTY里经常用到的一些基础概念的东西! 写的非常细致,而且接近中国人的思维了,都是工作中做的总结. 但是更全的资料到SMARTY的官方论坛上去看吧!!!!! http://www.phpinsider.com/smarty-forum/ 虽然是全英文的,但是只要你能看个大概其,相信收益将会非常大,而且上边的管理员也是非常热情,可是因为是美国时...
标签: MySQL mysql数据库
【导读】本文封装了一个按照ADO的习惯书写的MYSQL的操作类,供参考学习。 class MySQLDB { //MYSQL数据库操作类 //作者:熊毅 //版本:2.0(发行版) //可以自由转载,修改请通知我scxy78@yeah.net //转载请保留以上声明 //使用说明: //该类完全按照ADO的习惯书写的,用过ASP的人都觉得ASP连接数据库比PHP好用(这是我的感觉), ...
基于位操作的类CBitBuffer 作者:阳光 由于工作的需要,我写了一个基于位操作的类,由CFile类模仿而来。写的比较仓促,许多操作效率较低,有待改进。 该代码对我比较有用,如果你对代码有任何改进希望你能告诉我。Email:mymong@163.net 一、类定义 class CBitBuffer  {private: LONGLONG  m_llLength;   ...
标签: PHP
前言 You say eether and I say eyether, You say neether and I say nyther; Eether, eyether, neether, nyther - Let's call the whole thing off ! You like potato and I like po-tah-to, You like tomato and I like to-mah-to; Potato, po-tah-to, tomato, to-mah-to - Let's call the whole thing ...

经验教程

715

收藏

7
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部