亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

ThinkPHP添加更新標簽的方法

2024-05-04 23:28:37
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了ThinkPHP添加更新標簽的方法,在前文所述刪除blog標簽的基礎上實現同步更新標簽,是ThinkPHP非常實用的技巧,需要的朋友可以參考下
 
 

本文實例講述了ThinkPHP添加更新標簽的方法。分享給大家供大家參考。具體分析如下:

我們知道,thinkphp的拓展案例blog,只告訴我們怎樣去添加標簽tag,卻沒有刪除和更新標簽的方法,我在前面的《徹底刪除thinkphp3.1案例blog標簽的方法》為拓展案例blog寫了一個刪除標簽的方法,接下來將寫一個標簽的更新方法.

一般情況下,我們寫博客后,很少去改動標簽了,但是如果我們改動標簽如,刪除,添加,減少標簽怎么辦呢?這無疑造成think_tag和think_tagged兩個表垃圾信息的積累,好了,言歸正轉.

在更新標簽時我們來了解兩個參數:

$oldtags:更新前,存在thinphp_tag表中標簽

$newstags:更新時,插入thinphp_tag之前,表單提交過來的標簽

更新文章時,標簽可能會有以下幾種變化:

1、$newstags與$oldtags部分相同-> 添加或減少或修改標簽,標簽的個數和名稱和原來部分相同。

2、$newstags與$oldtags完全相同->不修改標簽

3、$newstags與$oldtags完全不同 ->添加或減少標簽,并且標簽的個數和名稱和原來完全不同

對于2我們只要通過判斷比較過濾即可,對于1、3通過判斷比較后,再作刪除或添加處理:

刪除:要刪除的標簽名,在thinphp_tag已存在,當標簽的count=1時,就把它刪除掉,當count>1時,就減少1(count-1).

添加:要添加的標簽名稱,如果thinphp_tag表中已存在則count(count >1)在原來的基礎上+1即count+1,如果不存在(count =0),則添加新標簽,count+1.具體函數如下:

復制代碼代碼如下:
public function updateTag($vo,$module) {  
 $recordId= trim($vo['id']);  
  
if($vo['keywords']==''){//如果沒有標簽,則把原來的標簽刪除  
     $this->deltag($recordId);      
   }else{  
      $newtags = explode(' ', $vo['keywords']);//獲取更新的標簽并轉為數組(keywords是這里的標簽字段,在thinkphp的拓展案例blog為tags,注意)
  
   $condition['recordId'] = $recordId;//當有多個標簽時,將查詢多篇日記,而不是一篇  
  
 $tagged=M('Tagged');  
  
  $tag=M('Tag');           
  
  $taggedlist= $tagged->where($condition)->select();  
  
if($taggedlist !==false){  
  
foreach ($taggedlist as $key => $value) {  
  
  $tagId=trim($value['tagId']);  
  
  $tagvo=$tag->where('id='.$tagId)->find();  
  
  $oldtags[]=$tagvo['name'];//獲取原來的標簽  
  
  }     
  
   $result=count(array_diff(array_diff($newtags,$oldtags),array_diff($oldtags,$newtags)));      
  
   $result1=count(array_diff($newtags,$oldtags));//返回更新前后TAG的差值數  
  
  $result2=count(array_diff($oldtags,$newtags));//返回更新前后TAG的差值數 
  
  if(($result1 !== $result2) || ($result !==0)){//2與原來的完全相同->過濾掉             
  
   $array_intersect=array_intersect($oldtags,$newtags);//取得交值  
  
   $oldtags_diff=array_diff($oldtags,$array_intersect);//原來的標簽,被更新后已無用,需要刪除的  
  
    $newtags_diff=array_diff($newtags,$array_intersect);//修改的標簽,需要添加的  
  
//刪除或者count-1     
  
     if(count($oldtags_diff) !==0){   
  
     foreach ($oldtags_diff as $name) {  
  
     $tagvo=$tag->where("module='$module' and name='$name'")->find();  
  
     $count=intval($tagvo['count']);//獲取標簽的數量  
  
if($count==1){  
  
    $tag->where('id='.$tagvo['id'])->delete();  
  
    $tagged->where('tagId='.$tagvo['id'].' and recordId='.$recordId)->delete();  
  
 }elseif($count > 1){  
   $tag->where('id='.$tagvo['id'])->setDec('count',1);//標簽數量減1  
  
   $tagged->where('tagId='.$tagvo['id'].' and recordId='.$recordId)->delete();//刪除tagged中相關數據   
 } 
  } 
}  
//添加更新的標簽    
  
if(count($newtags_diff) !==0){  
  
   foreach ($newtags_diff as $v) {  
  
       $v = trim($v);           
  
       if (!emptyempty($v)) {  
  
        // 記錄已經存在的標簽  
  
     $map['module'] = $module;  
  
        $map['name'] = $v;  
  
        $tagg = $tag->where($map)->find();  
  
       if ($tagg) {//如果現在保存的標簽與之前相同的標簽累加  
  
       $tagId = $tagg['id'];  
  
          $tag->where('id=' . $tagg["id"])->setInc('count', 1);//count統計加1(這個函數有三個參數,默認加1)  
  
          } else {//如果是新添的標簽,標簽+1  
  
                   $t = array();  
  
                   $t["name"] = $v;  
  
                   $t["count"] = 1;  
  
                   $t["module"] = $module;  
  
                   $result = $tag->add($t);  
  
                   $tagId = $result;  
  
            }  
      }  
                 //記錄tag信息  
    $t = array();  
  
      $t["module"] = $module;  
  
      $t["recordId"] = $recordId;//保存news的ID  
  
      $t["tagTime"] = time();  
  
      $t["tagId"] = $tagId;//保存tag的ID  
  
      $tagged->add($t);  
  
     }  
  
    }   
     }  
     }  
     }  
}

使用方法:
復制代碼代碼如下:
public  function update() {  
$Blog=D('Blog');  
$vo=$Blog->create();  
$this->updateTag($vo,'Blog');//更新前調用  
if (false === $vo) {  
 $this->error($Blog->getError());  
     }  
   // 更新數據  
   $list = $Blog->save();  
   if (false !== $list) {  
     //print_r($list);  
       
     $this->success('編輯成功!');  
   } else {  
       //錯誤提示  
       $this->error('編輯失敗!');  
   }  
}

 

希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久成人| 欧美电影免费观看大全| 久久国产精品久久久| 欧美性猛交xxxx偷拍洗澡| 奇门遁甲1982国语版免费观看高清| 精品女厕一区二区三区| 中文字幕亚洲字幕| 免费97视频在线精品国自产拍| 在线看片第一页欧美| 亚洲专区国产精品| 精品成人在线视频| 日韩黄色在线免费观看| 欧美日韩国产一中文字不卡| 久久福利视频网| 亚洲天堂久久av| 一本大道久久加勒比香蕉| 亚洲精品日韩久久久| www高清在线视频日韩欧美| 午夜精品久久久久久久久久久久久| 91精品久久久久久久久中文字幕| 久久精品最新地址| 日韩精品高清在线| 91视频国产精品| 91久久精品美女高潮| 欧美精品www在线观看| 久久成年人免费电影| 国产精品9999| 国产丝袜一区视频在线观看| 久久天堂av综合合色| 国产精品入口免费视频一| 在线亚洲午夜片av大片| 青青青国产精品一区二区| 亚洲国产精品女人久久久| 国产精品美女久久久久久免费| 欧美午夜www高清视频| 欧美精品激情在线| 日韩一区视频在线| 成人免费激情视频| 2019中文字幕在线免费观看| 国产成人精品免高潮费视频| 日韩美女免费线视频| 欧美成aaa人片在线观看蜜臀| 91精品国产成人| 欧美在线免费看| 久久伊人精品视频| 国产精品夜间视频香蕉| 日韩高清电影好看的电视剧电影| 亚洲а∨天堂久久精品9966| 91精品国产乱码久久久久久久久| 欧美视频在线视频| 国产精品极品美女粉嫩高清在线| 久久九九热免费视频| 亚洲成人网久久久| 国产精品欧美激情| 欧美一区第一页| www亚洲精品| 日本成熟性欧美| 成人久久18免费网站图片| 国产精品久久久久久久久男| 国产一区二区三区在线看| 欧美一区二区三区……| 日韩电影中文字幕| 亚洲最大激情中文字幕| 亚洲最大激情中文字幕| 久久琪琪电影院| 久久久日本电影| 精品国偷自产在线视频| 欧美高清视频在线观看| 亚洲精品xxx| 青青久久av北条麻妃海外网| 91日韩在线播放| 国产精品亚洲自拍| 日日狠狠久久偷偷四色综合免费| 亚洲性69xxxbbb| 一区二区三区四区在线观看视频| 欧美日韩电影在线观看| 久久久中精品2020中文| 国产精品视频公开费视频| 欧美极品xxxx| 国产原创欧美精品| 国产一区欧美二区三区| 精品五月天久久| 成人激情视频网| 亚洲精品自拍偷拍| 欧美性猛交丰臀xxxxx网站| 亚洲欧洲日产国码av系列天堂| 亚洲综合中文字幕在线| 国产精品视频男人的天堂| 久久天天躁狠狠躁夜夜爽蜜月| 日韩中文字幕网址| 一本色道久久88综合日韩精品| 久久精品国产视频| 青青久久av北条麻妃黑人| 91av在线免费观看| 亚洲欧洲视频在线| 亚洲石原莉奈一区二区在线观看| 久久精品国产清自在天天线| 国产精品免费久久久久影院| 日韩在线视频线视频免费网站| 国产不卡一区二区在线播放| 欧美高清无遮挡| 欧美激情免费视频| 国产在线拍偷自揄拍精品| 亚洲系列中文字幕| 色偷偷88888欧美精品久久久| 亚洲美女av网站| 国产成人精品视频在线观看| 福利二区91精品bt7086| 欧美精品久久久久久久久| 日本欧美黄网站| 日韩av手机在线观看| 国色天香2019中文字幕在线观看| 国产精品欧美日韩久久| 色综合五月天导航| 91av福利视频| 成人免费看黄网站| 久久精品国产视频| www亚洲精品| 久久综合亚洲社区| 日韩av电影手机在线| 性欧美xxxx视频在线观看| 91精品久久久久久久久青青| 欧美成人性色生活仑片| 精品福利在线视频| 国产亚洲成av人片在线观看桃| 国产一区二区三区在线播放免费观看| 成人亚洲欧美一区二区三区| 国产精品久久久久秋霞鲁丝| 欧美成人精品在线| 青青草99啪国产免费| 久久国产视频网站| 九九热视频这里只有精品| 国产欧美在线观看| 国产69精品久久久久久| 欧美日韩美女视频| 97国产suv精品一区二区62| 精品国产乱码久久久久久天美| 国产日本欧美一区| 欧美性xxxx在线播放| 亚洲午夜久久久久久久| 日本高清+成人网在线观看| 日韩av日韩在线观看| 亚洲人成网站999久久久综合| 亚洲免费电影一区| 98精品在线视频| 97人人做人人爱| 97色伦亚洲国产| 狠狠躁天天躁日日躁欧美| 91视频88av| 日韩欧美在线视频日韩欧美在线视频| 狠狠躁夜夜躁人人爽超碰91| 一区二区av在线| 最近2019年手机中文字幕| 久久av红桃一区二区小说| 国产精品久久久精品| 日韩综合视频在线观看| 91av视频导航| 中文字幕精品在线视频| 日韩成人av在线播放| 国产一区二区三区日韩欧美| 久久亚洲精品网站| 精品国产老师黑色丝袜高跟鞋| 精品福利在线观看| 亚洲高清色综合|