View Single Post
  #1054  
Old 08-18-2009, 11:37 PM
sockwater's Avatar
sockwater sockwater is offline
 
Join Date: Apr 2008
Posts: 187
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Ted S View Post
Having a query on every post of a thread is a terrible idea that would add huge load to servers.
Should be able to do it with one query per page view. Once you have all the postids for the posts that will be displayed on the page, then pull all votes for all posts at once and sort them out in php. (If you're interested in implementing it )

Something along these lines. (Code untested, likely has typos)
PHP Code:
// an array of postids for all posts shown on this page of thread
$postids;

$votes $db->query_read("
    SELECT pv_vote.*, user.username
    FROM " 
TABLE_PREFIX "pv_vote AS pv_vote
    LEFT JOIN " 
TABLE_PREFIX "user AS user ON (user.userid = pv_vote.userid)
    WHERE pv_vote.postid IN (" 
implode(','$postids) . ")
"
);
$postvotes = array();
while (
$vote $db->fetch_array($votes))
{
    if (!isset(
$postvotes["$vote[postid]"]))
    {
        
$postvotes["$vote[postid]"] = array(
            
'totalscore' => 0,
            
'votecount'  => 0,
            
'votes'      => array(),
        );
    }
    
$postvotes["$vote[postid]"]['totalscore'] += $vote['vote'];
    ++
$postvotes["$vote[postid]"]['votecount'];
    
$postvotes["$vote[postid]"]['votes'][] = array(
        
'username' => $vote['username'],
        
'userid'   => $vote['userid'],
        
'vote'     => $vote['vote'],
    );

Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01248 seconds
  • Memory Usage 1,781KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete