Reply
SQL question -- finding the last post id and setting it to..
Old 08-15-2004, 11:59 PM SQL question -- finding the last post id and setting it to..
Junior Talker

Posts: 2
a variable.

I want to find the topic_last_post_id in the viewforum. I am kind of last, can somebody help me? Look at the very end:

PHP Code:
//-- mod : categories hierarchy -------------------------------------------------------------------- 
/*************************************************************************** 
 *                               viewforum.php 
 *                            ------------------- 
 *   begin                : Saturday, Feb 13, 2001 
 *   copyright            : (C) 2001 The phpBB Group 
 *   email                : support@phpbb.com 
 * 
 *   $Id: viewforum.php,v 1.139.2.12 2004/03/13 15:08:23 acydburn Exp $ 
 * 
 * 
 ***************************************************************************/ 

/*************************************************************************** 
 * 
 *   This program is free software; you can redistribute it and/or modify 
 *   it under the terms of the GNU General Public License as published by 
 *   the Free Software Foundation; either version 2 of the License, or 
 *   (at your option) any later version. 
 * 
 ***************************************************************************/ 

define('IN_PHPBB'true); 
$phpbb_root_path './'
include(
$phpbb_root_path 'extension.inc'); 
include(
$phpbb_root_path 'common.'.$phpEx); 

// 
// Start initial var setup 
// 
if ( isset($HTTP_GET_VARS[POST_FORUM_URL]) || isset($HTTP_POST_VARS[POST_FORUM_URL]) ) 

   
$forum_id = ( isset($HTTP_GET_VARS[POST_FORUM_URL]) ) ? intval($HTTP_GET_VARS[POST_FORUM_URL]) : intval($HTTP_POST_VARS[POST_FORUM_URL]); 

else if ( isset(
$HTTP_GET_VARS['forum'])) 

   
$forum_id intval($HTTP_GET_VARS['forum']); 

else 

   
$forum_id ''


$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0

if ( isset(
$HTTP_GET_VARS['mark']) || isset($HTTP_POST_VARS['mark']) ) 

   
$mark_read = (isset($HTTP_POST_VARS['mark'])) ? $HTTP_POST_VARS['mark'] : $HTTP_GET_VARS['mark']; 

else 

   
$mark_read ''

// 
// End initial var setup 
// 

// 
// Check if the user has actually sent a forum ID with his/her request 
// If not give them a nice error page. 
// 
//-- mod : categories hierarchy -------------------------------------------------------------------- 
//-- deleted 
// if ( !empty($forum_id) ) 
// { 
//   $sql = "SELECT * 
//      FROM " . FORUMS_TABLE . " 
//      WHERE forum_id = $forum_id"; 
//   if ( !($result = $db->sql_query($sql)) ) 
//   { 
//      message_die(GENERAL_ERROR, 'Could not obtain forums information', '', __LINE__, __FILE__, $sql); 
//   } 
// } 
// else 
// { 
//   message_die(GENERAL_MESSAGE, 'Forum_not_exist'); 
// } 
// 
// 
// If the query doesn't return any rows this isn't a valid forum. Inform 
// the user. 
// 
// if ( !($forum_row = $db->sql_fetchrow($result)) ) 
// { 
//   message_die(GENERAL_MESSAGE, 'Forum_not_exist'); 
// } 
//-- fin mod : categories hierarchy ---------------------------------------------------------------- 

// 
// Start session management 
// 
$userdata session_pagestart($user_ip$forum_id); 
init_userprefs($userdata); 
// 
// End session management 
// 

// 
// Start auth check 
// 
$is_auth = array(); 
//-- mod : categories hierarchy -------------------------------------------------------------------- 
//-- delete 
// $is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_row); 
//-- add 
$is_auth $tree['auth'][POST_FORUM_URL $forum_id]; 
//-- fin mod : categories hierarchy ---------------------------------------------------------------- 

if ( !$is_auth['auth_read'] || !$is_auth['auth_view'] ) 

   if ( !
$userdata['session_logged_in'] ) 
   { 
      
$redirect POST_FORUM_URL "=$forum_id" . ( ( isset($start) ) ? "&start=$start" '' ); 
      
redirect(append_sid("login.$phpEx?redirect=viewforum.$phpEx&$redirect"true)); 
   } 
   
// 
   // The user is not authed to read this forum ... 
   // 
   
$message = ( !$is_auth['auth_view'] ) ? $lang['Forum_not_exist'] : sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']); 

   
message_die(GENERAL_MESSAGE$message); 

// 
// End of auth check 
// 

// 
// Handle marking posts 
// 
if ( $mark_read == 'topics' 

   if ( 
$userdata['session_logged_in'] ) 
   { 
      
$sql "SELECT MAX(post_time) AS last_post 
         FROM " 
POSTS_TABLE 
         WHERE forum_id = $forum_id"

      if ( !(
$result $db->sql_query($sql)) ) 
      { 
         
message_die(GENERAL_ERROR'Could not obtain forums information'''__LINE____FILE__$sql); 
      } 

      if ( 
$row $db->sql_fetchrow($result) ) 
      { 
         
$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array(); 
         
$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array(); 

         if ( ( 
count($tracking_forums) + count($tracking_topics) ) >= 150 && empty($tracking_forums[$forum_id]) ) 
         { 
            
asort($tracking_forums); 
            unset(
$tracking_forums[key($tracking_forums)]); 
         } 

         if ( 
$row['last_post'] > $userdata['user_lastvisit'] ) 
         { 
            
$tracking_forums[$forum_id] = time(); 

            
setcookie($board_config['cookie_name'] . '_f'serialize($tracking_forums), 0$board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']); 
         } 
      } 

      
$template->assign_vars(array( 
         
'META' => '<meta http-equiv="refresh" content="3;url=' append_sid("viewforum.$phpEx?" POST_FORUM_URL "=$forum_id") . '">'
      ); 
   } 

   
$message $lang['Topics_marked_read'] . '<br /><br />' sprintf($lang['Click_return_forum'], '<a href="' append_sid("viewforum.$phpEx?" POST_FORUM_URL "=$forum_id") . '">''</a> '); 
   
message_die(GENERAL_MESSAGE$message); 

// 
// End handle marking posts 
// 

$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : ''
$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : ''

// 
// Do the forum Prune 
// 
if ( $is_auth['auth_mod'] && $board_config['prune_enable'] ) 

   if ( 
$forum_row['prune_next'] < time() && $forum_row['prune_enable'] ) 
   { 
      include(
$phpbb_root_path 'includes/prune.'.$phpEx); 
      require(
$phpbb_root_path 'includes/functions_admin.'.$phpEx); 
      
auto_prune($forum_id); 
   } 

// 
// End of forum prune 
// 

// 
// Obtain list of moderators of each forum 
// First users, then groups ... broken into two queries 
// 
//-- mod : categories hierarchy -------------------------------------------------------------------- 
//-- delete 
// $sql = "SELECT u.user_id, u.username 
//   FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g, " . USERS_TABLE . " u 
//   WHERE aa.forum_id = $forum_id 
//      AND aa.auth_mod = " . TRUE . " 
//      AND g.group_single_user = 1 
//      AND ug.group_id = aa.group_id 
//      AND g.group_id = aa.group_id 
//      AND u.user_id = ug.user_id 
//   GROUP BY u.user_id, u.username  
//   ORDER BY u.user_id"; 
// if ( !($result = $db->sql_query($sql)) ) 
// { 
//   message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql); 
// } 
// 
// $moderators = array(); 
// while( $row = $db->sql_fetchrow($result) ) 
// { 
//   $moderators[] = '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=" . $row['user_id']) . '">' . $row['username'] . '</a>'; 
// } 
// 
// $sql = "SELECT g.group_id, g.group_name 
//   FROM " . AUTH_ACCESS_TABLE . " aa, " . USER_GROUP_TABLE . " ug, " . GROUPS_TABLE . " g 
//   WHERE aa.forum_id = $forum_id 
//      AND aa.auth_mod = " . TRUE . " 
//      AND g.group_single_user = 0 
//      AND g.group_type <> ". GROUP_HIDDEN ." 
//      AND ug.group_id = aa.group_id 
//      AND g.group_id = aa.group_id 
//   GROUP BY g.group_id, g.group_name  
//   ORDER BY g.group_id"; 
// if ( !($result = $db->sql_query($sql)) ) 
// { 
//   message_die(GENERAL_ERROR, 'Could not query forum moderator information', '', __LINE__, __FILE__, $sql); 
// } 
// 
// while( $row = $db->sql_fetchrow($result) ) 
// { 
//   $moderators[] = '<a href="' . append_sid("groupcp.$phpEx?" . POST_GROUPS_URL . "=" . $row['group_id']) . '">' . $row['group_name'] . '</a>'; 
// } 
//-- add 
// moderators list 
$moderators = array(); 
$idx $tree['keys'][ POST_FORUM_URL $forum_id ]; 
for ( 
$i 0$i count($data['user_id']); $i++ ) 

   
$moderators[] = '<a href="' append_sid("./profile.$phpEx?mode=viewprofile&amp;" POST_USERS_URL "=" $tree['mods'][$idx]['user_id'][$i]) . '">' $tree['mods'][$idx]['username'][$i] . '</a>'

for ( 
$i 0$i count($data['group_id']); $i++ ) 

   
$moderators[] = '<a href="' append_sid("./groupcp.$phpEx?" POST_GROUPS_URL "=" $tree['mods'][$idx]['group_id'][$i]) . '">' $tree['mods'][$idx]['group_name'][$i] . '</a>'

//-- fin mod : categories hierarchy ---------------------------------------------------------------- 
    
$l_moderators = ( count($moderators) == ) ? $lang['Moderator'] : $lang['Moderators']; 
$forum_moderators = ( count($moderators) ) ? implode(', '$moderators) : $lang['None']; 
unset(
$moderators); 

// 
// Generate a 'Show topics in previous x days' select box. If the topicsdays var is sent 
// then get it's value, find the number of topics with dates newer than it (to properly 
// handle pagination) and alter the main query 
// 
$previous_days = array(017143090180364); 
$previous_days_text = array($lang['All_Topics'], $lang['1_Day'], $lang['7_Days'], $lang['2_Weeks'], $lang['1_Month'], $lang['3_Months'], $lang['6_Months'], $lang['1_Year']); 

if ( !empty(
$HTTP_POST_VARS['topicdays']) || !empty($HTTP_GET_VARS['topicdays']) ) 

   
$topic_days = ( !empty($HTTP_POST_VARS['topicdays']) ) ? intval($HTTP_POST_VARS['topicdays']) : intval($HTTP_GET_VARS['topicdays']); 
   
$min_topic_time time() - ($topic_days 86400); 

   
$sql "SELECT COUNT(t.topic_id) AS forum_topics 
      FROM " 
TOPICS_TABLE " t, " POSTS_TABLE " p 
      WHERE t.forum_id = $forum_id 
         AND p.post_id = t.topic_last_post_id 
         AND p.post_time >= $min_topic_time"


   if ( !(
$result $db->sql_query($sql)) ) 
   { 
      
message_die(GENERAL_ERROR'Could not obtain limited topics count information'''__LINE____FILE__$sql); 
   } 
   
$row $db->sql_fetchrow($result); 

   
$topics_count = ( $row['forum_topics'] ) ? $row['forum_topics'] : 1
   
$limit_topics_time "AND p.post_time >= $min_topic_time"

   if ( !empty(
$HTTP_POST_VARS['topicdays']) ) 
   { 
      
$start 0
   } 

else 

   
$topics_count = ( $forum_row['forum_topics'] ) ? $forum_row['forum_topics'] : 1

   
$limit_topics_time ''
   
$topic_days 0


$select_topic_days '<select name="topicdays">'
for(
$i 0$i count($previous_days); $i++) 

   
$selected = ($topic_days == $previous_days[$i]) ? ' selected="selected"' ''
   
$select_topic_days .= '<option value="' $previous_days[$i] . '"' $selected '>' $previous_days_text[$i] . '</option>'

$select_topic_days .= '</select>'


// 
// All announcement data, this keeps announcements 
// on each viewforum page ... 
// 
$sql "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_time, p.post_username 
   FROM " 
TOPICS_TABLE " t, " USERS_TABLE " u, " POSTS_TABLE " p, " USERS_TABLE " u2 
   WHERE t.forum_id = $forum_id 
      AND t.topic_poster = u.user_id 
      AND p.post_id = t.topic_last_post_id 
      AND p.poster_id = u2.user_id 
      AND t.topic_type = " 
POST_ANNOUNCE 
   ORDER BY t.topic_last_post_id DESC "

if ( !(
$result $db->sql_query($sql)) ) 

   
message_die(GENERAL_ERROR'Could not obtain topic information'''__LINE____FILE__$sql); 


$topic_rowset = array(); 
$total_announcements 0
while( 
$row $db->sql_fetchrow($result) ) 

   
$topic_rowset[] = $row
   
$total_announcements++; 


$db->sql_freeresult($result); 

// 
// Grab all the basic data (all topics except announcements) 
// for this forum 
// 
$sql "SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time 
   FROM " 
TOPICS_TABLE " t, " USERS_TABLE " u, " POSTS_TABLE " p, " POSTS_TABLE " p2, " USERS_TABLE " u2 
   WHERE t.forum_id = $forum_id 
      AND t.topic_poster = u.user_id 
      AND p.post_id = t.topic_first_post_id 
      AND p2.post_id = t.topic_last_post_id 
      AND u2.user_id = p2.poster_id 
      AND t.topic_type <> " 
POST_ANNOUNCE 
      $limit_topics_time 
   ORDER BY t.topic_type DESC, t.topic_last_post_id DESC 
   LIMIT $start, "
.$board_config['topics_per_page']; 
if ( !(
$result $db->sql_query($sql)) ) 

   
message_die(GENERAL_ERROR'Could not obtain topic information'''__LINE____FILE__$sql); 


$total_topics 0
while( 
$row $db->sql_fetchrow($result) ) 

   
$topic_rowset[] = $row
   
$total_topics++; 


$db->sql_freeresult($result); 

// 
// Total topics ... 
// 
$total_topics += $total_announcements

// 
// Define censored word matches 
// 
$orig_word = array(); 
$replacement_word = array(); 
obtain_word_list($orig_word$replacement_word); 

// 
// Post URL generation for templating vars 
// 
$template->assign_vars(array( 
   
'L_DISPLAY_TOPICS' => $lang['Display_topics'], 

   
'U_POST_NEW_TOPIC' => append_sid("posting.$phpEx?mode=newtopic&amp;" POST_FORUM_URL "=$forum_id"), 

   
'S_SELECT_TOPIC_DAYS' => $select_topic_days
   
'S_POST_DAYS_ACTION' => append_sid("viewforum.$phpEx?" POST_FORUM_URL "=" $forum_id "&amp;start=$start")) 
); 

// 
// User authorisation levels output 
// 
$s_auth_can = ( ( $is_auth['auth_post'] ) ? $lang['Rules_post_can'] : $lang['Rules_post_cannot'] ) . '<br />'
$s_auth_can .= ( ( $is_auth['auth_reply'] ) ? $lang['Rules_reply_can'] : $lang['Rules_reply_cannot'] ) . '<br />'
$s_auth_can .= ( ( $is_auth['auth_edit'] ) ? $lang['Rules_edit_can'] : $lang['Rules_edit_cannot'] ) . '<br />'
$s_auth_can .= ( ( $is_auth['auth_delete'] ) ? $lang['Rules_delete_can'] : $lang['Rules_delete_cannot'] ) . '<br />'
$s_auth_can .= ( ( $is_auth['auth_vote'] ) ? $lang['Rules_vote_can'] : $lang['Rules_vote_cannot'] ) . '<br />'

if ( 
$is_auth['auth_mod'] ) 

   
$s_auth_can .= sprintf($lang['Rules_moderate'], "<a href=\"modcp.$phpEx?" POST_FORUM_URL "=$forum_id&amp;start=" $start "&amp;sid=" $userdata['session_id'] . '">''</a>'); 
    
   
$topic_mod .= "<a href=\"modcp.$phpEx?" POST_TOPIC_URL "=$topic_id&amp;mode=delete&amp;sid=" $userdata['session_id'] . '"><img src="' $images['topic_mod_delete'] . '" alt="' $lang['Delete_topic'] . '" title="' $lang['Delete_topic'] . '" border="0" /></a>&nbsp;'

   
$topic_mod .= "<a href=\"modcp.$phpEx?" POST_TOPIC_URL "=$topic_id&amp;mode=move&amp;sid=" $userdata['session_id'] . '"><img src="' $images['topic_mod_move'] . '" alt="' $lang['Move_topic'] . '" title="' $lang['Move_topic'] . '" border="0" /></a>&nbsp;'

   
$topic_mod .= ( $forum_topic_data['topic_status'] == TOPIC_UNLOCKED ) ? "<a href=\"modcp.$phpEx?" POST_TOPIC_URL "=$topic_id&amp;mode=lock&amp;sid=" $userdata['session_id'] . '"><img src="' $images['topic_mod_lock'] . '" alt="' $lang['Lock_topic'] . '" title="' $lang['Lock_topic'] . '" border="0" /></a>&nbsp;' "<a href=\"modcp.$phpEx?" POST_TOPIC_URL "=$topic_id&amp;mode=unlock&amp;sid=" $userdata['session_id'] . '"><img src="' $images['topic_mod_unlock'] . '" alt="' $lang['Unlock_topic'] . '" title="' $lang['Unlock_topic'] . '" border="0" /></a>&nbsp;'

   
$topic_mod .= "<a href=\"modcp.$phpEx?" POST_TOPIC_URL "=$topic_id&amp;mode=split&amp;sid=" $userdata['session_id'] . '"><img src="' $images['topic_mod_split'] . '" alt="' $lang['Split_topic'] . '" title="' $lang['Split_topic'] . '" border="0" /></a>&nbsp;'


// 
// Mozilla navigation bar 
// 
$nav_links['up'] = array( 
   
'url' => append_sid('index.'.$phpEx), 
   
'title' => sprintf($lang['Forum_Index'], $board_config['sitename']) 
); 

// 
// Dump out the page header and load viewforum template 
// 
//-- mod : categories hierarchy -------------------------------------------------------------------- 
//-- add 
$forum_row['forum_name'] = get_object_lang(POST_FORUM_URL $forum_id'name'); 
//-- fin mod : categories hierarchy ---------------------------------------------------------------- 
define('SHOW_ONLINE'true); 
$page_title $lang['View_forum'] . ' - ' $forum_row['forum_name']; 
include(
$phpbb_root_path 'includes/page_header.'.$phpEx); 

$template->set_filenames(array( 
   
'body' => 'viewforum_link1_body.tpl'
); 
make_jumpbox('viewforum.'.$phpEx); 
//-- mod : categories hierarchy -------------------------------------------------------------------- 
//-- add 
display_index(POST_FORUM_URL $forum_id); 
//-- fin mod : categories hierarchy ---------------------------------------------------------------- 

$template->assign_vars(array( 
   
'FORUM_ID' => $forum_id
   
'FORUM_NAME' => $forum_row['forum_name'], 
   
'MODERATORS' => $forum_moderators
   
'POST_IMG' => ( $forum_row['forum_status'] == FORUM_LOCKED ) ? $images['post_locked'] : $images['post_new'], 

   
'FOLDER_IMG' => $images['folder'], 
   
'FOLDER_NEW_IMG' => $images['folder_new'], 
   
'FOLDER_HOT_IMG' => $images['folder_hot'], 
   
'FOLDER_HOT_NEW_IMG' => $images['folder_hot_new'], 
   
'FOLDER_LOCKED_IMG' => $images['folder_locked'], 
   
'FOLDER_LOCKED_NEW_IMG' => $images['folder_locked_new'], 
   
'FOLDER_STICKY_IMG' => $images['folder_sticky'], 
   
'FOLDER_STICKY_NEW_IMG' => $images['folder_sticky_new'], 
   
'FOLDER_ANNOUNCE_IMG' => $images['folder_announce'], 
   
'FOLDER_ANNOUNCE_NEW_IMG' => $images['folder_announce_new'], 

   
'L_TOPICS' => $lang['Topics'], 
   
'L_REPLIES' => $lang['Replies'], 
   
'L_VIEWS' => $lang['Views'], 
   
'L_POSTS' => $lang['Posts'], 
   
'L_LASTPOST' => $lang['Last_Post'], 
   
'L_MODERATOR' => $l_moderators
   
'L_MARK_TOPICS_READ' => $lang['Mark_all_topics'], 
   
'L_POST_NEW_TOPIC' => ( $forum_row['forum_status'] == FORUM_LOCKED ) ? $lang['Forum_locked'] : $lang['Post_new_topic'], 
   
'L_NO_NEW_POSTS' => $lang['No_new_posts'], 
   
'L_NEW_POSTS' => $lang['New_posts'], 
   
'L_NO_NEW_POSTS_LOCKED' => $lang['No_new_posts_locked'], 
   
'L_NEW_POSTS_LOCKED' => $lang['New_posts_locked'], 
   
'L_NO_NEW_POSTS_HOT' => $lang['No_new_posts_hot'], 
   
'L_NEW_POSTS_HOT' => $lang['New_posts_hot'], 
   
'L_ANNOUNCEMENT' => $lang['Post_Announcement'], 
   
'L_STICKY' => $lang['Post_Sticky'], 
   
'L_POSTED' => $lang['Posted'], 
   
'L_JOINED' => $lang['Joined'], 
   
'L_AUTHOR' => $lang['Author'], 
//--------------viewforum1 begin***************************************************** 
   
'L_MESSAGE' => $lang['Message'], 
   
'L_POST_SUBJECT' => $lang['Post_subject'], 
//--------------viewforum1 end***************************************************** 

   
'S_AUTH_LIST' => $s_auth_can

   
'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" POST_FORUM_URL ."=$forum_id"), 

   
'U_MARK_READ' => append_sid("viewforum.$phpEx?" POST_FORUM_URL "=$forum_id&amp;mark=topics")) 
); 
// 
// End header 
// 


//-----------------------------------viewtopic begin******************************************************* 

include($phpbb_root_path 'includes/bbcode.'.$phpEx); 

// 
// Start initial var setup 
// 

$topic_id $post_id 0
You see this "$topic_id = $post_id = 0;". I want to set 0 to the topic_last_post_id.

thankz
dbzone is offline
Reply With Quote
View Public Profile
 
When You Register, These Ads Go Away!
Old 08-16-2004, 03:54 AM