emlog 解決文章gid斷號問題

emlog文章連接使用gid自增號作為文章的ID,但是由于后臺有刪除文章的功能,一旦刪除文章那么gid自增就會出現斷號。 其實斷號問題解決很方便,只要在添加文章的時候判斷gid之前的有沒有斷號問題,有的話直接插入,沒有的話自增。 我這里的解決方法是這樣的,我把gid自增段順序讀取作為值寫入數組,自增段是從1開始的,但是數組鍵值是0開始的,那么先把數組($gidarr[0]='0')賦值掉,然后把$gidarr[]=gid,然后只要發現$gidarr鍵和鍵值不等就是斷號了。 找到我們的addlog添加文章和頁面函數。路徑在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;
}


改后代碼:

/**
* 添加文章、頁面
*
* @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) . "'";
$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;
}

原文http://beikeit.com/post-680.html

轉載請注明出處 AE博客|墨淵 ? emlog 解決文章gid斷號問題

發表評論

路人甲

網友評論(0)