手机游戏
经典单机
角色扮演
休闲益智
动作冒险
射击枪战
赛车竞速
模拟经营
解密闯关
策略战争
手机软件
时尚购物
体育运动
资讯阅读
教育学习
摄影摄像
生活服务
效率办公
聊天社交
视频盒子
其它软件
新闻资讯
游戏攻略
软件教程
游戏问答
软件资讯
软件技术
叨叨念念
网站技术
技术问答
软件教程
资源资料
原创作品
代码学习
网页设计
网络技术
合集
合集
游戏合集
软件合集
资讯合集
视频合集
首页 > 原创作品 > 原创作品

emlog修改标签有可能会造成重复标签的bug以及修复

作者:星知苑 时间:2013-05-02 12:13:02

这个应该算是不是bug的bug,是设计上的问题。

tag标签,这个很多人用到的吧。后台直接点击标签会跳到修改标签名称的界面,好了问题来了。

假如我有n多的标签,其中有2个标签,一个是“blog”,另一个是“博客”,可能由于我心血来潮(^_^),看到“博客”标签想修改为“blog”,当然由于标签太多我可能不会注意到已经有了“blog”,直接进行修改了。修改后问题来了,首先你可以看到2个“blog”标签,然后就是新写的文章如果手动添加“blog”的标签,那么会同时把文章ID写入数据库中标签名称为“blog”的标签中,这个时候查看日志会有2个“blog”的标签。[break]

点击查看原图

 

其实这个你可以自己修改的,在tag_model.php中(include/model文件夹中):

1、查找“updateTagName”,找到updateTagName函数,这个主要是控制修改标签名字后,更新数据库的。这里面根本没有判断tagname和数据库中的tagname有没有重名。

 

	function updateTagName($tagId, $tagName) {
		$sql="UPDATE ".DB_PREFIX."tag SET tagname='$tagName' WHERE tid=$tagId";
		$this->db->query($sql);
	}

 

2、判断标签名字有没有重复,没有重复修改名字,重复合并标签。

 

	function updateTagName($tagId, $tagName) {
			$result = $this->db->once_fetch_array("SELECT gid FROM ".DB_PREFIX."tag WHERE tagname='$tagName'");//找修改的标签名字和数据库中有没有重复
			if (empty($result)) {
				$sql="UPDATE ".DB_PREFIX."tag SET tagname='$tagName' WHERE tid=$tagId";//没有重复直接修改名字。
				$this->db->query($sql);
			}else {
				$row = $this->db->once_fetch_array("SELECT gid FROM ".DB_PREFIX."tag WHERE tid='$tagId'");//有重复查找要修改的标签包含的文章
				$taggid = trim($result['gid'], ",").','.trim($row['gid'], ",");//连接所有的文章ID
				$taggid= implode(',',array_unique(explode(',', $taggid)));//去掉重复文章ID
				$query="UPDATE ".DB_PREFIX."tag SET gid=',".$taggid.",' WHERE tagname='$tagName'";//文章ID写入已有标签的数据库
				$this->db->query($query);
				$this->db->query("DELETE FROM ".DB_PREFIX."tag where tid=$tagId");//删掉修改ID的标签(这个时候数据已经放入重复名称的那个标签中了)
			}
	}

 

良心推荐

适合儿童孩子玩的手机益智游戏
  • 2048经典手机版
  • 2048经典下载安装
  • 快乐小鸡游戏免费下载
  • 恐龙机甲变形记下载
  • 女孩爱化妆游戏安卓版
  • 宝宝爱拼图游戏下载
目前随着社会的不断的进步,人类的基因也是异常的强大,很多的小朋友都是非常的聪明,条件好的家庭还可以让孩子在手机上玩各种益智儿童游戏,这样的游戏是很多的,不仅是可以发挥孩子的聪明才智提高智慧,还可以在游戏中得到很好的学习锻炼的各种机会和方式,小编这边也是整理的了一些比较适合四岁到十岁的一些益智的儿童游戏。

相关资讯