腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳等常见问题

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

1
回复
1658
查看
[复制链接]

1

主题

8

帖子

2

积分

1°伸手党

Rank: 2

积分
2
发表于 19-4-24 13:37:35 | 显示全部楼层 |阅读模式         


% c5 A4 D9 I- w! d- r* `1 C) R
: r; }1 ?& c6 O. ~$ K

& Y) R9 {' w" Z/ Z; f( z3 U! C c" T, K- h& [8 k. y3 Q- ^

$ E* W1 U) O6 [0 z) E  

0 u: ^/ z9 w3 C* w

4 X* s8 O' ]0 P3 M   不得不说Discuz真的非常强盛,以至于不懂任何技能的人都可以操纵它,菜鸟都可以用Discuz自带的DIY功能实现一些根本的数据调用及风格。说到数据调用,利用过Discuz的站长都知道它背景自带js数据外调功能,许多站长在实现数据外调时直接拿这个自带功能去实现。但我以为自带固然好但是有那么点缺陷:第一,听说js调用不是太好,呵呵;第二,自带的调用方式就是内置的那些,也就是不大概满意你许多需求。

0 V; x( u$ d; \, v8 s

a' q6 w. L# Y! }! ^! K   以是本日我要讲的就是用SQL语句实现数据外调,然后再用PHP脚本调用数据到前端实现。我是一个非专业的选手,对许多东西都有一点相识但不醒目,唯独数据库还算可以。以是本日我们只讲实现功能,至于前端的一个样式风格各人本身去看着办吧。

" I5 q4 v$ D" h0 ~

; V9 }4 N- I/ @* R   案例一:外调5条Discuz流派资讯栏目保举文章(按发表时间降序分列)

: |. Y, T3 O7 D3 ]

2 K5 h" W, T# _ `; f/ m- }   源码如下:

A% H+ o3 G4 p" k7 h

% f7 r, D- {4 o/ t' Q   $index_bbs_new=array();

( A7 b# k+ j. u$ O; y* C

( b, `) P$ B3 R* s/ B$ L   $bbs_sql="SELECT aid,title,username FROM `pre_portal_article_title` where catid=1 and tag=128 order by dateline desc limit 0,5";

* t6 F+ d6 g- ?; l

& F6 T: t4 p7 z7 k! H% v   $b=$db->query($bbs_sql);

. e( R6 p1 b. e* [; m- L

& {* J: c1 }% n( U' C* ]8 ~/ E   while($req=$db->fetch_array($b))

. I, n5 n. d2 j& c3 ^6 x/ u

$ g9 Z8 S3 T8 E. P3 w   {

. S. W4 L& R$ @, a

/ e2 m- S& I2 n   $req['aid'] = $req['aid'];

# H4 R( D# p! D e

- D& |* s P5 [9 z   $req['title'] = $req['title'];

# ~; E1 {+ ^5 @) g3 v( @

) f% r, \( B- u5 H# V0 y/ |! \5 Z8 i   $req['username'] = $req['username'];

0 b3 W+ J9 i) a- Q0 Q y

8 `1 A. f" V; g+ e! }! R8 }   $req['url'] = "bbs/portal.php?mod=view&aid=$req[aid]";

% h1 p1 \* O! c- j; p1 U' |: n& B

! X. n, I7 U' C1 l. c   $index_bbs_new[] = $req;

$ y! S+ P5 D) m

5 {& x7 K- O1 \) F! o* B   }

4 c7 D" ?5 U9 E1 I

; w5 [+ f+ B! [6 M; \   SQL源码表明:上面的sql语句中查询语句最根本的了,那就是:

$ ~; ]) J5 U$ ^: \! ?, \6 B

- t; S" ~4 r1 Q* c6 t: C   select <字段名1>,<字段名2>,.... from 表名(假如是数据库间调用请用数据库名.表名) where 条件

, ]0 k- Q$ A. x m5 X2 \% v

) N, o& Z& Y3 m0 o! f& j% @1 i   上面的字段我们可以查询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)。

: T8 B% M, j2 u* S

$ f3 l! U1 l. J' l+ z   实例二:调用论坛最新英华帖5条(这个Discuz背景调用有)

F0 P5 O/ F7 y: x

" E- q9 Y' D- E: A2 `   调用语句如下(固然样式是取自我做的这个页面),源码如下

8 ?% h# x; |7 J! U

# [9 z/ X) s. o; @+ F6 t8 F   $index_bbs=array();

+ [& u7 w9 B/ `

1 G1 `0 D4 Y! ~/ S   $bbs_sql="SELECT tid,subject,author FROM `pre_forum_thread` where digest>0 order by dateline desc limit 0,5";

2 n, t3 K1 w8 O

- H6 v8 b; ^& ?8 A- f% U4 T   $b=$db->query($bbs_sql);

, }! b, M d q7 ?

, F0 ~& Q; t9 n5 K( W& a; R$ K   while($req=$db->fetch_array($b))

C4 z; m: f% v3 `/ O, ]. {

* u1 [ \. |5 ]   {

' o7 S1 A" D7 B; Z0 d2 W3 d

7 d: O7 ^9 h c* h. O, H* J   $req['tid'] = $req['tid'];

8 Y" U# K% d' V8 V

p! S5 V o; W( J% H" x   $req['subject'] = $req['subject'];

/ O: \ C. a, Q. X3 ~" V

2 ] _& R; `, B7 V! C3 j$ X   $req['author'] = $req['author'];

9 x1 y# R9 Y, V+ J; P

' W0 n1 t4 @2 {; T1 V$ Z2 t" f   $req['url'] = "bbs/forum.php?mod=viewthread&tid=$req[tid]";

) F. c! s/ x" M/ t( ?7 ]0 N

4 J5 f2 x. D# _! X h" {   $index_bbs[] = $req;

4 h* C( F: ?1 g, n

* E: ?* r3 B ?; m. |- N' Q$ e   }

, j, V8 Y( }# W$ Z" E+ m

1 R2 q4 }; R2 |   有了实例一的表明,这里的语句各人查了数据辞书就会懂意思的。

/ W/ _0 M3 j b

5 v0 O' @$ {, f) o   本文泉源:http://www.cqsihan.com(转载请注明出处!)

# B, ^0 X- Q8 I$ _+ L' n( p" ?8 L" A! b/ S/ Z3 M
! S: ?- ] n/ W3 t& A2 K4 m+ J9 q/ W4 x& ^4 _

0

主题

8

帖子

20

积分

1°伸手党

Rank: 2

积分
20
发表于 昨天 11:54 | 显示全部楼层         
支持一下
回复

使用道具 举报

网站简介

球球发,是一家 Discuz! 商业插件、风格模板、网站源码、 Discuz!运营维护技术等于一体的交流分享网站,全站95%的资源都是免费下载,对于资源我们是每天更新,每个亲测资源最新最全---球球发(如果我们有侵犯了您权益的资源请联系我们删除