开启辅助访问
帐号登录 |立即注册

两个用SQL语句实现Discuz数据外部调用的实例

 
905f2e142016413793ffc25af2d730d8.png

不得不说Discuz真的非常强大,以至于不懂任何技术的人都可以操作它,菜鸟都可以用Discuz自带的DIY功能实现一些基本的数据调用及风格。说到数据调用,使用过Discuz的站长都知道它后台自带js数据外调功能,很多站长在实现数据外调时直接拿这个自带功能去实现。但我觉得自带虽然好但是有那么点缺陷:第一,据说js调用不是太好,呵呵;第二,自带的调用方式就是内置的那些,也就是不可能满足你很多需求。

  所以今天我要讲的就是用SQL语句实现数据外调,然后再用PHP脚本调用数据到前端实现。我是一个非专业的选手,对很多东西都有一点了解但不精通,唯独数据库还算可以。所以今天我们只讲实现功能,至于前端的一个样式风格大家自己去看着办吧。

  案例一:外调5条Discuz门户资讯栏目推荐文章(按发表时间降序排列)

  代码如下:

  $index_bbs_new=array();

  $bbs_sql="SELECT aid,title,username FROM `pre_portal_article_title` where catid=1 and tag=128 order by dateline desc limit 0,5";

  $b=$db->query($bbs_sql);

  while($req=$db->fetch_array($b))

  {

  $req['aid'] = $req['aid'];

  $req['title'] = $req['title'];

  $req['username'] = $req['username'];

  $req['url'] = "bbs/portal.php?mod=view&aid=$req[aid]";

  $index_bbs_new[] = $req;

  }

  SQL代码解释:上面的sql语句中查询语句最基本的了,那就是:

  select <字段名1>,<字段名2>,.... from 表名(如果是数据库间调用请用数据库名.表名) where 条件

  上面的字段我们可以查询Discuz公开的数据词典,就在表pre_portal_article_title中aid表示文章的唯一ID,title表示文章的标题,username表示发布文章的用户的用户名。上面这条语句翻译成我们通常交流就语句就是,在表pre_portal_article_title中查询文章ID、文章标题、文章作者,查询条件是栏目ID为1 (catid=1),文章标签为推荐( tag=128),按照发布时间降序排序(order by dateline desc)",记录数为5条( limit 0,5)。

  实例二:调用论坛最新精华帖5条(这个Discuz后台调用有)

  调用语句如下(当然样式是取自我做的这个页面),代码如下

  $index_bbs=array();

  $bbs_sql="SELECT tid,subject,author FROM `pre_forum_thread` where digest>0 order by dateline desc limit 0,5";

  $b=$db->query($bbs_sql);

  while($req=$db->fetch_array($b))

  {

  $req['tid'] = $req['tid'];

  $req['subject'] = $req['subject'];

  $req['author'] = $req['author'];

  $req['url'] = "bbs/forum.php?mod=viewthread&tid=$req[tid]";

  $index_bbs[] = $req;

  }

  有了实例一的解释,这里的语句大家查了数据词典就会懂意思的。


回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

友情链接
  • 艾Q网

    提供设计文章,教程和分享聚合信息与导航工具,最新音乐,动漫,游戏资讯的网站。