当前位置:首页 » 好文分享 » 详情

Emlog gid自动插入断号id的方法

如果大家使用过WordPress建博客一定会知道文章ID是不连续的,网上有很多解决方法的,这里就不多说了,因为本博客是使用Emlog博客程序的,最近看到有许多朋友提到emlog由于后台删除文章那么gid自增就会出现断号了,其实断号问题解决很方便,只要在添加文章的时候判断gid之前的有没有断号问题,有的话直接插入,没有的话自增。

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

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

原始代码:
/**
	 * 添加文章、页面
	 *
	 * @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值,来自增或者插入。 假如你有多篇文章删除,添加一篇的话,只有从开始的断号,慢慢补全断号。

此段代码已经过我的测试,应该是没有问题的,但是由于代码涉及到更改程序內核,所以李明仍然建议你在使用这段代码之前先好备份,然后再测试。
打赏
X
打赏方式:
  • 支付宝
  • 微信
  • QQ红包

打开支付宝扫一扫
日期:2015年01月04日 10:50:59 星期日   分类:好文分享   浏览(57599)   评论(16)
本文地址:https://www.blogs.hk/post-412.html   [百度已收录]
声明:本页信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!

留言咨询

自动获取QQ

昵称

邮箱

网址

11楼、迷糊小侠 [回复该留言]
2015-01-14 13:12
我用的分类目录加别名,都没注意到这些
10楼、森灭 [回复该留言]
2015-01-07 12:46
很不错的样子,可是我不用emlog
9楼、小劣博客 [回复该留言]
2015-01-06 23:19
学习了,其实对我来说断号好像没什么意义,不是强迫症一般都不会在乎吧
8楼、灰常记忆 [回复该留言]
2015-01-05 15:52
懒得折腾这个
7楼、免费部落 [回复该留言]
2015-01-05 08:43
没有用过Emlog的票过!
6楼、蓝色悠悠 [回复该留言]
2015-01-04 21:27
那要是有草稿怎么办呢?也占用一个GID?要是隔了很久才完稿而修改了发布时间那这篇文章会排列在哪个位置?按时间?还是按GID?请教下~
李明 [回复该留言]
2015-01-04 21:37
@蓝色悠悠:草稿也是一个GID的,文章id是包括草稿的id,不会重复的。
蓝色悠悠 [回复该留言]
2015-01-04 22:43
@李明:俺的草稿箱里有十多篇,都两年了,这要是想完稿发布的话肯定得修改发布时间了,那么GID是不能变了哦……
李明 [回复该留言]
2015-01-05 06:54
@蓝色悠悠:我的草稿箱有30多篇沒法完成的文章,在发布文章时只要修改发布时间就可以了,GID是不变的。
5楼、瑾瑜 [回复该留言]
2015-01-04 19:02
所以不用id作为链接,看着别扭。
4楼、WingsBlog [回复该留言]
2015-01-04 15:54
这么改好像很容易出问题
李明 [回复该留言]
2015-01-05 08:55
@WingsBlog:建议在使用这段代码之前先好备份,然后再测试。
3楼、传递分享网 [回复该留言]
2015-01-04 15:02
倒没注意到这些,不删除文章应该就没有关系吧?
李明 [回复该留言]
2015-01-05 08:59
@传递分享网:之前因使用了一个投稿插件引来很多无聊投稿,我一下子在后台删除了很多文章,所以要补回被删的文章id。
2楼、王语双 [回复该留言]
2015-01-04 13:57
这功能可以有。
不过,我基本上文章发了后不更改,也不随便删除的。
1楼、姜辰 [回复该留言]
2015-01-04 12:42
来啦,已经查收!

      Copyright © 2024 博客之家 版权所有  
      關於本站免責聲明sitemap新站登錄