Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 08-24-2004, 08:08 AM
Tekton Tekton is offline
 
Join Date: Jun 2004
Location: Wisconsin
Posts: 362
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default mysql - sorting and calling help

Basically what I want to do is get the top 7 people with the most 'gold'.

This gives me the top person, but I need a way to get all 7. Any help? Thanks.

PHP Code:
$temp $DB_site->query_first("SELECT username, gold FROM ".TABLE_PREFIX."user ORDER BY gold DESC LIMIT 7 ");
$top_one $temp[username];
$top_one2 $temp[gold]; 
Reply With Quote
  #2  
Old 08-24-2004, 09:38 AM
CarCdr CarCdr is offline
 
Join Date: Apr 2004
Posts: 242
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Use query rather than query_first, then loop over the results The class DB_site offers the function query_first as a shortcut for a) regular query, b) free mysql result storage, c) return the single row.
Reply With Quote
  #3  
Old 08-24-2004, 09:50 AM
Colin F's Avatar
Colin F Colin F is offline
 
Join Date: Jul 2004
Location: Switzerland
Posts: 1,551
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Tekton
Basically what I want to do is get the top 7 people with the most 'gold'.

This gives me the top person, but I need a way to get all 7. Any help? Thanks.

PHP Code:
$temp $DB_site->query_first("SELECT username, gold FROM ".TABLE_PREFIX."user ORDER BY gold DESC LIMIT 7 ");
$top_one $temp[username];
$top_one2 $temp[gold]; 
You might also make that "LIMIT 0, 6"
Reply With Quote
  #4  
Old 08-24-2004, 10:23 AM
CarCdr CarCdr is offline
 
Join Date: Apr 2004
Posts: 242
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Colin F
You might also make that "LIMIT 0, 6"
What would that achieve Colin? That would return the first 6 rows. LIMIT 0,6 is equivalent to LIMIT 6.
Reply With Quote
  #5  
Old 08-24-2004, 11:49 AM
Colin F's Avatar
Colin F Colin F is offline
 
Join Date: Jul 2004
Location: Switzerland
Posts: 1,551
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by CarCdr
What would that achieve Colin? That would return the first 6 rows. LIMIT 0,6 is equivalent to LIMIT 6.
really?

I would have thought LIMIT 0,6 would return rows 0 through 6, making the first seven rows. Good to have learned something
Reply With Quote
  #6  
Old 08-24-2004, 12:13 PM
Dean C's Avatar
Dean C Dean C is offline
 
Join Date: Jan 2002
Location: England
Posts: 9,071
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yes Colin, I'm pretty sure what you said is right. LIMIT 0,6 would return the first 7 seven rows.
Reply With Quote
  #7  
Old 08-24-2004, 04:23 PM
Tekton Tekton is offline
 
Join Date: Jun 2004
Location: Wisconsin
Posts: 362
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Can I get a quick example on how to loop the results, and store them each in SEPERATE variables? Thanks. ^__^;;
Reply With Quote
  #8  
Old 08-24-2004, 04:36 PM
Colin F's Avatar
Colin F Colin F is offline
 
Join Date: Jul 2004
Location: Switzerland
Posts: 1,551
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

PHP Code:
$winners $DB_site->query("SELECT username, gold FROM ".TABLE_PREFIX."user ORDER BY gold DESC LIMIT 7 "); 
while (
$winner $DB_site->fetch_array($winners))
{
$id++;
$uname "name_".$id;
$ugold "gold_".$id;
${
$uname} = $winner[username]; 
${
$ugold} = $winner[gold];


That should work. you can then use the variables $name_1 - $name_7 as well as $gold_1 - $gold_7
Reply With Quote
  #9  
Old 08-24-2004, 04:42 PM
Tekton Tekton is offline
 
Join Date: Jun 2004
Location: Wisconsin
Posts: 362
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hey, wow! Thanks a lot! I'm prolly trying to do something too big as my first home-made hack of sorts, but this is one problem out of the way. Thanks again!
Reply With Quote
  #10  
Old 08-24-2004, 09:04 PM
CarCdr CarCdr is offline
 
Join Date: Apr 2004
Posts: 242
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dean C
Yes Colin, I'm pretty sure what you said is right. LIMIT 0,6 would return the first 7 seven rows.
It is as I said...

The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must be integer constants. With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:45 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05126 seconds
  • Memory Usage 2,257KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (3)bbcode_php
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete