灵动标签调用外部数据

热度:77
帝国CMS的标签的SQL查询调用支持调用mysql数据库的所有数据,本节通过用灵动标签的SQL语句查询来讲解调用方法。
版本 20190723
所属分类 帝国CMS模板制作
可使用页面
默认值


用灵动标签调用外部数据:


原理:灵动标签调使用SQL,可以调用mysql数据库的所有数据,只要帝国CMS的数据库帐号要有select权限查询对应数据库的表,就能调用成功。


例一:调用自己另一个网站Discuz的最新贴子

<table width="100%" border="0" cellspacing="1" cellpadding="3">

[e:loop={"select tid,subject,dateline from discuzdb.cdb_threads order by tid desc limit 10",10,24,0}]

<tr><td>

<a href="/bbs/viewthread.php?tid=<?=$bqr[tid]?>" target="_blank"><?=$bqr[subject]?></a> (<?=date('Y-m-d',$bqr[dateline])?>) 

</td></tr>

[/e:loop]

</table>


discuzdb.cdb_threads为Discuz的贴子表名,其中“discuzdb”为Discuz的数据库名称。

limit 10为显示贴子数量。

如果用伪静态地址可以用:/bbs/thread-<?=$bqr[tid]?>-1-1.html 

如果指定单个版块的贴子,SQL用:select tid,subject,dateline from discuzdb.cdb_threads where fid=版块ID order by tid desc limit 10

如果指定多个版块的贴子,SQL用:select tid,subject,dateline from discuzdb.cdb_threads where fid in (1,2,3) order by tid desc limit 10



例二:调用Discuz的最新贴子(含调用论坛版块名)

<table width="100%" border="0" cellspacing="1" cellpadding="3">

[e:loop={"select tid,subject,dateline,fid from discuzdb.cdb_threads order by tid desc limit 10",10,24,0}]

<?php

$fr=$empire->fetch1("select name from discuzdb.cdb_forums where fid='$bqr[fid]'");

?> 

<tr><td>

[<?=$fr[name]?>] <a href="/bbs/viewthread.php?tid=<?=$bqr[tid]?>" target="_blank"><?=$bqr[subject]?></a> (<?=date('Y-m-d',$bqr[dateline])?>) 

</td></tr>

[/e:loop]

</table>


discuzdb.cdb_forums为Discuz的版块表名,其中“discuzdb”为Discuz的数据库名称。



例三:调用DiscuzX的最新贴子

<table width="100%" border="0" cellspacing="1" cellpadding="3">

[e:loop={"select tid,subject,dateline from discuzdb.pre_forum_thread order by tid desc limit 10",10,24,0}]

<tr><td>

<a href="/bbs/forum.php?mod=viewthread&tid=<?=$bqr[tid]?>" target="_blank"><?=$bqr[subject]?></a> (<?=date('Y-m-d',$bqr[dateline])?>) 

</td></tr>

[/e:loop]

</table>


discuzdb.pre_forum_thread为DiscuzX的贴子表名,其中“discuzdb”为DiscuzX的数据库名称。

limit 10为显示贴子数量。

如果用伪静态地址可以用:/bbs/thread-<?=$bqr[tid]?>-1-1.html

如果指定单个版块的贴子,SQL用:select tid,subject,dateline from discuzdb.pre_forum_thread where fid=版块ID order by tid desc limit 10

如果指定多个版块的贴子,SQL用:select tid,subject,dateline from discuzdb.pre_forum_thread where fid in (1,2,3) order by tid desc limit 10



例四:调用DiscuzX的最新贴子(含调用论坛版块名)

<table width="100%" border="0" cellspacing="1" cellpadding="3">

[e:loop={"select tid,subject,dateline,fid from discuzdb.pre_forum_thread order by tid desc limit 10",10,24,0}]

<?php

$fr=$empire->fetch1("select name from discuzdb.pre_forum_forum where fid='$bqr[fid]'");

?> 

<tr><td>

[<?=$fr[name]?>] <a href="/bbs/forum.php?mod=viewthread&tid=<?=$bqr[tid]?>" target="_blank"><?=$bqr[subject]?></a> (<?=date('Y-m-d',$bqr[dateline])?>) 

</td></tr>

[/e:loop]

</table>


discuzdb.pre_forum_forum为DiscuzX的版块表名,其中“discuzdb”为DiscuzX的数据库名称。



例五:调用PHPwind的最新贴子

<table width="100%" border="0" cellspacing="1" cellpadding="3">

[e:loop={"select tid,subject,postdate from phpwinddb.pw_threads order by tid desc limit 10",10,24,0}]

<tr><td>

<a href="/bbs/read.php?tid=<?=$bqr[tid]?>" target="_blank"><?=$bqr[subject]?></a> (<?=date('Y-m-d',$bqr[postdate])?>) 

</td></tr>

[/e:loop]

</table>


phpwinddb.pw_threads为phpwind的贴子表名,其中“phpwinddb”为phpwind的数据库名称。

limit 10为显示贴子数量。

如果用伪静态地址可以用:/bbs/read-htm-tid-<?=$bqr[tid]?>.html

如果指定单个版块的贴子,SQL用:select tid,subject,postdate from phpwinddb.pw_threads where fid=版块ID order by tid desc limit 10

如果指定多个版块的贴子,SQL用:select tid,subject,postdate from phpwinddb.pw_threads where fid in (1,2,3) order by tid desc limit 10



例六:调用PHPwind的最新贴子(含调用论坛版块名)

<table width="100%" border="0" cellspacing="1" cellpadding="3">

[e:loop={"select tid,subject,postdate,fid from phpwinddb.pw_threads order by tid desc limit 10",10,24,0}]

<?php

$fr=$empire->fetch1("select name from phpwinddb.pw_forums where fid='$bqr[fid]'");

?>

<tr><td>

[<?=$fr[name]?>] <a href="/bbs/read.php?tid=<?=$bqr[tid]?>" target="_blank"><?=$bqr[subject]?></a> (<?=date('Y-m-d',$bqr[postdate])?>) 

</td></tr>

[/e:loop]

</table>


phpwinddb.pw_forums为phpwind的版块表名,其中“phpwinddb”为phpwind的数据库名称。



注意,开头说了,要在帝国网站中调用discuz的数据,首先为discuz论坛添加帝国网站系统的用户访问权限,这里只添加查询(select)权限,确保安全。用root登陆phpmysql后,直接在sql中运行以下语句:

GRANT select on discuz.* to ecms_user;


其中“discuz”为Discuz的数据库名称, ecms_user 为帝国数据库登录的用户名称。


问题反馈反馈和建议QQ群:785318993