兔源码网 - 专注DZ模版分享、DZ插件分享!

 找回密码
 立即注册

QQ登录

只需一步,快速开始

广告
温馨提示:本站所有DZ相关模板、插件、教程(包括DZ应用中心已下架插件、模板)皆为提供免费下载,无任何收费模式(不包括VIP版块非DZ资源,VIP版块需充值兔币购买会员组方可下载),用户仅需手动前往【申请下载权限】申请用户组下载权限即可,如本站没有您需要的插件或模板,请自行前往淘宝互站网送吗网等第三方站点搜索相关插件或模板进行低价格购买下载本站非常不建议用户浪费金钱前往DZ应用中心购买。

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

[复制链接]
tuyuanma 发表于 2017-4-6 10:14:59 | 显示全部楼层 |阅读模式
温馨提醒:禁止内容附带广告图片、二维码图片,否则将在不通知情况下永久禁言账号!
欢迎加入兔源码站长交流群,您的加入是我们前行的动力!

DZ站长建站交流群:493651246

[ 温馨提示:点击上方群文字,可快速加入QQ群 ]


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


( p* e; g& G' E. p+ {

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

+ N# {$ `$ ~" ]

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

代码如下:

  1. <font color="rgb(85, 85, 85)">$index_bbs_new=array();
    / W  B, _$ P4 @" [
  2. " x& \8 H# o1 c3 D
  3. <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";0 G( C6 c8 v- E) u' p  R
  4. $b=$db->query($bbs_sql);4 r7 {9 D0 s$ C  J8 D  Z) R( E
  5. while($req=$db->fetch_array($b))9 ^; T, @( L* X% X  U% M; ~
  6. {
    1 Z4 x8 R! h. I& z+ `
  7. $req['aid'] = $req['aid'];
    # R) c  w- j9 b( ?
  8. $req['title'] = $req['title'];
    5 ~  P  C$ _/ ]: T2 T$ Y
  9. $req['username'] = $req['username'];
    7 K) z* A, ]+ x7 w& Y7 L1 y$ [5 C
  10. $req['url'] = "bbs/portal.php?mod=view&aid=$req[aid]";
    4 M6 W8 P+ [9 _# e: _: P) U

  11. ! j4 Q  V5 {" Z# ^6 s
  12. $index_bbs_new[] = $req;
    ! K/ N+ a: z' [# u
  13. }</font>
复制代码

1 v2 V3 x" [! E4 Q% }* c  r

7 `% Z+ ?1 b' u/ A- N; nSQL代码解释:上面的sql语句中查询语句最基本的了,那就是

& e. d9 i/ l& @& q' K- G0 n
  1. select <字段名1>,<字段名2>,.... from 表名(如果是数据库间调用请用数据库名.表名) where
复制代码

! P- P, o% O3 c

; V% R5 N. S' s% T2 J, p1 x

上面的字段我们可以查询Discuz公开的数据词典,就在表pre_portal_article_title中aid表示文章的唯一ID,title表示文章的标题,username表示发布文章的用户的用户名。

7 {/ }* w& W1 t) y; L

上面这条语句翻译成我们通常交流就语句就是,在表pre_portal_article_title中查询文章ID、文章标题、文章作者,查询条件是栏目ID为1 (catid=1),文章标签为推荐( tag=128),按照发布时间降序排序(order by dateline desc)”,记录数为5条( limit 0,5)。


. w- v+ {# d" m9 k( q

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


5 k0 ?5 e3 U) |% t  M. D/ K( p2 b

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

+ C( Q0 {( n3 s- R1 i) D

  1. <font color="rgb(85, 85, 85)">$index_bbs=array();. j8 z, w# W. O# W
  2. $bbs_sql="SELECT tid,subject,author FROM `pre_forum_thread` where digest>0 order by dateline desc limit 0,5";2 ^+ j0 q; `+ I; S
  3. $b=$db->query($bbs_sql);6 |: q, h* h! d0 B8 b) ~' T7 G
  4. while($req=$db->fetch_array($b))7 |  {, w2 `8 e: h$ f0 n
  5. {. t- G( E8 f+ T. ], u* z. ]
  6. $req['tid'] = $req['tid'];
    8 G7 A6 ?) B& F7 s  u% {
  7. $req['subject'] = $req['subject'];
    + @2 T) p  A, U  \  I+ S6 [& {7 W
  8. $req['author'] = $req['author'];
    " N6 Z5 F6 ]; u2 X8 F$ E
  9. $req['url'] = "bbs/forum.php?mod=viewthread&tid=$req[tid]";
    6 n0 Y3 V2 A7 P! f4 i& D' c8 q: S& i5 X' P

  10. " l( M5 x' I' k1 l" _! L* Q
  11. $index_bbs[] = $req;
    8 q, N, d* R  g; }3 k. `
  12. }</font>
复制代码


! F3 _. X0 w/ {% B

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


, @3 A0 P, C  X0 _3 l4 m" o

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


9 d# B% j8 e) n4 T  Y1 ~2 o

  1. <font color="rgb(85, 85, 85)"></pre>1 F5 P4 C4 O4 t5 x: q
  2. $index_bbs_pt=array();9 c4 N+ i' x4 r' \
  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";* m0 X1 ^( Y. U. j: }$ I
  4. $b=$db->query($bbs_sql);
    : B  Y7 q* \3 z1 B
  5. while($req=$db->fetch_array($b))& X* y4 E" \  ~' P4 q- t* T, B
  6. {* }( ^; Q, Y! F7 _8 Y$ X1 x0 R
  7. $req['aid'] = $req['aid'];& T' ]* e, E  F
  8. $req['title'] = $req['title'];/ Z# @& ^* g( q- i
  9. $req['username'] = $req['username'];
    4 _' U! n$ |, W) j4 K- k
  10. $req['url'] = "bbs/portal.php?mod=view&aid=$req[aid]";, B* ?" {. ?# g7 U: W$ T8 c
  11. % \6 C- P- S+ J9 ^1 E! H& h
  12. $index_bbs_pt[] = $req;8 _  e) A* w$ a) d% Z& i
  13. }# C; d, J* b7 `7 j
  14. <pre></font>
复制代码
2 w# T# F, [% D) y0 e# x

& ~3 l& w2 A4 M; ]; u/ @最后在前端调用以上数据,代码如下(只列出实例一的部分)

( V% B4 n# R( b3 K+ |
  h+ j( H( N$ [4 [
  1. </pre>
    1 N2 T  A8 x1 t/ K5 `0 w3 Z

  2. + _5 Q# x5 H0 r' s( z
  3. 0 Y$ d8 m* y  F& s
  4. <!--7 K) }: U! N$ ?, d( f0 ]
  5. EOT;4 V3 [) Z: Z. r% t9 Y3 q
  6. foreach($index_bbs_new as $val){
    $ k# C" m6 y. |0 C5 L
  7. print <<<EOT --> 6 j+ ^2 l# h5 Y; z3 K& h, X
  8. <div class="box_2">
    3 P  T1 h% c/ ~0 q
  9. <ul>
    4 Z+ y7 c. N) h0 {3 u% q
  10. <li><span class="data">$val[username]</span><a href="$val[url]" target="_blank">$val[title]</a></li>
      d8 E: A, O- c. l
  11. </ul>
    1 w) C- R; m3 @* B
  12. </div>6 \. ~" w' R: a! \4 ^, l' R1 f

  13. 4 \2 p3 w1 R, r2 p: }4 {( ~

  14. . V9 p, Y5 m$ z) O
  15. <!--) c# c% [. c6 d) Y' s
  16. EOT;! Q+ R. w/ e# K5 K' `
  17. } print <<<EOT -->
    6 `- k# L  M  N
  18. <pre>
复制代码
  K+ B: J! [7 M2 p7 q8 }& Q( E8 X# {
" N% C, \! F: Y3 N, i2 g
最后可以实现如下调用样式(风格样式另外自己调节哦,以下是外调到MVMMALL商城系统)
9 |0 l; q( [2 I0 k
/ F) U+ V  a7 \9 M. w* e- }2 B

6 ^$ {4 \! F& t' ?

版权声明
1、转摘或引用本站内容资源须注明原网址,并标明本站网址(兔源码www.tuyuanma.com);
2、对于转摘或引用本站内容资源而引起的民事纠纷、行政处罚或其他损失,本站不承担责任;
3、对于不遵守本声明或其他违法、恶意使用本站内容者,本站保留其追究法律责任的权利。




自动排版 | 高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广告

兔源码网 ( 赣ICP备17001544号 公网安备36112102000036号 )

兔源码 QQ交流群:493651246  GMT+8, 2019-6-26 01:51
←站长统计工具 查看密码:tuyuanma

兔源码DZ模板下载 站长邮箱:tuyuanma@qq.com 站长QQ:3197813386 网站地图

© 2001-2013 本站内容皆来自互联网及用户分享,如需删除请提供软著或商标证书。

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