介绍
小编给大家分享一下帝国CMS跨表查询相关链接怎么弄,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
代码如下:
& lt; php ? 函数user_OtherLink (tbname, num美元,美元ck) { 全球navinfor美元,美元帝国,dbtbpre美元,美元class_r; ck=(int)美元ck; 如果(ck美元==1 | | $ ck==2) { tbname=class_r美元($ navinfor [& # 39; classid& # 39;]] [& # 39; tbname& # 39;]; } num=num美元==& # 39;& # 39;吗?5:num美元;//缺省获取数量为5 美元tag_all=爆炸(& # 39;& # 39;美元navinfor [& # 39; infotags& # 39;]); 美元tbname_num=爆炸(& # 39;& # 39;tbname美元); $ eq_num=装天花板(num美元/count ($ tag_all)); (我=0;i<美元;count ($ tag_all);美元我+ +){ r_1_1=美元帝国→fetch2(“选择tagid, tagname num,短距离,cid从{$ dbtbpre} enewstags tagname=& # 39;“。 $ tag_all[我]美元霸主地位;& # 39;order by tagid限制1“); tag_id美元($ i)=$ r_1_1 [& # 39; tagid& # 39;];//标签的ID tag_num美元($ i)=$ r_1_1 [& # 39; num # 39;];//标签下的文章数量 如果(tag_num美元($ i)在=$ eq_num){//如果标签下的文章数量比平均的数量大或者等于,那么标签的文章数量取平均值 tag_num美元($ i)=$ eq_num;//重新赋值 其他}{//如果标签下的文章小于平均值,那么标签取原有的文章数量。同时重新赋值平均值。 $ eg_tag=eq_num - tag_num美元($ i); eq_num +=eg_tag美元; }//比如说有3个标签,每个标签下有4篇文章,现在指定要显示10篇文章,那么每个标签要拿出4篇,共有12篇文章//3个标签,每个标签下有3篇文章,现在指定要显示10篇文章,那么每个标签要拿出3篇文章,共有9篇文章//3个标签,有2篇文章,B有5篇文章,C有3篇文章,现在要显示10篇文章,那么一个拿出2篇文章,B拿出5篇文章,C拿出3篇文章, 共有10篇文章//如果A, B, C中除了当前文章,还有相同的文章,那么会扣除重复的那篇文章,只取一次,所以指定的数量会有偏差 (i_n=0; i_n<美元;count ($ tbname_num);美元i_n + +) { sql=美元帝国→查询(“选择tid, classid, id,中期从{$ dbtbpre} enewstagsdata tagid=& # 39;“tag_id美元。[我]美元霸主地位;& # 39;订单 由classid“); 国际扶轮=1美元; 而(r=美元帝国→获取(sql)美元) { tbname_all美元($ r (& # 39; tid # 39;]]=$ class_r [$ r (& # 39; classid& # 39;]] [& # 39; tbname& # 39;]; 如果(tbname_all美元($ r (& # 39; tid # 39;]]==$ tbname_num (i_n美元),,国际扶轮& lt;美元=$ tag_num ($ i),,$ navinfor [& # 39; classid& # 39;] !=$ r (& # 39; classid& # 39;),, $ navinfor [& # 39; id # 39;] !=$ r (& # 39; id # 39;)) { 如果(ck==1,美元及美元navinfor [& # 39; classid& # 39;]==$ r (& # 39; classid& # 39;)) { tbname_all_r美元($ r (& # 39; tid # 39;]]=$ class_r [$ r (& # 39; classid& # 39;]] [& # 39; tbname& # 39;]; classid_id美元($ r (& # 39; tid # 39;]]=$ r (& # 39; classid& # 39;]。& # 39;_ # 39;。$ r (& # 39; id # 39;); classid_all美元($ r (& # 39; tid # 39;]]=$ r (& # 39; classid& # 39;); id_all美元($ r (& # 39; tid # 39;]] [$ r (& # 39; classid& # 39;]]=$ r (& # 39; id # 39;); }elseif (ck==2,美元及美元class_r navinfor美元[[& # 39;classid& # 39;]] [& # 39; tbname& # 39;]==class_r美元($ r (& # 39; classid& # 39;]] [& # 39; tbname& # 39;)) { tbname_all_r美元($ r (& # 39; tid # 39;]]=$ class_r [$ r (& # 39; classid& # 39;]] [& # 39; tbname& # 39;]; classid_id美元($ r (& # 39; tid # 39;]]=$ r (& # 39; classid& # 39;]。& # 39;_ # 39;。$ r (& # 39; id # 39;); classid_all美元($ r (& # 39; tid # 39;]]=$ r (& # 39; classid& # 39;); id_all美元($ r (& # 39; tid # 39;]] [$ r (& # 39; classid& # 39;]]=$ r (& # 39; id # 39;); }elseif (ck美元==3){ tbname_all_r美元($ r (& # 39; tid # 39;]]=$ class_r [$ r (& # 39; classid& # 39;]] [& # 39; tbname& # 39;]; classid_id美元($ r (& # 39; tid # 39;]]=$ r (& # 39; classid& # 39;]。& # 39;_ # 39;。$ r (& # 39; id # 39;); classid_all美元($ r (& # 39; tid # 39;]]=$ r (& # 39; classid& # 39;); id_all美元($ r (& # 39; tid # 39;]] [$ r (& # 39; classid& # 39;]]=$ r (& # 39; id # 39;); } 美元国际扶轮+ +; } } } } (classid_id_x=array_unique美元classid_id);//去除重复的值//去除重复的值,不同的标签会有相同的文章,所以去除重复的值比。如一个篇文章里面都有“北京“,“奥运“,两个关键词, B篇文章里面也有“北京“,“奥运“在不去除重复的情况下,一篇的相关链接会出现两次B文章,所以必须去除其中一个。 arsort ($ classid_id_x);//按键名排列,倒序 (tid_tid=中的美元classid_id_x);//取出键名重新排列,键名即为标签的ID:本署 洗牌($ tid_tid);//顺序打乱,重新排 $ tid_tid_num=count ($ tid_tid); 如果(num帝国CMS跨表查询相关链接怎么弄