Emlog gid自动补全断号id的方法-站长杂谈下载

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

来自版块: 站长杂谈发表于: 2015-8-17 13:03:27
30108
0
如本资源下载地址失效,请点击此处进行反馈
开通本站Svip会员,全站资源免费下
    Emlog文章连接使用gid自增号作为文章的ID,但是由于后台有删除文章的功能,一旦删除文章那么gid自增就会出现断号。
3 ~; S, U  o/ k( F    其实断号问题解决很方便,只要在添加文章的时候判断gid之前的有没有断号问题,有的话直接插入,没有的话自增。
" W0 ^! }" F1 l    我这里的解决方法是这样的,我把gid自增段顺序读取作为值写入数组,自增段是从1开始的,但是数组键值是0开始的,那么先把数组($gidarr[0]='0')赋值掉,然后把$gidarr[]=gid,然后只要发现$gidarr键和键值不等就是断号了。
7 S# w+ H5 ]2 z    找到我们的addlog添加文章和页面函数。路径在include/model/log_model.php中的
  1.         /**
    * @* h5 x: K1 M6 n* j; `' g7 F* X
  2.          * 添加文章、页面
    2 Q( W/ V, v6 t2 x2 a% A# F
  3.          *+ U9 m2 I0 {% x1 W* `
  4.          * @param array $logData, Q4 m3 d1 ?, v$ F$ S( a
  5.          * @return int
    " q, q/ S7 ]2 S
  6.          */
    . }) y0 O& E" I9 V/ S) y
  7.         function addlog($logData) {
    1 v5 g" l( S, _, {0 Q
  8.                 $kItem = array();
    ) q; i' g. o* x6 `  ]- G
  9.                 $dItem = array();
    ' J- B# j# E  {8 ~2 _: }0 p
  10.                 foreach ($logData as $key => $data) {
    / v9 d3 A9 o" j1 }) _1 t( S
  11.                         $kItem[] = $key;1 r7 I/ e, y$ l0 T* _
  12.                         $dItem[] = $data;/ h. U" O( E6 T  D: w: `+ ~
  13.                 }+ y" c4 m, s+ E
  14.                 $field = implode(',', $kItem);2 Z' @# x9 S, n8 \, s
  15.                 $values = "'" . implode("','", $dItem) . "'";
    9 O! Z1 l0 @$ O2 N0 y6 ]* d9 x
  16.                 $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");$ H8 Z7 f0 g5 A  c
  17.                 $logid = $this->db->insert_id();4 i. ]! ?4 c$ q  ~7 `
  18.                 return $logid;
    ) d- o8 y1 b! u# k
  19.         }
复制代码
修改为:
  1. function addlog($logData) {6 L- f: @2 j$ G$ q, R1 T" L8 V
  2.         $kItem = array();
    % P$ L5 a' V4 P7 b* L+ l2 n
  3.         $dItem = array();5 C/ c7 a' ]) J$ L5 z
  4.         foreach ($logData as $key => $data) {! A' M: a- ]7 ^) {7 R' r
  5.                 $kItem[] = $key;) a4 G# F; Q  q! F% @/ q
  6.                 $dItem[] = $data;% H# t7 P, A0 `. t( p& ~3 }
  7.         }
    # ^6 c$ L* Q+ d1 h" E# G6 O$ m* u  F7 T- p
  8.         $field = implode(',', $kItem);
    . M% z. D$ L, K. {5 z- a
  9.         $values = "'" . implode("','", $dItem) . "'";6 U1 C' Y( d8 \, C8 W) W' J- _' F) e# _
  10.         $gidarr[0]='0';
    7 k5 }2 H8 X5 I& M2 ~
  11.         $res = $this->db->query("SELECT gid From  " . DB_PREFIX . "blog ORDER BY gid ASC");8 Y* M. q& {& I) v( f" j# l/ G
  12.         while ($row = $this->db->fetch_array($res)) {
    9 T& H; I! d& \/ P3 z4 [
  13.                 $gidarr[] = $row['gid'];* F6 h1 |0 Y+ b. L9 g
  14.         }8 z% O) l, F4 F, ]! y/ p$ k0 Z. f/ q
  15.         foreach($gidarr as $key=>$val){$ d4 G3 ]" X8 o# R) @4 q% ^
  16.                 if($key!=$val){
    , _# l( O( Y: Z5 q
  17.                         $field = 'gid,'.$field;% Y- f. a, G4 x
  18.                         $values = "'".$key."',".$values;. \  D+ X# }  b' R& X( F0 r  [3 X
  19.                         break;
    ( y* Q2 x/ t- N
  20.                 }4 ~, K" n; q: O& u% S
  21.         }
    6 h0 w; e. Y0 x4 j/ z4 J9 J# Z; u
  22.         $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
    9 D8 C& ]" G7 `8 U3 v6 \
  23.         $logid = $this->db->insert_id();
    . r6 Y% A* B# u
  24.         return $logid;+ v3 p0 T- z: P- s' R
  25. }
复制代码
    通过改变是否需要插入语句添加gid和gid值,来自增或者插入。 假如你有多篇文章删除,添加一篇的话,只有从开始的断号,慢慢补全断号。 & n; E3 Q6 [0 }$ F% w# X' |1 C, C& e
    舍力提醒你,在更改文件时请先做好备份。  Q4 {( O# [8 F0 z' o8 d7 y' e: A

全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部