Emlog gid 文章 ID 自增断号自动插入

  • A+
所属分类:Emlog

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

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

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

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

原始代码:

  1. /**
  2. * 添加文章、页面
  3. *
  4. * @param array $logData
  5. * @return int
  6. */
  7. function addlog($logData) {
  8. $kItem = array();
  9. $dItem = array();
  10. foreach ($logData as $key => $data) {
  11. $kItem[] = $key;
  12. $dItem[] = $data;
  13. }
  14. $field = implode(',', $kItem);
  15. $values = "'" . implode("','"$dItem) . "'";
  16. $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
  17. $logid = $this->db->insert_id();
  18. return $logid;
  19. }

修改为:

  1. /**
  2. * 添加文章、页面
  3. *
  4. * @param array $logData
  5. * @return int
  6. */
  7. function addlog($logData) {
  8. $kItem = array();
  9. $dItem = array();
  10. foreach ($logData as $key => $data) {
  11. $kItem[] = $key;
  12. $dItem[] = $data;
  13. }
  14. $field = implode(',', $kItem);
  15. $values = "'" . implode("','"$dItem) . "'";
  16. $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
  17. $logid = $this->db->insert_id();
  18. return $logid;
  19. }

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

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

 

历史上的今天:

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: