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中的- /**
* @* h5 x: K1 M6 n* j; `' g7 F* X - * 添加文章、页面
2 Q( W/ V, v6 t2 x2 a% A# F - *+ U9 m2 I0 {% x1 W* `
- * @param array $logData, Q4 m3 d1 ?, v$ F$ S( a
- * @return int
" q, q/ S7 ]2 S - */
. }) y0 O& E" I9 V/ S) y - function addlog($logData) {
1 v5 g" l( S, _, {0 Q - $kItem = array();
) q; i' g. o* x6 ` ]- G - $dItem = array();
' J- B# j# E {8 ~2 _: }0 p - foreach ($logData as $key => $data) {
/ v9 d3 A9 o" j1 }) _1 t( S - $kItem[] = $key;1 r7 I/ e, y$ l0 T* _
- $dItem[] = $data;/ h. U" O( E6 T D: w: `+ ~
- }+ y" c4 m, s+ E
- $field = implode(',', $kItem);2 Z' @# x9 S, n8 \, s
- $values = "'" . implode("','", $dItem) . "'";
9 O! Z1 l0 @$ O2 N0 y6 ]* d9 x - $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");$ H8 Z7 f0 g5 A c
- $logid = $this->db->insert_id();4 i. ]! ?4 c$ q ~7 `
- return $logid;
) d- o8 y1 b! u# k - }
复制代码 修改为:- function addlog($logData) {6 L- f: @2 j$ G$ q, R1 T" L8 V
- $kItem = array();
% P$ L5 a' V4 P7 b* L+ l2 n - $dItem = array();5 C/ c7 a' ]) J$ L5 z
- foreach ($logData as $key => $data) {! A' M: a- ]7 ^) {7 R' r
- $kItem[] = $key;) a4 G# F; Q q! F% @/ q
- $dItem[] = $data;% H# t7 P, A0 `. t( p& ~3 }
- }
# ^6 c$ L* Q+ d1 h" E# G6 O$ m* u F7 T- p - $field = implode(',', $kItem);
. M% z. D$ L, K. {5 z- a - $values = "'" . implode("','", $dItem) . "'";6 U1 C' Y( d8 \, C8 W) W' J- _' F) e# _
- $gidarr[0]='0';
7 k5 }2 H8 X5 I& M2 ~ - $res = $this->db->query("SELECT gid From " . DB_PREFIX . "blog ORDER BY gid ASC");8 Y* M. q& {& I) v( f" j# l/ G
- while ($row = $this->db->fetch_array($res)) {
9 T& H; I! d& \/ P3 z4 [ - $gidarr[] = $row['gid'];* F6 h1 |0 Y+ b. L9 g
- }8 z% O) l, F4 F, ]! y/ p$ k0 Z. f/ q
- foreach($gidarr as $key=>$val){$ d4 G3 ]" X8 o# R) @4 q% ^
- if($key!=$val){
, _# l( O( Y: Z5 q - $field = 'gid,'.$field;% Y- f. a, G4 x
- $values = "'".$key."',".$values;. \ D+ X# } b' R& X( F0 r [3 X
- break;
( y* Q2 x/ t- N - }4 ~, K" n; q: O& u% S
- }
6 h0 w; e. Y0 x4 j/ z4 J9 J# Z; u - $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)");
9 D8 C& ]" G7 `8 U3 v6 \ - $logid = $this->db->insert_id();
. r6 Y% A* B# u - return $logid;+ v3 p0 T- z: P- s' R
- }
复制代码 通过改变是否需要插入语句添加gid和gid值,来自增或者插入。 假如你有多篇文章删除,添加一篇的话,只有从开始的断号,慢慢补全断号。 & n; E3 Q6 [0 }$ F% w# X' |1 C, C& e
舍力提醒你,在更改文件时请先做好备份。 Q4 {( O# [8 F0 z' o8 d7 y' e: A
|