TP-Docs
HTML5 Icon HTML5 Icon HTML5 Icon
TP on Social Media

Recent

Welcome to TinyPortal. Please login or sign up.

Members
  • Total Members: 3,963
  • Latest: BiZaJe
Stats
  • Total Posts: 195,917
  • Total Topics: 21,308
  • Online today: 884
  • Online ever: 8,223 (February 19, 2025, 04:35:35 AM)
Users Online
  • Users: 0
  • Guests: 341
  • Total: 341

Top Stats - 3 in 1 Block

Started by akulion, November 04, 2006, 03:53:42 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

wilsy

Hi Jadzia,

Feel free, I got the code myself from TP ;)

Regards,

Wilsy.

DeviantQueen

http://deviantmetal.com/forum/index.php?page=44

Here's what I have, I put it in a PHP article.

It doesn't show the name correctly if there is a space present. Example, member name: Elemental Dragon displays as ElementalÃ,·Dragon

Is there any way to correct this?

global $db_prefix, $memberContext;

$count = 2;
$users = array();

$request = db_query("
SELECT ID_MEMBER FROM {$db_prefix}members WHERE is_activated = 1 ORDER BY ID_MEMBER DESC LIMIT ".$count, __FILE__, __LINE__);

while ($row = mysql_fetch_assoc($request)) {
$users[] = intval($row['ID_MEMBER']);
}

loadMemberData($users);
echo'<table border="1" width="100%" id="table1" cellpadding="2" style="border-collapse: collapse">
<tr><td  bgcolor="#FF9900" width="150"><font color="#FFFFFF" face="Verdana" size="2"><b>Newest Members</b></font></td><td bgcolor="#660066" width="200"><font color="#FFFFFF" face="Verdana" size="2"><b>Top 10 Posters</b></font></td><td  bgcolor="#336699"><font color="#FFFFFF" face="Verdana" size="2"><b>Top Posters This Week</b></font></td><td  bgcolor="#00CC33"><font color="#FFFFFF" face="Verdana" size="2"><b>This Months Birthdays</b></font></td></tr><tr>
<td>';
$i = 0;
foreach($users as $user_id) {
if ($i > 0) echo '<hr>';
$i++;

loadMemberContext($user_id);

if (!empty($memberContext[$user_id]['avatar']['image']))
echo '<div align="center">'.$memberContext[$user_id]['avatar']['image'].'<BR>'.$memberContext[$user_id]['link'].'</div>';
else
echo '<div align="center"><img src="http://brianjwilson.com/forum/noava.gif" height=80 widh=80><BR><BR>'.$memberContext[$user_id]['link'].'</div>';
}

global $scripturl;
echo'</td><td>';
$numberofposters = 10; // You can change this to however many you want

$request = db_query("
  SELECT ID_MEMBER, memberName, posts
  FROM {$db_prefix}members
  ORDER BY posts DESC
  LIMIT $numberofposters", __FILE__, __LINE__);
while ($row = mysql_fetch_assoc($request))
  echo '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '">' . $row['memberName'] . '</a>' , ' (', $row['posts'] , ')<br />';
mysql_free_result($request);
echo'</td><td>';

global $db_prefix;
$count= array();

$query = db_query(
    "SELECT posterName
     FROM {$db_prefix}messages
     ORDER BY posterTime DESC
     LIMIT 100", __FILE__, __LINE__);

while ($row = mysql_fetch_assoc($query))
{
  if (!isset($count[$row['posterName']]))
    $count[$row['posterName']] = 0;
  ++$count[$row['posterName']];
}

$random = array_rand($count, count($count));
echo '<div style="text-align: center">';
foreach ($random as $value)
{
  $fsize = $count[$value] + 7;
  $name = str_replace(" ",'Ã,·',$value);
  echo '<span style="font-size:' . $fsize . 'pt;">' . $name . '</span> ';
}
echo '</div></td><td>';
global $db_prefix, $scripturl;

echo '
  <div style="padding: 4px; font-weight: bold;">';
echo $title;
echo '
  </div>
  <div class="windowbg" style="padding: 4px; ">';
      $month = date('m');
      $month_number = '-' . $month . '-';
      $query = db_query(
    "SELECT ID_MEMBER, memberName, birthdate
     FROM {$db_prefix}members
     WHERE birthdate LIKE '%$month_number%'
     AND birthdate NOT LIKE '0001-01-01'
     ORDER BY memberName", __FILE__, __LINE__);
  if(db_affected_rows() != 0)
  {
    $birthdays = array();
    $member = array();
    while ($row = mysql_fetch_assoc($query))
    {
       $day = substr($row['birthdate'],8,2);
       $birthdays[$row['memberName']] =  $day;
       $member[$row['memberName']] = $row['ID_MEMBER'];
    }
    asort($birthdays);
    foreach ($birthdays as $key => $value)
    {
      echo '<a class="normaltext" href="' . $scripturl . '?action=profile;u=' . $member[$key] . '">' . $key . '</a> (' . $value . '.' . $month . ')<br />';
   }
}
else
  echo 'No birthdays this month';
echo'</div> ';
echo'</td></tr>
</table>';

rockyrails

#102
Here is the code I ended up modifying from multiple posts to this thread :
Used it in php center block. Effect is 3in1 stats block showing:
• 3 newest members (make sure you add your url to the default avatar.gif
• 25 top posters
• the last 7 days most active posters
all three blocks are centered and the content is centered - looks much better that way.

• in the last 7 days top posters the display name is used and not the registered name, also the odd A symbol is removed and a space is show where members are using two words in their display name. I added a screen shot (50%) to save space and the code in a text file.
The code is not mine it is merely an adaptation from all the great input in this thread and a few others on the forum. Thanks for the great block code - nice addition to the site and may inspire a few members to post more.

global $db_prefix, $memberContext;

$count = 3;
$users = array();

$request = db_query("
SELECT ID_MEMBER FROM {$db_prefix}members WHERE is_activated = 1 ORDER BY ID_MEMBER DESC LIMIT ".$count, __FILE__, __LINE__);

while ($row = mysql_fetch_assoc($request)) {
$users[] = intval($row['ID_MEMBER']);
}

loadMemberData($users);
echo'<table border="1" width="100%" id="table1" cellpadding="2" style="border-collapse: collapse">
<tr><td  bgcolor="#FF9900" width="150"><font color="#FFFFFF" face="Verdana" size="2"><center><b>Newest Members</b></center></font></td><td bgcolor="#6c4614" width="125"><font color="#FFFFFF" face="Verdana" size="2"><center><b>Top 25 Posters</b></center></font></td><td  bgcolor="#68715b" width="125"><font color="#FFFFFF" face="Verdana" size="2"><center><b>This Weeks Top Posters</b></center></font></td></tr><tr>
<td>';
$i = 0;
foreach($users as $user_id) {
if ($i > 0) echo '<hr>';
$i++;

loadMemberContext($user_id);

if (!empty($memberContext[$user_id]['avatar']['image']))
echo '<div align="center">'.$memberContext[$user_id]['avatar']['image'].'<BR>'.$memberContext[$user_id]['link'].'</div>';
else
echo '<div align="center"><img src="http://www.link_to_the_image_you_want_as_default_gif" height=80 widh=80><BR><BR>'.$memberContext[$user_id]['link'].'</div>';
}

$numberofposters = 25; // You can change this to however many you want

require_once "SSI.php";
$top_posters = ssi_topPoster($numberofposters, "return");
echo'</td><td>';
foreach ($top_posters as $poster)
{
  echo '<div align="center">'.$poster['link'] , ' (', $poster['posts'] , ')<br />';
}
echo'</td><td>';
global $db_prefix, $scripturl;
$count= array();
$poster_number = array();
$query = db_query(
    "SELECT realName, {$db_prefix}messages.ID_MEMBER, ID_GROUP
     FROM {$db_prefix}members
     JOIN {$db_prefix}messages
     ON {$db_prefix}members.ID_MEMBER = {$db_prefix}messages.ID_MEMBER
     WHERE ID_GROUP <> 1 AND ID_GROUP <> 2
     ORDER BY posterTime DESC
     LIMIT 100", __FILE__, __LINE__);

while ($row = mysql_fetch_assoc($query))
{
  if (!isset($count[$row['realName']]))
    $count[$row['realName']] = 0;
  ++$count[$row['realName']];
    $poster_number[$row['realName']] = $row['ID_MEMBER'];
}

$random = array_rand($count, count($count));
echo '<div align="center"><div style="width: 160px; text-align: center; overflow: hidden;">';
foreach ($random as $value)
{
  $fsize = $count[$value] + 7;
  if ($fsize > 20)
    $fsize = 20;
  elseif ($fsize < 6)
    $fsize = 6;
  $name = str_replace(" ",' ',$value);
   echo '<div align="center"><a style="font-size:' . $fsize . 'pt;" class="normaltext" href="' . $scripturl . '?action=profile;u=' . $poster_number[$value] . ';sa=showPosts">' . $name . '</a> ';
}
echo '</div></td></tr>
</table>';




MinasC

could you plz attach a bigger pic , i cannot make out what that one shows !
thnx !

rockyrails

Larger pic added to the original post - thanks


MinasC


DeviantQueen

Looks great!! Thanks!!

just one little thing, not sure if it can be fixed

http://deviantmetal.com/forum/index.php?page=52

DarkCelticLi  -- his username is DarkCelticLion but it cut's off... can that be fixed? what would need to be changed?

rockyrails

Hi
Try increasing the width - I had set it pretty narrow as my center area is only 540px wide
in: I had it originally at 125 - make it either 200 or 250

<td  bgcolor="#68715b" width="125"><font color="#FFFFFF" face="Verdana" size="2"><center>This Weeks Top Posters</center></font></td>

hope this helps - cheers

DeviantQueen

That did help, thank you! Though that isn't the one I had to change

"echo '<div align="center"><div style="width: 160px; text-align: center; overflow: hidden;">';"

wilsy

This will give you: -

Latest Boys | Top Posters | Latest Girls | Birthdays | Top Gamers

global $db_prefix, $memberContext, $modSettings, $scripturl;


$count = 20;
$users = array();


$request = db_query("
SELECT ID_MEMBER FROM {$db_prefix}members WHERE is_activated = 1 AND gender = 1 ORDER BY ID_MEMBER DESC LIMIT ".$count, __FILE__, __LINE__);

while ($row = mysql_fetch_assoc($request)) {
$users[] = intval($row['ID_MEMBER']);
}

loadMemberData($users);
echo'<table border="0" width="100%" id="table1" cellpadding="2" style="border-collapse: collapse">
<tr><td  bgcolor="#eae9e9" width="20%"><font color="#16b7c5" face="Verdana" size="2"><b>Latest Boys</b></font></td><td bgcolor="#eae9e9" width="20%"><font color="#16b7c5" face="Verdana" size="2"><b>Top 10</b></font></td><td  bgcolor="#eae9e9" width="20%"><font color="#16b7c5" face="Verdana" size="2"><b>Latest Girls</b></font></td><td  bgcolor="#eae9e9" width="20%"><font color="#16b7c5" face="Verdana" size="2"><b>Birthdays</b></font></td><td bgcolor="#eae9e9" width="20%"><font color="#16b7c5" face="Verdana" size="2"><b>Top Gamers</b></font></td></tr><tr>
<td>';
$i = 0;
foreach($users as $user_id) {
if ($i > 0) echo '';
$i++;

loadMemberContext($user_id);

if (!empty($memberContext[$user_id]))
echo '<div align="left">'.$memberContext[$user_id]['link'].'</div>';
}

$numberofposters = 20; // You can change this to however many you want

require_once "SSI.php";
$top_posters = ssi_topPoster($numberofposters, "return");
echo'</td><td>';
foreach ($top_posters as $poster)
{
  echo $poster['link'] , ' (', $poster['posts'] , ')<br />';
}
echo'</td><td>';

global $db_prefix, $memberContext, $modSettings, $scripturl;


$count = 20;
$users = array();


$request = db_query("
SELECT ID_MEMBER FROM {$db_prefix}members WHERE is_activated = 1 AND gender = 2 ORDER BY ID_MEMBER DESC LIMIT ".$count, __FILE__, __LINE__);

while ($row = mysql_fetch_assoc($request)) {
$users[] = intval($row['ID_MEMBER']);
}

loadMemberData($users);
$i = 0;
foreach($users as $user_id) {
if ($i > 0) echo '';
$i++;

loadMemberContext($user_id);

if (!empty($memberContext[$user_id]))
echo '<div align="left">'.$memberContext[$user_id]['link'].'</div>';
}

echo '</div></td><td>';
global $db_prefix, $scripturl;

echo '
  <div style="padding: 4px; font-weight: bold;">';
// echo $title;
echo '
  </div>
  <div class="windowbg" style="padding: 4px; ">';
      $month = date('m');
      $month_number = '-' . $month . '-';
      $query = db_query(
    "SELECT ID_MEMBER, memberName, birthdate
     FROM {$db_prefix}members
     WHERE birthdate LIKE '%$month_number%'
     AND birthdate NOT LIKE '0001-01-01'
     ORDER BY memberName", __FILE__, __LINE__);
  if(db_affected_rows() != 0)
  {
    $birthdays = array();
    $member = array();
    while ($row = mysql_fetch_assoc($query))
    {
       $day = substr($row['birthdate'],8,2);
       $birthdays[$row['memberName']] =  $day;
       $member[$row['memberName']] = $row['ID_MEMBER'];
    }
    asort($birthdays);
    foreach ($birthdays as $key => $value)
    {
      echo '<a class="normaltext" href="' . $scripturl . '?action=profile;u=' . $member[$key] . '">' . $key . '</a> (' . $value . '.' . $month . ')<br />';
   }
}
else
  echo 'No birthdays this month';

echo'</td><td>';

//-------START-------------
/*
|----------------------------------
SMF ARCADE SCROLLING CHAMPS BLOCK for SMFARCADE V2
by Eric Lawson
|----------------------------------
Made for TinyPortal and SMF forum

*/
//Upload a pic called arcade_block.gif (you can use you own gif - just name it arcade_block.gif)
//to your Themes/<themename>/images/ folder

// -- SETUP EDITS ---

$no = 20; //number of top players to show

// --LANGUAGE EDITS --
$txtplay = "The Top Players"; // change "The Top Players" to your language
$txtwin = "Number Of Wins :";// change "Number Of Wins :" to your language
$txtlate = "Latest High Score by ";// change "Latest High Score set by" to your language
$txtwit = "with ";// change "with" to your language
$txton = "on ";// change "on" to your language

global $scripturl,$sourcedir,$boardurl,$db_prefix,$modSettings;
require_once($sourcedir.'/ArcadeStats.php');

//Get newest champ or die
$sql = "SELECT game.ID_GAME, game.gameName, game.thumbnail, game.gameDirectory,
        IFNULL(mem.ID_MEMBER, 0) AS ID_MEMBER, IFNULL(mem.realName,'') AS realName, score.score
        FROM {$db_prefix}arcade_scores AS score
        LEFT JOIN {$db_prefix}members AS mem ON (mem.ID_MEMBER = score.ID_MEMBER)
        JOIN {$db_prefix}arcade_games AS game ON (game.ID_GAME = score.ID_GAME)
        ORDER BY `championFrom` DESC
        LIMIT 0,1";
if(!($result = db_query($sql,__FILE__,__LINE__)))
{
die("Could not get the newest champ");
}
$row = mysql_fetch_assoc($result);
mysql_free_result($result);

if(isset($row['gameDirectory']))
{
$row['gameDirectory']=$row['gameDirectory']."/";
}

//newest champ details
$playerid = $row['ID_MEMBER'];
$player = $row['realName'];
$game_id = $row['ID_GAME'];
$game_name = $row['gameName'];
$score = $row['score'];
$game_pic = $modSettings['gamesUrl'].$row['gameDirectory'].$row['thumbnail'];

$bp=ArcadeStats_BestPlayers($no);

$score_poss=0; //players position

echo '
<script type="text/javascript">';

/***********************************************
* Cross browser Marquee II- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
***********************************************/
//Specify initial delay before marquee starts to scroll on page (2000=2 seconds)
//Specify marquee scroll speed (larger is faster 1-10)
//Pause marquee onMousever (0=no. 1=yes)?
echo '
var delayb4scrollx=2000
var marqueespeedx=1
var pauseitx=1';

////NO NEED TO EDIT BELOW THIS LINE////////////
echo '
var copyspeedx=marqueespeedx
var pausespeedx=(pauseitx==0)? copyspeedx: 0
var actualheightx=\'\'';
echo '
function scrollmarqueex(){
if (parseInt(cross_marqueex.style.top)>(actualheightx*(-1)+8))
cross_marqueex.style.top=parseInt(cross_marqueex.style.top)-copyspeedx+"px"
else
cross_marqueex.style.top=parseInt(marqueeheightx)+8+"px"
}

function initializemarqueex(){
cross_marqueex=document.getElementById("vmarqueex")
cross_marqueex.style.top=0
marqueeheightx=document.getElementById("marqueecontainerx").offsetHeight
actualheightx=cross_marqueex.offsetHeight
if (window.opera || navigator.userAgent.indexOf("Netscape/7")!=-1){
cross_marqueex.style.height=marqueeheightx+"px"
cross_marqueex.style.overflow="scroll"
return
}
setTimeout(\'lefttime=setInterval("scrollmarqueex()",30)\', delayb4scrollx)
}

if (window.addEventListener)
window.addEventListener("load", initializemarqueex, false)
else if (window.attachEvent)
window.attachEvent("onload", initializemarqueex)
else if (document.getElementById)
window.onload=initializemarqueex

</script>';

echo '<table width="100%">
<tr>
<td align="center">

</td>
</tr>
</table>
<div id="marqueecontainerx" style="position: relative; width: 95%; height:250px; overflow: hidden; border: 0px; padding: 2px; padding-left: 4px;" onmouseover="copyspeedx=pausespeedx" onmouseout="copyspeedx=marqueespeedx">
<div id="vmarqueex" style="position: absolute; width: 98%;">
<div align="center">
<a href="',$scripturl,'?action=arcade;sa=play;game=',$game_id,'"><img src="',$game_pic,'" border="0" alt="',$game_name,'" width="60" height="60"/></a>
<br />',$txtlate,'<br />
<a href="',$scripturl,'?action=profile;u=',$playerid,'">',$player,'</a>
<br/>',$txtwit,' ',$score,' ',$txton,'<br />',$game_name,'
<br />------------------<br />',$txtplay,'<br /><br />';
foreach ($bp as $out)
{
$score_poss++;
echo '',$score_poss,' - ',$out['link'],'<br />',$txtwin,' ',$out['champions'],'
     <br /><br />';
};
echo '</div>
</div>
</div>';

//---------END--------------
$memberContext = array();
echo'</td></tr>
</table>';


Regards,

Wilsy.

This website is proudly hosted on Crocweb Cloud Website Hosting.