几个用SQL语句实现Discuz数据外部调用的实例-Discuz教程下载

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

开通本站Svip会员,全站资源免费下

写文章前得感谢下康盛公司,为中国数百万网站提供强大的Discuz!,在这Discuz! x3发布的这个月,我们也应该凑凑热闹。不得不说Discuz真的非常强大,以至于不懂任何技术的人都可以操作它,菜鸟都可以用Discuz自带的DIY功能实现一些基本的数据调用及风格。说到数据调用,使用过Discuz的站长都知道它后台自带js数据外调功能,很多站长在实现数据外调时直接拿这个自带功能去实现。但我觉得自带虽然好但是有那么点缺陷:第一,据说js调用不是太好,呵呵;第二,自带的调用方式就是内置的那些,也就是不可能满足你很多需求。


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


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

代码如下:

  1. <font color="rgb(85, 85, 85)">$index_bbs_new=array();

  2. <em id="__mceDel">$bbs_sql="SELECT aid,title,username FROM `pre_portal_article_title` where catid=1 and TAG=128 order by dateline desc limit 0,5";
  3. $b=$db->query($bbs_sql);
  4. while($req=$db->fetch_array($b))
  5. {
  6. $req['aid'] = $req['aid'];
  7. $req['title'] = $req['title'];
  8. $req['username'] = $req['username'];
  9. $req['url'] = "bbs/portal.php?mod=view&aid=$req[aid]";

  10. $index_bbs_new[] = $req;
  11. }</font>
复制代码


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

  1. 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后台调用有)


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


  1. <font color="rgb(85, 85, 85)">$index_bbs=array();
  2. $bbs_sql="SELECT tid,subject,author FROM `pre_forum_thread` where digest>0 order by dateline desc limit 0,5";
  3. $b=$db->query($bbs_sql);
  4. while($req=$db->fetch_array($b))
  5. {
  6. $req['tid'] = $req['tid'];
  7. $req['subject'] = $req['subject'];
  8. $req['author'] = $req['author'];
  9. $req['url'] = "bbs/forum.php?mod=viewthread&tid=$req[tid]";

  10. $index_bbs[] = $req;
  11. }</font>
复制代码


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


后面再加一条调用门户另外一个栏目的推荐文章5篇,代码如下(其实跟实例一一样了)


  1. <font color="rgb(85, 85, 85)"></pre>
  2. $index_bbs_pt=array();
  3. $bbs_sql="SELECT aid,title,username FROM `pre_portal_article_title` where catid=3 and tag=128 order by dateline desc limit 0,5";
  4. $b=$db->query($bbs_sql);
  5. while($req=$db->fetch_array($b))
  6. {
  7. $req['aid'] = $req['aid'];
  8. $req['title'] = $req['title'];
  9. $req['username'] = $req['username'];
  10. $req['url'] = "bbs/portal.php?mod=view&aid=$req[aid]";

  11. $index_bbs_pt[] = $req;
  12. }
  13. <pre></font>
复制代码


最后在前端调用以上数据,代码如下(只列出实例一的部分)


  1. </pre>


  2. <!--
  3. EOT;
  4. foreach($index_bbs_new as $val){
  5. print <<<EOT -->
  6. <div class="box_2">
  7. <ul>
  8. <li><span class="data">$val[username]</span><a href="$val[url]" target="_blank">$val[title]</a></li>
  9. </ul>
  10. </div>


  11. <!--
  12. EOT;
  13. } print <<<EOT -->
  14. <pre>
复制代码


最后可以实现如下调用样式(风格样式另外自己调节哦,以下是外调到MVMMALL商城系统)



全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部