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

emlog gid自增断号自动插入

作者:星知苑 时间:2014-09-28 09:43:34

emlog文章连接使用gid自增号作为文章的ID,但是由于后台有删除文章的功能,一旦删除文章那么gid自增就会出现断号。

其实断号问题解决很方便,只要在添加文章的时候判断gid之前的有没有断号问题,有的话直接插入,没有的话自增。

我这里的解决方法是这样的,我把gid自增段顺序读取作为值写入数组,自增段是从1开始的,但是数组键值是0开始的,那么先把数组($gidarr[0]='0')赋值掉,然后把$gidarr[]=gid,然后只要发现$gidarr键和键值不等就是断号了。

找到我们的addlog添加文章和页面函数。路径在include/model/log_model.php。

原始代码:[break]

 

	/**
	 * 添加文章、页面
	 *
	 * @param array $logData
	 * @return int
	 */
	function addlog($logData) {
		$kItem = array();
		$dItem = array();
		foreach ($logData as $key => $data) {
			$kItem[] = $key;
			$dItem[] = $data;
		}
		$field = implode(',', $kItem);
		$values = "'" . implode("','", $dItem) . "'";
		$this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
		$logid = $this->db->insert_id();
		return $logid;
	}
修改为:
function addlog($logData) {
	$kItem = array();
	$dItem = array();
	foreach ($logData as $key => $data) {
		$kItem[] = $key;
		$dItem[] = $data;
	}
	$field = implode(',', $kItem);
	$values = "'" . implode("','", $dItem) . "'";
	$gidarr[0]='0';
	$res = $this->db->query("SELECT gid From  " . DB_PREFIX . "blog ORDER BY gid ASC");
	while ($row = $this->db->fetch_array($res)) {
		$gidarr[] = $row['gid'];
	}
	foreach($gidarr as $key=>$val){
		if($key!=$val){
			$field = 'gid,'.$field;
			$values = "'".$key."',".$values;
			break;
		}
	}
	$this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
	$logid = $this->db->insert_id();
	return $logid;
}

通过改变是否需要插入语句添加gid和gid值,来自增或者插入。

假如你有多篇文章删除,添加一篇的话,只有从开始的断号,慢慢补全断号。

良心推荐

万国觉醒攻略大全
万国觉醒是现在很多人都在玩的游戏,风靡全球,给玩家带来非常不错的游戏体验,也出现一大批的全球大佬玩家,但对于零氪金的玩家来说,是需要点攻略才能让你快速上手的,并且在各种活动获得更多的福利,小编为大家带来的相关的攻略合集,供你参考上分。

相关资讯