Top 10 rated people

Hulp nodig bij een modificaties of op zoek naar een MOD? Bekijk ons archief. Support wordt helaas niet meer verleend.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
ownageworld
Berichten: 252
Lid geworden op: 03 jun 2006, 17:35
Locatie: Brussel

Top 10 rated people

Bericht door ownageworld » 19 jun 2006, 18:43

Ik gebruik de attitude mod van austin om alle leden op elkaar te laten voten... Nou wil ik graag een top 10 rated people op mijn portal...
Weet iemand wat ik verkeerd doe?

Code: Selecteer alles

//
//top 10
//



$top_rate = '10'; // total of richest members

$sql = "SELECT username, user_id, ROUND(AVG(user_attitude_mod),1)

   FROM " . USERS_TABLE . "
   WHERE user_id <> " . ANONYMOUS . "
GROUP BY username, user_attitude_mod

   ORDER BY user_attitude_mod DESC LIMIT $top_rate";
if( !($result = $db->sql_query($sql)) )
   {
      message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
   }

   if ( $row = $db->sql_fetchrow($result) )
   {
   $i = 0;
   do
   {
      $username = $row['username'];
 
      $user_id = $row['user_id'];
      $rating = ( $row['user_attitude_mod'] ) ? $row['user_attitude_mod'] : 0;
      $template->assign_block_vars('top_rate', array(
                        'USERNAME' => $username,
	        'RATING' => $rating,
                        'U_VIEWPOSTER' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=$user_id")                                    )
                  );

                  $i++;
            }
            while ( $row = $db->sql_fetchrow($result) );
      }

//top 10
En ik krijg te zien:

Code: Selecteer alles

 » HellFire [0]
» Film [0]
» Truestar [0]
» Ownage [0]
» Test [0]
» Testing [0]
» Wonder [0]
» Raven [0]
» maniak [0]
» svennson [0]
Alles is nul.... Hoe krijg ik hier alle getallen? zoals
"Ownage [7]" ofzo? Dus de daadwerkelijke gemiddelde getallen?

Gebruikersavatar
Stef
Berichten: 9080
Lid geworden op: 04 jun 2003, 20:47

Bericht door Stef » 19 jun 2006, 21:01

Heb jij dat geschreven of in elkaar gezet of is dit een modification? Want in mijn ogen is dat script rotzooi.

Draai de volgende query eens in phpmyadmin en zet eens neer wat je krijgt:

Code: Selecteer alles

SELECT username, user_attitude_mod FROM phpbb_users ORDER BY user_attitude_mod DESC LIMIT 10;
Ik ken de modification niet, dus ik gok maar wat, maar probeer het eens. :-)

Gebruikersavatar
Paul
Beheerder
Beheerder
Berichten: 20316
Lid geworden op: 23 okt 2003, 11:38
Locatie: Utrecht
Contacteer:

Bericht door Paul » 19 jun 2006, 21:05

Stef, elke mod van austin IS rommel ;)

ownageworld
Berichten: 252
Lid geworden op: 03 jun 2006, 17:35
Locatie: Brussel

Bericht door ownageworld » 20 jun 2006, 10:49

Stef schreef:Heb jij dat geschreven of in elkaar gezet of is dit een modification? Want in mijn ogen is dat script rotzooi.

Draai de volgende query eens in phpmyadmin en zet eens neer wat je krijgt:

Code: Selecteer alles

SELECT username, user_attitude_mod FROM phpbb_users ORDER BY user_attitude_mod DESC LIMIT 10;
Ik ken de modification niet, dus ik gok maar wat, maar probeer het eens. :-)
Zelf geschreven, maar ben nog beginner in SQL commands enzo...
http://www.ownageworld.com/nl/portal.php
Wat jij net zei had ik eerst ook... maar probleem is (zie bovenstaande link, helemaal links bij "Top Rated" dat het nu alle getallen geeft... en ik wil het gemiddelde weten van die getallen... Stel, er is 8, 9, 10 op een user gerate, dan wil ik dat het "9" aangeeft...
Nu geeft het alles weer (beter dan niks maar toch hehe)
Iig bedankt Stef!

Maar.... hoe krijg ik dit goed?

@ paul: Klopt, maar hij heeft wel interessante mods erbij zitten, alleen zijn ze niet erg configurable, of je moet ze helemaal opschonen hehe... :wink:

Gebruikersavatar
Stef
Berichten: 9080
Lid geworden op: 04 jun 2003, 20:47

Bericht door Stef » 20 jun 2006, 13:00

Hier al iets mee geprobeert?

Code: Selecteer alles

ROUND(AVG(user_attitude_mod),1)

ownageworld
Berichten: 252
Lid geworden op: 03 jun 2006, 17:35
Locatie: Brussel

Bericht door ownageworld » 21 jun 2006, 11:36

Stef schreef:Hier al iets mee geprobeert?

Code: Selecteer alles

ROUND(AVG(user_attitude_mod),1)
Dat heb ik dus ook in de code erboven gebruikt, en dan krijg ik de volgende foutmelding:

Code: Selecteer alles

Could not query users

DEBUG MODE

SQL Error : 1140 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

SELECT username, ROUND(AVG(user_attitude_mod),1) FROM bbnl_users ORDER BY user_attitude_mod DESC LIMIT 10

Line : 210
File : portal.php
Daarom kwam ik op de volgende code uit:

Code: Selecteer alles

SELECT username, user_id, ROUND(AVG(user_attitude_mod),1)

   FROM " . USERS_TABLE . "
   WHERE user_id <> " . ANONYMOUS . "
GROUP BY username, user_attitude_mod

   ORDER BY user_attitude_mod DESC LIMIT $top_rate"; 
Maar dan zie ik geen getallen meer... en komt er alleen [] te staan..

Weet je nog een oplossing Stef?

ownageworld
Berichten: 252
Lid geworden op: 03 jun 2006, 17:35
Locatie: Brussel

Bericht door ownageworld » 27 jun 2006, 15:15

BUMP, sorry... wil dit heel graag weten!
Ten eerste krijg ik al wat te zien:

Code: Selecteer alles

.Top Rated
» Nick [Rating]
» HellFire [,8]
» Film [,7]
» Truestar [,10,9]
» Ownage [,10]
» Wonder [,1]
» Anonymous []
Hij laat de getallen zien, maar dit zijn geen gemiddelden en hij zet overal komma's voor... staat dat zo in de DB of in php file? Zou dit gefixt kunnen worden, want ik verwacht dat hij zonder de komma's het wel doet...
Ten tweede zet hij ze niet op de juiste volgorde...
"HellFire" staat bovenaan met een 8, terwijl er op "Truestar" meer gevote is en hoger gemiddelde heeft... Hoe fix ik het dat hij ze goed op volgorde zet? Dan laat ik de getallen wel buiten wegen...

Any help appreciated!

Code: Selecteer alles

ok I'm close I think....

// Start Top 5 Points hack
$sql = "SELECT user_id, username, user_attitude_mod FROM " . USERS_TABLE ." WHERE user_id <> -1 ORDER BY user_attitude_mod DESC LIMIT 5";
$result = $db->sql_query($sql);
while( $row = $db->sql_fetchrow($result)) {
$template ->assign_block_vars("user_attitude_mod", array(
'USERNAME' => $row['username'],
'URL' => $phpbb_root_path . "profile.php?mode=viewprofile&u=" . $row['user_id'],
'POINTS' => $row['user_attitude_mod'])
);
}
// End Top 5 Points hack

<br />

<table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline">
<tr>
<td class="rowpic" colspan="4" align="left" height="25"><span class="genmed"><b>Top 5 Attitudes</b></span></td>
</tr>
<tr>
<td class="row1" align="center"><span class="genmed">Member</span></td>
<td class="row1" align="center"><span class="genmed">Attitude</span></td>
</tr>
<tr>
<!-- BEGIN top_points -->
<td class="row1" align="left"><span class="gensmall"><a href="{user_attitude_mod.URL}">&nbsp;{user_attitude_mod.USERNAME}</a></span></td>
<td class="row1" align="center"><span class="gensmall"><b>&nbsp;&nbsp;{user_attitude_mod.POINTS}</b></span></td>
</tr>
<!-- END top_points -->
</table> 

Gesloten