原文来自:https://www.zixuephp.com

本教程讲解dedecms {dede:sql}标签用法详解

功能说明:用于从模板中用一个SQL查询获得其返回内容

适用范围:全局使用

基本语法:

{dede:sqlsql=""}底层模板{/dede:sql}

调用列表

{dede:sqlsql="select*Fromdede_archiveslimit10"}
<li>&middot;<ahref="/plus/view.php?aid=[field:id/]">[field:title/]</a></li>
{/dede:sql}

1.调用某个特定会员发布的文章内容

{dede:sqlsql='Select*fromdede_archiveswheremid=1'}
<ahref='/plus/view.php?aid=[field:id/]'target='_blank'>[field:title/]</a>
{/dede:sql}

mid为用户ID可以参考二次开发中关于dede_archives的数据表字段介绍

下面我们再来详细的看看{dede:sql}标签其它实例

<divclass="hotmt1">
<dlclass="tbox">
<dt><strong>⊙下载排行</strong></dt>
<dd>
<ulclass="c1ico2">{dede:sqlsql="selecta.idasaid,a.typeid,a.title,a.pubdate,d.idasdid,d.downloadsfrommo_archivesasa,mo_downloadsasdwherea.id=d.idanda.arcrank=0anda.typeid!=15anda.typeid!=44and(UNIX_TIMESTAMP()-a.pubdate)/3600/24BETWEEN0AND15orderbyd.downloadsdesclimit0,10;"}
<li>
<atitle="[field:title/]"href="[field:aidfunction=GetinfoUrl(@me,10)/]">[field:titlefunction='cn_substr(@me,26)'/]</a>-下载数:<fontcolor='red'>[field:downloads/]</font></li>
{/dede:sql}
</ul>
</dd>
</dl>
</div>

首页调用文章正文内容,比较好的解决方法:

方法一:

{dede:sqlsql="SELECTaid,typeid,body,body1,body2,body3,body4,body5FROM`dede_addonarticle`wheretypeid=2ORDERBY`aid`DESCLIMIT0,1"}
[field:body/][field:body1/][field:body2/][field:body3/][field:body4/][field:body5/]
{/dede:sql}

方法二:

{dede:sqlsql="SELECTaid,typeid,bodyFROM`dede_addonarticle`wheretypeid=2ORDERBY`aid`DESCLIMIT0,1"}
[field:body/]
{/dede:sql}

调用说明:

其中typeid=2,栏目ID号,表示调用此ID栏目内的文章,换成 aid=1 则表示调用的 aid 为 1 的文章,

DESC 表示排序,按从大到小排,换成 ASC 则按从小到大排序,

LIMIT 0,1 表示调用数量,也可以写成数量LIMIT 1,这个1代表调用的数量。

dede sql 标签 取出来的列表 实现分页

{dede:php}

//获取当前页数
if(isset($_GET['page'])){
$page=intval($_GET['page']);
}
else{
$page=1;
}
$PageSize=3;//每页的记录数量
//获取总数量

$sql=&ldquo;SELECTcount(*)FROMjs_archivesWHEREwriter=&lsquo;开发建设科&rsquo;&rdquo;;
$result=mysql_query($sql);
$row=mysql_fetch_row($result);
$amount=$row[0];
/*计算总页数
if($amount){
if($amount<$PageSize){
$PageCount=1;
}
if($amount%$PageSize){//总数量除以每页的记录数量取于
$PageCount=&amp;nbsp;(int)($amount/$PageSize)+1;//如果有于,则页数等于总数量除每页的记录数加1
}
else{
$PageCount=&amp;nbsp;$amount/$PageSize;//没有,则结果是页数
}
}
else{
$PageCount=0;
}*/
$PageCount=ceil($amount/$PageSize);//总页数=总数量除以每页数量如果有小树,则进位<spanstyle=&rdquo;color:#008000;&rdquo;>
if($Page>$PageCount|$page==0){//如果当前页数大于总页数
echo&ldquo;不能发现此页!&rdquo;;
exit();
}

//翻页链接
$PageOut=&rdquo;;
if($page==1){//如果页数只有一页

$PageOut.=&lsquo;第一页|上一页&rsquo;;
}
else{
$PageOut.=&lsquo;<ahref=&rdquo;/plus/list.php?tid=30&page=1&Prime;>第一页</a>|<ahref=&rdquo;/plus/list.php?tid=30&page=&rsquo;.($page-1).&rsquo;&rdquo;>上一页</a>|&rsquo;;
}
if($page==$PageCount||$PageCount==0){//如果当前页等于总也数
$PageOut.=&lsquo;下一页|尾页&rsquo;;
}
else{
$PageOut.=&lsquo;<ahref=&rdquo;/plus/list.php?tid=30&page=&rsquo;.($page+1).&rsquo;&rdquo;>下一页</a>|<ahref=&rdquo;/plus/list.php&tid=30?page=&rsquo;.$PageCount.&rsquo;&rdquo;>尾页</a>&rsquo;;
}
//获取数据
if($amount){
$sql=&rdquo;select*FROMjs_archivesWHEREwriter=&lsquo;开发建设科&rsquo;limit&ldquo;.($page-1)*($PageSize).&rdquo;,$PageSize&rdquo;;

$result=mysql_query($sql);
while($row=mysql_fetch_array($result)){//此段代码只是示例

$blogs[]=array(&lsquo;id&rsquo;=>$row['id'],&rsquo;title&rsquo;=>$row['title']);
foreach($blogsas$blog){
$title=$blog['title'];
$id=$blog['id'];

echo<<<EOT
<tr><tdwidth=&rdquo;550&Prime;><p><ahref=&rsquo;/plus/view.php?aid=$id&rsquo;target=&rsquo;_blank&rsquo;>$title</a></td></tr>
EOT;
unset($blogs);
}


}
for($i=1;$i<=$PageCount;$i++){//数字分页
$Pageshow=($i!=$page)?&rdquo;<ahref=&rsquo;/plus/list.php?tid=30?page=&rdquo;.$i.&rdquo;&lsquo;>$i</a>&rdquo;:&rdquo;<b>$i</b>&rdquo;;
echo$PageShow;
}
echo$amount.&rsquo;条记录,每页&rsquo;.$PageSize.&rsquo;条,共&rsquo;.$PageCount.&rsquo;页&rsquo;;
}

echo$PageOut;
{/dede:php}

根据自己的情况把SQL写上然后把list.php里的

if($lv->IsError)
{
//ParamError();
}