首页 > 其他 > 网站日记>正文

帝国cms批量添加tags的函数改良

提示: 阅读权限:公开  

前文见---帝国cms7.2后台信息列表页批量添加tags

 http://www.zhongyf.com/qita/rj/2015-02-19/91911.html

对于其中的主要函数,jiuhecai做了改进,使得逻辑清晰,执行效率更高。

尤其是其中针对mysql的操作jiuhecai使用了比较少用但是高效的mysql函数,值得收藏学习。

function eInsertTags2($tags,$classid,$idr,$newstime){   
    global $empire,$dbtbpre,$class_r; 
	//参数检查
    $tagname = RepPostVar($tags); 
    if(!trim($tagname))printerror("TAGS信息不能为空", "", 1, 0, 1);
	$tag = explode(",", $tagname);   
    if(count($tag)>1)printerror("只能添加一个TAGS词", "", 1, 0, 1);  
    $count = count($idr); //统计ID数量   
    if(empty($count))printerror("未选择信息ID", "", 1, 0, 1);
    
    $classid=(int)$classid;   
    $mid=(int)$class_r[$classid][modid]; //获取模型id
    $tbname=$class_r[$classid][tbname];//获取表名
    //获取tagid
    $tagid=(int)$empire->gettotal("select tagid as total from {$dbtbpre}enewstags 
                                    where tagname='$tagname'");
    if($tagid==0){ //新增tag
        $empire->query("insert into {$dbtbpre}enewstags(tagname,num,isgood,cid) 
                                                values('$tagname',1,0,0);");   
        $tagid=$empire->lastid();     
    }else{ //已经存在的tag,过滤掉已经添加过的
        $ids=join(',',$idr);
        $allids=$empire->gettotal("select group_concat(id) as total 
                                    from {$dbtbpre}enewstagsdata 
                                    where
                                        tagid='$tagid'and id in($ids) and mid='$mid' ");
        $allidr=explode(',',$allids);
        $idr=array_diff($idr,$allidr);
        if(empty($idr))printerror("已经有了,无需重复添加", "", 1, 0, 1);
    }
    //开始正经干活
    foreach($idr as $id){
        //获得副表名称
         $jhcr = $empire->fetch1("select classid,stb,newstime from {$dbtbpre}ecms_".$tbname." 
                            where id='$id' limit 1");
        //更新副表
        $ftbname=$dbtbpre."ecms_".$tbname."_data_".$jhcr['stb'];
        $empire->query("update $ftbname set 
                        infotags=trim(BOTH ',' from concat(infotags,',','$tagname')) 
                        where id='$id'");   
        //更新tags数据表
         $empire->query("insert into {$dbtbpre}enewstagsdata(tagid,classid,id,newstime,mid)
                            values('$tagid','$jhcr[classid]','$id','$jhcr[newstime]','$mid')"); 
    }
    //更新tags主表
    $empire->query("update {$dbtbpre}enewstags set num=num+".count($idr)."
                     where tagid='$tagid'");   
    printerror("批量添加TAGS成功", "", 1, 0, 1);   
}


上一篇:帝国cms用自定义列表页做首页

下一篇:帝国cms列表模板中php运算顺序问题

tags: 帝国cms tags 批量 帝国

返回首页

相关

热门

站内直通车

[!--temp.bottomnav--]
返回顶部