- A+
所属分类:Emlog
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) . "'";
- $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
- $logid = $this->db->insert_id();
- return $logid;
- }
通过改变是否需要插入语句添加 gid 和 gid 值,来自增或者插入。
假如你有多篇文章删除,添加一篇的话,只有从开始的断号,慢慢补全断号。