Emlog gid自动补全断号id的方法

Emlog文章连接使用gid自增号作为文章的ID,但是由于后台有删除文章的功能,一旦删除文章那么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;
}

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

版权所有:《博客之家
文章标题:《Emlog gid自动补全断号id的方法
除非注明,文章均为 《博客之家》 原创
转载请注明本文短网址:http://bk.likinming.com/post-409.html  [生成短网址]

日期:2017年06月03日 星期六   分类:好文分享   浏览(2819)

留言/评论:◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

填写好QQ号码,任点空白处自动获取

昵称

邮箱

网址

网站提交

  • 名称:
  • 网址:
Copyright © 2012 - 2017 by 李明关于本站免责声明本站下载站点地图sitemap广告联系