Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

【投稿】数据查询ABC

[复制链接]
选峰工作室 发表于 2009-11-20 06:23:07 | 显示全部楼层 |阅读模式
本帖最后由 选峰工作室 于 2009-11-20 06:43 编辑

很多站长会使用phpmyadmin管理数据库,会积累了一些MYSQL知识,但是对PHP程序不是很懂。此示例适用于他们。根据此示例,就可以简单的做一个显示数据库数据的页面了。
在根目录创建一个home.php
  1. <?php
  2. require_once './include/common.inc.php';

  3. function a($sql)
  4. {
  5.         global $db;
  6.     return $db->fetch_first($sql);
  7. }

  8. function b($sql)
  9. {
  10.     global $db;   
  11.         $array=array();
  12.     $rs=$db->query($sql);
  13.     while ($rw=$db->fetch_array($rs)) {
  14.           $array[]=$rw;
  15.     }
  16.     return $array;        
  17. }

  18. function c($sql)
  19. {
  20.         global $db;
  21.         return $db->result_first($sql);
  22. }
  23. //调用代码区
  24. //调用单条多字段记录:最新注册会员一名
  25. $newmember=a("SELECT * FROM `{$tablepre}members` ORDER BY `uid` DESC LIMIT 0 , 1");
  26. //调用多条多字段记录:最新发表主题多条
  27. $newthreadlist=b("select * from `{$tablepre}threads` order by tid desc limit 0,5");
  28. //调用单条单字段记录:用户UID为1的用户名称
  29. $adminname=c("select username from `{$tablepre}members` where uid=1 limit 1");
  30. //调用代码区

  31. include(template('home'));
  32. ?>
复制代码
然后在templates/default/下建立 home.htm
  1. <p>调用单条多字段记录:最新注册会员一名 </p>
  2. <p>用户名称:{$newmember['name']}  用户UID:{$newmember['uid']}</p>
  3. <p>调用多条多字段记录:最新发表主题多条</p>
  4. <!--{loop $newthreadlist $o}-->
  5. <p>
  6. <a href="viewthread.php?tid=$o[tid]">$o[subject]</a>
  7. <a href="space.php?uid=$o[authorid]">$o[author]</a>
  8. <!--{echo date('Y-m-d',$o[dateline]);}-->
  9. </p>
  10. <p>
  11.   <!--{/loop}-->
  12. </p>
  13. <p>调用单条单字段记录:用户UID为1的用户名称</p>
  14. <p>$adminname</p>
复制代码
就可以了。当然,以上只是示例,实际应用你需要根据自己需要来写程序和模板。但大多这三种数据库形式。以a,b,c的说法比较容易理解。
a实现的是调用单条记录,所获得是数组如$a,则里面的字段的值用$a['xx']表示,b实现的是多条记录,所获得的数组如$b,则在模板里要 {loop $b $o}$b['xx']{/loop}这样输出多条数据,而c实现的是调用单条记录里的单字段值,所获得的值如$c是字符串变量,直接在模板里用 $c 表示。
其中a,c函数DZ已经有现成了,但是b函数实现的功能如果按正常写法的话可能比较繁琐,调用的多的话,程序不够简洁方便,所以b函数可以很方便使用
主要是 a,b,c 写起来方便简洁,方便对程序不是很熟悉的站长和比较想开发快速、简洁的开发者。
现在我们内部给客户做HOME页调用基本上就是用a,b,c,这样写起来快,也简洁,找起来比较好找,懒得起那些临时变量名称了(如果你看见某个插件里有abc函数,十有八九是我们做的)。我们也把这个应用到插件开发中去,给我们带来非常大的方便,因为我们在工作中太常用到这些了。
另外把一些外观显示的处理放在模板中来进行处理,当然,这需要一定的PHP知识。
关于DZ模板的规则可以参考其他教程,这里不详述。
有人认为在DZ本身$db外层加函数对效率有影响,个人认为可以忽略,很多时候开发效率与使用效率需要进行适当取舍。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一文天 发表于 2009-11-20 09:32:49 | 显示全部楼层
将 数据库类的方法打包成函数使用。创意不错
回复

使用道具 举报

元首 发表于 2009-11-20 16:20:37 | 显示全部楼层
思路是对的, 但做法不对.

discuz之所以没有在query中封装成二维数组出来, 是因为数据有太多的不定及修改地元素. 比如颜色,长度, 功能判断.
回复

使用道具 举报

 楼主| 选峰工作室 发表于 2009-11-20 18:58:10 | 显示全部楼层
哈哈。。。。。
回复

使用道具 举报

wson21 发表于 2009-12-8 11:20:52 | 显示全部楼层
想问楼主,如果要调用别的,该怎麼写,

就如, 热门话题。。。等等。。
回复

使用道具 举报

qzshene 发表于 2009-12-12 11:51:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

蚂蚁51007 发表于 2010-1-13 11:06:05 | 显示全部楼层
不错。。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-24 07:44 , Processed in 0.023046 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表