<
首页 emlog教程 正文
  • 本文约1375字,阅读需7分钟
  • 1087
  • 0

EMLOG解决文章GID断号并自增断号ID的方法

摘要

使用EMLOG的站长想必都知道,由于EMLOG使用GID自增号作为文章ID,因此一旦删除文章就会断掉,那么有没有办法解决文章GID断号的问题呢。

使用EMLOG的站长想必都知道,由于EMLOG使用GID自增号作为文章ID,因此一旦删除文章就会断掉,那么有没有办法解决文章GID断号的问题呢?

实际上,对于EMLOG文章GID断号的问题解决起来并不难,只要在添加文章的时候进行简单的判断就可以了,判断当前GID之前有无断号问题,有断号就优先选择断号的文章ID,没有的话直接自增就可以了。

一、操作原理

将GID自增顺序读取作为值写入到数组中,自增段从1开始,但数组值从0开始,因此需要先将数组($gidarr[0]='0')赋值掉,然后把$gidarr[]=gid,只要发现$gidarr键和键值不等,就是存在断号的情况了。

二、操作方法

找到include/model/log_model.php文件,替换相关代码

1、原始代码

/**
* 添加文章、页面
*
* @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;
}

2、替换代码

/**
* 添加文章、页面
*
* @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;
}

三、注意事项

1、使用本教程前,如果确认使用的是EMLOG 5.3.1版本且没有对源代码进行过修改,可以下载博客志改好的文件直接覆盖同名文件

EMLOG文章GID断号自增大小:4KB | 密码:无 | 来源:本站下载
标签:emlog教程
评论
更换验证码
友情链接