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

感谢您访问小篮博客”,本站专注活动分享,SEO技术,网站源码,绿色软件等免费资源分享希望大家能够多多支持哦!喜欢本站的朋友可以把本站添加到书签或记住网址,本站网址:www.nswin.cc, 站长 QQ 123326923
  • 内容
  • 相关

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

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

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

找到我们的“addlog.php”添加文章和页面函数。路径在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值,来自增或者插入。 

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

友情提示,在更改文件时请先做好备份!


本文标签:

版权声明:若无特殊注明,本文皆为《小蓝博客》网络转载而来。并不代表本站立场。

文章标题:Emlog 文章gid自动补全断号id的方法

本文链接:https://www.nswin.cc/286.html

收录状态:[百度已收录]

二维码加载中……

发表评论

电子邮件地址不会被公开。 必填项已用*标注

允许邮件通知