Emlog文章连接使用gid自增号作为文章的ID,但是由于后台有删除文章的功能,一旦删除文章那么gid自增就会出现断号。
7 N; O; _% S3 m, s4 b+ X$ d" F 其实断号问题解决很方便,只要在添加文章的时候判断gid之前的有没有断号问题,有的话直接插入,没有的话自增。
; O# C) s* ^) G+ m7 W4 a( V 我这里的解决方法是这样的,我把gid自增段顺序读取作为值写入数组,自增段是从1开始的,但是数组键值是0开始的,那么先把数组($gidarr[0]='0')赋值掉,然后把$gidarr[]=gid,然后只要发现$gidarr键和键值不等就是断号了。& \8 n: d1 {4 P, ?$ V7 V
找到我们的addlog添加文章和页面函数。路径在include/model/log_model.php中的- /**) f" O" a) s$ `' |2 ?4 {! k+ }
- * 添加文章、页面' \9 Y0 K9 d) j: o0 Z5 q) c( s
- *1 e+ }/ C- N+ C* w# S. e. o9 h
- * @param array $logData
7 t* z4 B9 C _7 v - * @return int
- O$ @7 C* v3 C - */& z& ]+ I- z% y
- function addlog($logData) {- k+ E3 L! J. i$ N0 d! u
- $kItem = array();# t- r/ G4 Q' a8 d8 N, I, {
- $dItem = array();. i' S1 ^# |0 v' ?, T1 M- g9 _; X" X
- foreach ($logData as $key => $data) {
; @- a, H/ w& U' K3 E - $kItem[] = $key;* N3 v3 [. k. `* z. Q0 A
- $dItem[] = $data;3 @; ?7 E4 R; B. r! @% C
- }
0 ~( d5 c" r* k. P& W2 R - $field = implode(',', $kItem);( C. U) `( H/ q# ]
- $values = "'" . implode("','", $dItem) . "'";
; j: P, V4 Z* N' d, j1 F# y; g4 w% u - $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
8 f" P- p5 I4 L1 N" C. S ] - $logid = $this->db->insert_id();' v) }; e4 a4 i$ ]7 z: r1 F
- return $logid;/ {" K# u: `! z" K4 d5 t: U* u
- }
复制代码 修改为:- function addlog($logData) {! W( t" I- Z: W6 E- o" J
- $kItem = array();
6 t0 F1 Y/ O( Q/ S. y# { - $dItem = array();
% E2 p1 M9 s. x' r5 ` - foreach ($logData as $key => $data) {
( O: ?5 d* x% |5 ~* \ - $kItem[] = $key;$ R, P" A0 S% y
- $dItem[] = $data;
% P) K1 N+ U3 H7 C* x" {% x - }
( L4 \2 a: Y7 c- p6 b - $field = implode(',', $kItem);
$ h" g2 t8 i' A Y( o - $values = "'" . implode("','", $dItem) . "'";
. x" _* P" G5 t- o - $gidarr[0]='0';
2 [/ C! E% D3 N9 r+ J& m - $res = $this->db->query("SELECT gid From " . DB_PREFIX . "blog ORDER BY gid ASC");
( |0 j$ R/ d. O0 p! [ - while ($row = $this->db->fetch_array($res)) {
8 F7 F8 _8 P+ i( s - $gidarr[] = $row['gid'];
. s- I4 W# H! ~/ L8 z) V2 V$ j - }
, [! t) S7 Q- X) q- |* u - foreach($gidarr as $key=>$val){& r# ?4 O# M" r! X! Y
- if($key!=$val){, h1 M! m: q, Y% ]
- $field = 'gid,'.$field;* l& l7 H3 p/ f0 |' i. Y
- $values = "'".$key."',".$values;
" }! J" C" W& ?* O; i - break;" @7 C- j0 \7 T% M0 i/ a
- }, j6 B* _( J; `+ u! N
- }
8 x% y9 w3 I/ c$ f7 B9 w) j - $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
5 t' A8 I+ @5 A - $logid = $this->db->insert_id();1 Q$ D! I9 f% e0 D" D- s
- return $logid;: z6 P2 U5 U& `0 v) K/ d
- }
复制代码 通过改变是否需要插入语句添加gid和gid值,来自增或者插入。 假如你有多篇文章删除,添加一篇的话,只有从开始的断号,慢慢补全断号。
9 t/ M( d& P$ Y3 {; W# }4 ^0 e# V 舍力提醒你,在更改文件时请先做好备份。
) H* |3 c \( j+ z1 l+ `8 g |