Warning: curl_exec() has been disabled for security reasons in /pub/host/sunboyu/sunboyu/www/wp-includes/http.php on line 1022

Warning: Cannot modify header information - headers already sent by (output started at /pub/host/sunboyu/sunboyu/www/wp-includes/http.php:1022) in /pub/host/sunboyu/sunboyu/www/wp-includes/feed-rss2.php on line 8
一个程序猿 » adodb http://www.sunboyu.cn 时光不会倒流,脚步总要前进 Tue, 31 Jan 2012 10:50:34 +0000 http://wordpress.org/?v=2.7 en hourly 1 倒霉的ADODB,折腾死了 http://www.sunboyu.cn/2008/09/05/%e5%80%92%e9%9c%89%e7%9a%84adodb%ef%bc%8c%e6%8a%98%e8%85%be%e6%ad%bb%e4%ba%86.shtml http://www.sunboyu.cn/2008/09/05/%e5%80%92%e9%9c%89%e7%9a%84adodb%ef%bc%8c%e6%8a%98%e8%85%be%e6%ad%bb%e4%ba%86.shtml#comments Fri, 05 Sep 2008 08:56:31 +0000 admin http://www.sunboyu.cn/?p=305 突然发现ADODB_lite很多方法跟以前不一样了,变了好多,所以,一气之下决定放弃adodb,自己写个数据抽象层的类。

用别人的东西总是有很多的局限,如果去修改,工作量又很大。其实我们使用的也就是那么点功能,这样我们去完成自己的类工作量并不大,而且能根据自己的需求不断改进。

]]>
http://www.sunboyu.cn/2008/09/05/%e5%80%92%e9%9c%89%e7%9a%84adodb%ef%bc%8c%e6%8a%98%e8%85%be%e6%ad%bb%e4%ba%86.shtml/feed
简单分页程序,adodb+smarty http://www.sunboyu.cn/2008/08/31/%e7%ae%80%e5%8d%95%e5%88%86%e9%a1%b5%e7%a8%8b%e5%ba%8fadodbsmarty.shtml http://www.sunboyu.cn/2008/08/31/%e7%ae%80%e5%8d%95%e5%88%86%e9%a1%b5%e7%a8%8b%e5%ba%8fadodbsmarty.shtml#comments Sun, 31 Aug 2008 09:56:16 +0000 admin http://www.sunboyu.cn/?p=292 分页类

  1. <?php
  2. /*  Page.Class.php
  3.  *  Page
  4.  *  @link        http://www.sunboyu.cn
  5.  *  @package     OA
  6.  *  @version     V1.0
  7.  *
  8.  *  2008 08 28  sunboyu@gmail.com
  9.  *  Demo
  10. $page = new Page( 1 , 'v_user' , '*' , '' );
  11. $rs = $page->__getlist();
  12. $smarty->assign("page",$page->__getpagelist());
  13.  */
  14.  class Page
  15.  {
  16. public $count;      #结果总数
  17. public $page;       #当前页
  18. public $pagesize;   #每页结果数
  19. public $pagecount;  #翻页数
  20. public $baseurl;    #url
  21. public $result;     #结果数组集
  22. public $pagelist;   #每翻页数
  23. public $db;         #数据库连接
  24. public $table;      #要查询的表
  25. public $fileds;     #要返回的字段
  26. public $where;      #where条件
  27.  
  28. #构造函数,初始化变量
  29. function __construct( $page , $table , $fields = '*' , $where = false , $baseurl = false )
  30. {
  31.      global $_CFG;
  32. $this->db        = GetDB();
  33. $this->count     = $count;
  34. $this->table     = $table;
  35. $this->page      = isset($page) ? intval($_GET['page']) : 1;
  36. $this->fileds    = $fields;
  37. $this->pagesize  = $_CFG['pagesize'];
  38. $this->baseurl   = ($baseurl!=false) ? $baseurl : $this->__geturl();
  39. $this->pagelist  = $_CFG['pagelist'];
  40. $this->where     = $where;
  41. }
  42.  
  43. #获得当前url
  44. function __geturl()
  45. {
  46. $str = ereg_replace(sprintf("(^|&)page=%d",$this->page),"",$_SERVER['QUERY_STRING']);
  47. return $str=="" ? '?' : $str;
  48. }
  49. #获得记录集
  50. function __getlist()
  51. {
  52.      #获得count记录
  53. $sql = sprintf("SELECT COUNT(0) AS table_count FROM %s",$this->table);
  54. $rs = $this->db->Execute( $sql );
  55. $this->count = $rs->fields['table_count'];
  56.      $offset = ($this->page-1)*$this->pagesize-1;
  57.      $sql = sprintf("SELECT %s FROM %s %s",$this->fileds,$this->table,(($this->where!=false) ? " WHERE ".$this->where : ''));
  58. $rs = $this->db->SelectLimit( $sql , $this->pagesize , $offset );
  59. $list = false;
  60. while(!$rs->EOF)
  61. {
  62.      $list[] = $rs->fields;
  63. $rs->MoveNext();
  64. }
  65. return $list;
  66. }
  67.  
  68. #获得分页列表
  69. function __getpagelist()
  70. {
  71. $this->result['count'] = $this->count;
  72. $this->result['page'] = $this->page;
  73. $this->result['pagesize'] = $this->pagesize;
  74. $this->result['pagecount'] = ceil($this->count/$this->pagesize);
  75. if($this->result['pagecount']<=1) //只有一页以下
  76. {
  77. $this->result['pagelist'] = 0;
  78. }
  79. else //一页以上
  80. {
  81. #前一页,第一页的算法
  82. $this->result['first'] = ($this->page == 1) ? 0 : 1;
  83. $this->result['pre'] = ($this->page == 1) ? 0 : 1;
  84. #后一页,最后一页的算法
  85. $this->result['next'] = ($this->page == $this->pagecount ) ? 0 : 1;
  86. $this->result['last'] = ($this->page == $this->pagecount ) ? 0 : 1;
  87.  
  88.  
  89. #起始
  90. $pagearray = array();
  91. $start = floor(($this->page-1)/10)*10+1;
  92. for($i=0;$i<10;$i++)
  93. {
  94.      if( ($start+$i) <= $this->result['pagecount'])
  95. {
  96.      $pagearray[$i]['page'] = $start+$i;
  97. }
  98. if( ($start+$i) != $this->page )
  99. {
  100.      $pagearray[$i]['link'] = 1;
  101. }
  102. }
  103. #分页导航列表
  104. $this->result['pagelist'] = $pagearray;
  105. $this->result['baseurl'] = $this->baseurl;
  106. }
  107. return $this->result;
  108. }
  109. }
  110. ?>

smarty模版

  1. {{config_load file="Lang.Page.$lang.conf"}}<div id="page">
  2. <table>
  3.     <tr>
  4.     <td>
  5. {{#gongs#}}{{$page.count}}{{#pagecountend#}} {{#pagepagesizeper#}}{{$page.pagesize}}{{#pagepagelistper#}}{{#tiao#}}  {{#gongs#}}{{$page.pagecount}}{{#page#}} {{#pagepage#}}{{$page.page+1}}{{#page#}}
  6. </td>
  7. <td>
  8. {{if $page.pagecount>1}}
  9. {{if $page.first eq 1}}
  10. <a href="{{$page.baseurl}}">{{#pagefirst#}}</a>
  11. {{else}}
  12. {{#pagefirst#}}
  13. {{/if}}
  14. {{if $page.pre eq 1}}
  15. <a href="{{$page.baseurl}}&page={{$page.page-1}}">{{#pagepre#}}</a>
  16. {{else}}
  17. {{#pagepre#}}
  18. {{/if}}
  19. {{foreach from=$page.pagelist item=vols}}
  20.     {{if $vols.link eq 1}}
  21. <a href="{{$page.baseurl}}&page={{$vols.page}}">[{{$vols.page}}]</a>
  22. {{else}}
  23. [{{$vols.page}}]
  24. {{/if}}
  25. {{/foreach}}
  26. {{if $page.next eq 1}}
  27. <a href="{{$page.baseurl|default:"?"}}&page={{$page.page+1}}">{{#pagenext#}}</a>
  28. {{else}}
  29. {{#pagenext#}}
  30. {{/if}}
  31. {{if $page.last eq 1}}
  32. <a href="{{$page.baseurl|default:"?"}}&page={{$page.pagecount}}">{{#pageend#}}</a>
  33. {{else}}
  34. {{#pagelast#}}
  35. {{/if}}
  36. {{/if}}
  37. </td>
  38. </tr>
  39. </table>
  40. </div>

语言包内容

  1. pagecountend      = "条数据"
  2. pagepagesizeper   = "每页"
  3. pagepagesizeend   = "条"
  4. page              = "页"
  5. tiao              = "条"
  6. pagepage          = "当前第"
  7. pagefirst         = "首页"
  8. pagepre           = "上一页"
  9. pagenext          = "下一页"
  10. pagelast          = "尾页"
  11. gongs             = "共"
]]>
http://www.sunboyu.cn/2008/08/31/%e7%ae%80%e5%8d%95%e5%88%86%e9%a1%b5%e7%a8%8b%e5%ba%8fadodbsmarty.shtml/feed
ADODB数据字典的应用 http://www.sunboyu.cn/2008/07/06/adodb%e6%95%b0%e6%8d%ae%e5%ad%97%e5%85%b8%e7%9a%84%e5%ba%94%e7%94%a8.shtml http://www.sunboyu.cn/2008/07/06/adodb%e6%95%b0%e6%8d%ae%e5%ad%97%e5%85%b8%e7%9a%84%e5%ba%94%e7%94%a8.shtml#comments Sun, 06 Jul 2008 14:14:47 +0000 admin http://www.sunboyu.cn/?p=182 我已经很久没有用adodb了,这次用的adodb lite,除了在查询中多了好多方法外,还发现了数据字典这个功能。

因为adodb是兼容多种数据库的,我们切换数据库的时候当然不想去另一个数据库上去重新简表,但mysql,mssql,sqlite这些库好像都不能互转。

而adodb建立数据字典后,可根据你当前的数据库类型生成相应的sql语句,然后创建数据表,而当我们切换数据库的时候,直接修改数据库类型,然后修改一些关键参数即可实现数据库的切换。

方便的很。

]]>
http://www.sunboyu.cn/2008/07/06/adodb%e6%95%b0%e6%8d%ae%e5%ad%97%e5%85%b8%e7%9a%84%e5%ba%94%e7%94%a8.shtml/feed
优秀的系统在于不断锤炼 http://www.sunboyu.cn/2008/07/03/%e4%bc%98%e7%a7%80%e7%9a%84%e7%b3%bb%e7%bb%9f%e5%9c%a8%e4%ba%8e%e4%b8%8d%e6%96%ad%e9%94%a4%e7%82%bc.shtml http://www.sunboyu.cn/2008/07/03/%e4%bc%98%e7%a7%80%e7%9a%84%e7%b3%bb%e7%bb%9f%e5%9c%a8%e4%ba%8e%e4%b8%8d%e6%96%ad%e9%94%a4%e7%82%bc.shtml#comments Thu, 03 Jul 2008 15:18:09 +0000 admin http://www.sunboyu.cn/?p=176 最近写代码,为了一个数据库连接的问题,考虑了两个晚上。

一个是adodb的完整版本,一个是adodb lite版本。其实我一直在比较这两个版本的具体区别,和效率问题。另外主要考虑了它的扩展性和兼容性。

经过比较,我选择了lite版本,因为速度,adodb的功能是比lite完善不少,但过于庞大,真正想象,我根本不用那些功能。比如oracle数据库,没人会在oracle上用我这么点个程序。

不过两个类库的方法命令语法基本都一致,我可以轻松切换了。

稳定的系统,就得这样一点点得锤炼才行。

]]>
http://www.sunboyu.cn/2008/07/03/%e4%bc%98%e7%a7%80%e7%9a%84%e7%b3%bb%e7%bb%9f%e5%9c%a8%e4%ba%8e%e4%b8%8d%e6%96%ad%e9%94%a4%e7%82%bc.shtml/feed
ADODB Lite-adodb轻量应用 http://www.sunboyu.cn/2008/07/02/adodb-lite-adodb%e8%bd%bb%e9%87%8f%e5%ba%94%e7%94%a8.shtml http://www.sunboyu.cn/2008/07/02/adodb-lite-adodb%e8%bd%bb%e9%87%8f%e5%ba%94%e7%94%a8.shtml#comments Wed, 02 Jul 2008 15:25:11 +0000 admin http://www.sunboyu.cn/?p=175 原来用ADODB进行开发,效率一直是个不小的问题。虽然他可以兼容多个数据库,但在实际开发中几乎没什么用处。小型项目不会去频繁切换数据库,中大的项目也不会忍受它的速度。

突然发现还有个mini版本的adodb lite,官方这样说的:

A small, fast replacement for ADODB that uses 1/6th of the memory and upto 300% faster while being compatible with ADODB using a subset of the most often used ADODB commands.. Supports Frontbase, MaxDB, MiniSql, MSSQL, MySql, Postgres, SqLite and Sybase.

最近做个小程序,正好用上试试,希望不让我失望。

]]>
http://www.sunboyu.cn/2008/07/02/adodb-lite-adodb%e8%bd%bb%e9%87%8f%e5%ba%94%e7%94%a8.shtml/feed