本文阐述了添加更新标签thinkphp的方法。分享给你供你参考。具体分析如下:

我们知道,ThinkPHP案例博客的扩张,只是告诉我们如何添加标签,标签,方法没有删除和更新标签我的方法前彻底删除thinkphp3.1案例博客标签扩大的情况下的博客写了一个删除标记法,更新的方法会再写一个标签。

一般来说,当我们写博客的时候,我们很少改变标签,但是如果我们改变标签来删除、添加和减少标签呢这无疑是造成think_tag和think_tagged两台垃圾信息的累积,好了,言归正传。

更新标签时,我们知道两个参数:

在oldtags美元:更新,在thinphp_tag表标签

当newstags美元:更新、插入thinphp_tag之前,形式提交标签

在更新文章时,标签可能会出现一些更改:

1、newstags美元美元和oldtags是相同的- >添加或减少或修改标签,标签号码和姓名及其原件。

2、newstags美元美元在同一oldtags,不修改标签

3、newstags美元美元和oldtags完全不同,添加或减少标签和标签数和原来完全不同的名字

对于2,我们可以通过比较筛选后删除或添加1和3的判断比较。

删除:可以删除标签名称已经存在thinphp_tag,当标签数= 1,它被删除,当数> 1减少1(count-1)。

添加:添加标记名。如果thinphp_tag表已经存在,然后计数(计数>1)+ 1在原有的基础上,即数+ 1。如果没有(计数= 0),然后添加新标签,计数+ 1。具体功能如下:

复制代码代码如下:公共功能updatetag($ VO,$模块){

recordid美元=装饰($ VO { 'id' });



如果($ VO { 'keywords} = =){ / /如果没有标签,原来的标签删除

美元-> Deltag($ recordid);

其他{ }

newtags美元=爆炸($ VO { 'keywords}); / /获取更新选项卡并为数组(关键词标签领域,在ThinkPHP博客标签开发案例,注)



{ } =条件'recordid美元的recordid美元; / /当多个标签,查询日志,而不是



标签= M('tagged美元);



标签= M('tag美元);



taggedlist美元=美元标记->在(条件)->选择();



如果(taggedlist美元!= false){



foreach(taggedlist美元美元美元关键=值){



tagid美元=装饰(价值'tagid{ });



tagvo美元=美元->在标签(ID =美元。tagid)->找到();



oldtags美元{ } = { $ tagvo 'name' }; / /得到原来的标签



}



结果=计数(array_diff美元(array_diff(newtags美元,美元oldtags),array_diff(oldtags美元,美元newtags))));



结果1美元=计数(array_diff(newtags美元,美元oldtags)); / /返回前和更新号码标签后的差异



2美元=计数(array_diff(oldtags美元,美元newtags)); / /返回前和更新号码标签后的差异



如果(($ 1!= = $ 2)| |($结果!= 0))与原来的{ 2相同的过滤器>



array_intersect美元= array_intersect(oldtags美元,美元; / / newtags)获得交换价值



oldtags_diff美元= array_diff(oldtags美元,美元array_intersect); / /原标签,已更新,删除无用的。



newtags_diff美元= array_diff(newtags美元,美元array_intersect); / /修改标签,你需要添加



/ /删除或count-1



如果(计数($ oldtags_diff)!= 0){



foreach(oldtags_diff美元美元的名字){



tagvo美元=美元->在标签(模块module'and美元=名称= $名)->找到();



$count = intval($ tagvo { count}); / /得到的标签数量



如果($ = 1){



标签>,(美元ID =美元。tagvo { 'id' })->删除();



$标记->哪里('tagid = '。$ tagvo { 'id' }。recordid ='。recordid美元)->删除();



} elseif(合计数> 1){

标签>,(美元ID =美元。tagvo { 'id' })-> setdec(count,1); / /标签数减1



$标记->哪里('tagid = '。$ tagvo { 'id' }。recordid ='。recordid美元)(->删除); / /删除相关数据标记

}

}

}

添加/更新标签



如果(计数($ newtags_diff)!= 0){



foreach($ newtags_diff达v){



美元=修剪(五美元);



如果(!emptyempty($ V)){



/标签已经存在记录



图'module} = { $ $模块;



合图{ 'name' } = $ V;



$标记标签>,= $($地图)->找到();



如果($塔格){ / /如果你保存相同的标签和标签之前的积累



tagid美元= $塔格{ 'id' };



标签->在美元(ID =。$塔格{id})-> setinc(count,1); / /统计计数加1(这个函数有三个参数,默认加1)



如果新的{其他}标签,+ 1标签



数组();



$ name= $ v;



$=1;



$模块= $模块;



$结果;



tagid美元美元=结果;



}

}

信息记录

数组();



$模块= $模块;



$ T {recordid} = $ / /保存recordid;消息ID



$ T {tagtime} =时间();



$ T {tagid} = $ / / tagid;保存标签ID



$标记>添加($ T);



}



}

}

}

}

}

使用方法:

复制代码代码如下:公共函数更新(){

$博客= D(博客);

$ $;

美元-> updatetag(合武,博客); / /更新之前打电话

如果(FALSE = $ VO){

美元->误差($博客-> geterror());

}

更新数据

美元=;

如果(假)!= $列表){

/ / print_r($列表);



美元->成功('editor成功!);

{人}

错误

美元->误差('edit失败!);

}

}

希望本文有助于基于ThinkPHP框架的PHP程序设计人。