剛剛花了些時間看了一下
我猜發生原因大概是這樣\r
代碼: 選擇全部
$sql = ($mode != "editpost") ? "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, post_username, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_sig) VALUES ($topic_id, $forum_id, " . $userdata['user_id'] . ", '$post_username', $current_time, '$user_ip', $bbcode_on, $html_on, $smilies_on, $attach_sig)" : "UPDATE " . POSTS_TABLE . " SET post_username = '$post_username', enable_bbcode = $bbcode_on, enable_html = $html_on, enable_smilies = $smilies_on, enable_sig = $attach_sig" . $edited_sql . " WHERE post_id = $post_id";
if (!$db->sql_query($sql, BEGIN_TRANSACTION))
{
message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
}
if ($mode != 'editpost')
{
$post_id = $db->sql_nextid();
}
$sql = ($mode != 'editpost') ? "INSERT INTO " . POSTS_TEXT_TABLE . " (post_id, post_subject, bbcode_uid, post_text) VALUES ($post_id, '$post_subject', '$bbcode_uid', '$post_message')" : "UPDATE " . POSTS_TEXT_TABLE . " SET post_text = '$post_message', bbcode_uid = '$bbcode_uid', post_subject = '$post_subject' WHERE post_id = $post_id";
if (!$db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
}
就像天地一沙鷗說的一樣\r
當用戶發表文章時在POSTS_TABLE塞了資料進去\r
但是在POSTS_TEXT_TABLE出錯沒塞入資料,或者塞到一半主機shutdownd等等其他原因..
變成在後端重整也沒辦法更新文章數(因為是根據POSTS_TABLE來判斷文章數量)
解決方法可以用我下面方式
編輯includes/functions_admin.php
find
在下面加入\r
代碼: 選擇全部
$del_id="";
$sql = "SELECT post_id,topic_id FROM " . POSTS_TABLE . "
WHERE forum_id = $id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not get post ID', '', __LINE__, __FILE__, $sql);
}
while( $row = $db->sql_fetchrow($result) )
{
$sql = "SELECT post_id FROM " . POSTS_TEXT_TABLE . "
WHERE post_id = $row[post_id]";
if ( !($result1 = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Could not get post_txt ID", '', __LINE__, __FILE__, $sql);
}
if (!$row1 = $db->sql_fetchrow($result1))
{
$del_id.=",".$row[post_id];
}
}
$del_id=substr($del_id,1,strlen($del_id));
$sql="delete from ".POSTS_TABLE." where post_id in(".$del_id.")";
$db->sql_query($sql);
unset($del_id);
修改完畢save / close
然後進入管理介面,在版面管理的地方在做一次"重整對應資料"!!
就可以把實際文章數跟統計數字修正完畢\r
ps.
這段程式碼會把你所選擇的版面,重頭到尾check過一次\r
假如你的版面有1萬篇文章,會跑1萬次迴圈..
所以在使用時請自行評估