中药方大全小图标
您当前的位置:首页 > 其他 > 网站日记

帝国cms随机调用文章或者tags

提示: 阅读权限:登录可见  来源:jiuhecai  作者: 未知

先看官方给出的方法:

先用php随机出信息ID,然后SQL调用用id in (php随机的ID列表),代码如下:

<?php

$randnum=10;        //随机数量

$randids='';

$randdh='';

for($i=1;$i<=$randnum;$i++)

{

        $randids.=$randdh.rand(1,100000);        //1为最小ID,100000为最大ID

        $randdh=',';

}

?>

 

[e:loop={栏目ID,显示条数,操作类型,只显示有标题图片,"id in ($randids)"}]

模板代码内容

[/e:loop]

 

但是,如果id不连续的话,可能出现调用悲剧。

以下改进的方法,看似复杂,感觉笨戳,实际执行结果却意外高效可靠:

<?php

此处隐藏304个字。

登录可见

$str="";

$rid=array();

$i=0;

while($i<10){

$nr= $empire->fetch1($sql);

$titleurl=sys_ReturnBqTitleLink($nr);

if(in_array($nr['id'], $rid)){

 

} else {

 $str=$str."<li><a href='".$titleurl."' title='".$nr['title']."'>".$nr['title']."</a></li> ";

 $rid[]=$nr['id'];

$i=$i+1;

 }

 

}

 

echo $str;

?>

上述代码,随机调用10条信息,执行速度杠杠的,完全打破了随机调用耗时轻易别用的禁区。

特别注意下,t2的id重命名为id2是必须的,否则当表的id不连续的时候,会重蹈官方方法的覆辙。

 

同理,随机调用tagid的重点代码为:

 

SELECT *

FROM `phome_enewstags` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(tagid) FROM `phome_enewstags`)-(SELECT MIN(tagid) FROM `phome_enewstags`))+(SELECT MIN(tagid) FROM `phome_enewstags`)) AS tagid2) AS t2

WHERE t1.tagid >= t2.tagid2

ORDER BY t1.tagid limit 1

 

tags: 帝国cms tags 帝国 图片
返回顶部
推荐资讯
视频:田纪钧讲关节不痛的秘密、膝关节拉筋法
视频:田纪钧讲关节不
白露到了,你还好吗?
白露到了,你还好吗?
尿疗与断食
尿疗与断食
给风疹反复发作女孩的药方(组图)
给风疹反复发作女孩的
相关文章
栏目更新
栏目热门
  1. 帝国cms全站搜索的分页格式如何修改-流程
  2. libreoffice7的命令大全
  3. 帝国cms插件之标题生成标题图片
  4. 帝国cms插件安装模板
  5. useragent两千条,爬虫专用
  6. 帝国cms插件如何兼容gbk和utf8
  7. 帝国cms插件之迅搜
  8. 帝国cms用户上传文件名的命名规则及修改方
  9. 帝国cms7.2函数大全
  10. 帝国cms代码片段备忘录