在帝国CMS中调用多个数据表的数据怎么调用,当两个表有同一个字段并且值相同的情况下,怎么调用处所有的信息等等方法
在帝国CMS中调用多个数据表的数据怎么调用,当两个表有同一个字段并且值相同的情况下,怎么调用处所有的信息等等方法
1、本次是根据案例中两个数据表一个是在线课程表,一个是课程下载表,都会有同一个讲师的课程,那么在讲师的主页上要显示在线课程和课程下载的内容来统计这个老师的课程有哪些,那么就需要根据两个表中包含这个讲师的id号的课程有哪些进行调用,具体的调用方法见付费区域
2、帝国cms调用所有数据表的最新10条信息
本文实例讲述了帝国CMS多表调用最新信息的方法。分享给大家供大家参考。具体实现方法如下:
[e:loop={'select * from (
select id,classid,titleurl,filename,title,newstime,titlepic from phome_ecms_news where newstime union
select id,classid,titleurl,filename,title,newstime,titlepic from phome_ecms_photo where newstime union
select id,classid,titleurl,filename,title,newstime,titlepic from phome_ecms_flash where newstime union
select id,classid,titleurl,filename,title,newstime,titlepic from phome_ecms_article where newstime) a order by newstime desc limit 10',10,24,1}]
[/e:loop]
帝国CMS多表调用最新信息,该演示代码为默认数据表下全站最新10条图片信息,自己根据需求可以附加条件,实现全站点击,全站头条,全站推荐等等.
3、 帝国cms选取两个表的集合实现按某字段排序
本段为大家介绍下帝国cms选取两个表的集合按某字段排序的具体实现,感兴趣的朋友不要错过
<div class="TitleBox"><a href="/" target="_blank">热门作品</a></div>
<div class="BoxBlockMain PicBlock02">
<ul>[e:loop={'select title,titleurl,onclick,titlepic from `[!db.pre!]ecms_test` Union All select title,titleurl,onclick,titlepic from `[!db.pre!]ecms_gamepic` order by onclick desc limit 6',6,24,1}]
<li class="iHover">
<span class="pic"><a href="<?=$bqsr[titleurl]?>" target="_blank" title="<?=$bqr[title]?>"><img style="max-width:120px;max-height:86px;" src="<?=$bqr[titlepic]?>" class="_ImagesReSize" alt="<?=$bqr[title]?>" /></a></span>
<span class="title"><a href="<?=$bqsr[titleurl]?>" target="_blank" title="<?=$bqr[title]?>"><?=esub($bqr[title],12)?></a></span>
</li>[/e:loop]
</ul>
</div>
4、帝国CMS首页调用会员信息(两表多表查询)
[e:loop={"select a.*,b.* from [!db.pre!]enewsmember a LEFT JOIN [!db.pre!]enewsmemberadd b ON a.userid=b.userid order by lasttime desc limit 100",100,24,0}]
会员头像:<img src="<?=$bqr[userpic]?>" width="52" height="52" />--
会员空间地址:<?=$bqr['newsurl']?>e/space/?userid=<?=$bqr[userid]?>--
会员ID:<?=$bqr[userid]?>--
用户名:<?=$bqr[username]?>--
注册时间:<?=format_datetime($bqr[registertime],'Y-m-d H:i:s')?>--
真实姓名:<?=$bqr[truename]?>--
最近登陆时间:<?=format_datetime($bqr[lasttime],'Y-m-d H:i:s')?> --
最近登陆的IP:<?=$bqr[lastip]?>--
登陆次数:<?=$bqr[loginnum]?>--
会员QQ:<?=$bqr[oicq]?><br>
[/e:loop]
同时调用id、用户名、真实姓名、最近登陆时间、最近登陆的IP地址还有登陆次数。
根据登陆时间的先后排列,最近登陆的在最前面。(还可以调用qq、手机等信息)
5、详解帝国CMS自定义列表多表联合查询的方法
统计记录:
select count(*) as total from [!db.pre!]ecms_news union select count(*) as total from [!db.pre!]ecms_movie
查询记录:
select classid,id,titleurl,title,newstime from [!db.pre!]ecms_news union select classid,id,titleurl,title,newstime from [!db.pre!]ecms_movie order by newstime desc
-----------------------注释:-------------------------------
以上调用的是(新闻模型:news、电影模型:movie)两个模型的文章,两个模型用“Union”连接调用
若指定栏目用:where classid in(46,47,51),
若调用推荐在其后追加:and isgood=1,
若指定调用条数在其后追加:limit 10
6、帝国CMS跨表查询相关链接实现方法
<?php
function user_OtherLink($tbname,$num,$ck){
global $navinfor,$empire,$dbtbpre,$class_r ;
$ck=(int)$ck ;
if($ck==1||$ck==2){
$tbname=$class_r[$navinfor['classid']]['tbname'] ;
}
$num= $num=='' ? 5 : $num ; //缺省获取数量为5
$tag_all=explode(',',$navinfor['infotags']);
$tbname_num=explode(',',$tbname) ;
$eq_num=ceil($num/count($tag_all));
for($i=0;$i<count($tag_all);$i++){
$r_1_1 =$empire->fetch1("select tagid,tagname,num,isgood,cid from {$dbtbpre
}
enewstags where tagname='".$tag_all[$i]."' order by tagid limit 1") ;
$tag_id[$i]=$r_1_1['tagid'] ;
//tag的ID
$tag_num[$i]=$r_1_1['num'] ;
//tag下的文章数量
if($tag_num[$i]>=$eq_num){//如果TAG下的文章数量比平均的数量大或者等于,那么TAG的文章数量取平均值
$tag_num[$i] = $eq_num ;//重新赋值
}
else{//如果TAG下的文章小于平均值,那么TAG取原有的文章数量。同时重新赋值平均值。
$eg_tag= $eq_num-$tag_num[$i] ;
$eq_num += $eg_tag ;
}
//比如说有3个TAG,每个TAG下有4篇文章,现在指定要显示10篇文章,那么每个TAG要拿出4篇,共有12篇文章
//3个TAG,每个TAG下有3篇文章,现在指定要显示10篇文章,那么每个TAG要拿出3篇文章,共有9篇文章
//3个TAG,A有2篇文章,B有5篇文章,C有3篇文章,现在要显示10篇文章,那么A拿出2篇文章,B拿出5篇文章,C拿出3篇文章,共有10篇文章
//如果 A、B、C中除了当前文章,还有相同的文章,那么会扣除重复的那篇文章,只取一次。所以指定的数量会有偏差
for($i_n=0;$i_n<count($tbname_num);$i_n++){
$sql=$empire->query("select tid,classid,id,mid from {$dbtbpre
}
enewstagsdata where tagid='".$tag_id[$i]."' order by classid ");
$ri=1 ;
while($r=$empire->fetch($sql))
{
$tbname_all[$r['tid']]=$class_r[$r['classid']]['tbname'] ;
if($tbname_all[$r['tid']]==$tbname_num[$i_n] && $ri <= $tag_num[$i] && $navinfor['classid']!=$r['classid'] && $navinfor['id']!=$r['id']){
if($ck==1&&$navinfor['classid']==$r['classid']){
$tbname_all_r[$r['tid']]=$class_r[$r['classid']]['tbname'] ;
$classid_id[$r['tid']]=$r['classid'] . '_' . $r['id'] ;
$classid_all[$r['tid']]=$r['classid'] ;
$id_all[$r['tid']][$r['classid']]=$r['id'] ;
}
elseif($ck==2&&$class_r[$navinfor['classid']]['tbname']==$class_r[$r['classid']]['tbname']){
$tbname_all_r[$r['tid']]=$class_r[$r['classid']]['tbname'] ;
$classid_id[$r['tid']]=$r['classid'] . '_' . $r['id'] ;
$classid_all[$r['tid']]=$r['classid'] ;
$id_all[$r['tid']][$r['classid']]=$r['id'] ;
}
elseif($ck==3){
$tbname_all_r[$r['tid']]=$class_r[$r['classid']]['tbname'] ;
$classid_id[$r['tid']]=$r['classid'] . '_' . $r['id'] ;
$classid_all[$r['tid']]=$r['classid'] ;
$id_all[$r['tid']][$r['classid']]=$r['id'] ;
}
$ri++;
}
}
}
}
$classid_id_x=array_unique($classid_id);//去除重复的值
//去除重复的值,不同的TAG会有相同的文章。所以去除重复的值。比如A篇文章里面都有"北京","奥运",两个关键词,B篇文章里面也有"北京","奥运"在不去除重复的情况下,A篇的相关链接会出现两次B文章。所以必须去除其中一个。
arsort($classid_id_x); //按键名排列,倒序
$tid_tid=array_keys($classid_id_x) ;//取出键名重新排列,键名即为TAG的ID:tid
shuffle($tid_tid);//顺序打乱,重新排
$tid_tid_num=count($tid_tid) ;
if($num<$tid_tid_num) $tid_tid_num=$num+1 ;//由于去除了本文章,所以再加一条弥补
for($i_tid=0;$i_tid<$tid_tid_num;$i_tid++){
$tid=$tid_tid[$i_tid];
$classid=$classid_all[$tid];
$id=$id_all[$tid][$classid];
if($id==$navinfor['id']) continue ; //如果是本文章,相关链接里面就不用再放了。
$tbname=$tbname_all_r[$tid];
$r_1_2 =$empire->fetch1("select title,smalltext,titleurl,dp_jt,dp_dwz from {$dbtbpre
}
ecms_$tbname where id='".$id."' order by newstime limit 1") ;
////////显示样式在这修改
echo $r_1_2['title'].' ' ;
////////
}
}
?>
在你的模板中使用下方代码进行调动
<?php
OtherLink('news,info',7,3) ;
?>
以下是付费内容
本网刊登的文章均仅代表作者个人观点,并不代表本网立场。文中的论述和观点,敬请读者注意判断。
2021-08-27
2022-04-12
2022-05-30
2021-02-08
2021-08-27
2021-08-27
2021-02-08
2021-08-29