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

Recent

Welcome to TinyPortal. Please login or sign up.

April 25, 2024, 08:10:02 PM

Login with username, password and session length
Members
  • Total Members: 3,885
  • Latest: Growner
Stats
  • Total Posts: 195,173
  • Total Topics: 21,219
  • Online today: 299
  • Online ever: 3,540 (September 03, 2022, 01:38:54 AM)
Users Online
  • Users: 0
  • Guests: 306
  • Total: 306

[Block] members with the most "posts per day"?

Started by adirisman, April 25, 2009, 11:41:25 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

adirisman

Hi,

Is there any way to show 10 members with the most "posts per day" in a block?

thanks.

G6Cad

Did you check the block code and snippets board ?

JPDeni

#2
I haven't seen anything like that before.

In answer to your question, yes, there is. It would be something like this:


global $db_prefix;
$result = db_query("
SELECT (posts / ( ( UNIX_TIMESTAMP( ) - dateRegistered ) / ( 3600 *24 ) )) AS ppd, realName
FROM {$db_prefix}members
ORDER BY ppd DESC
LIMIT 10", __FILE__, __LINE__);

while ($row = mysql_fetch_assoc($result))
echo $row['realName'] . ' ' . $row['ppd'] . '<br />';
mysql_free_result($result);


This would go into a php block.

adirisman


JPDeni

Cool!  8)

That was a pretty easy one. It was just a matter of looking in the code to see how the posts per day were computed and then putting the same function in the query and letting MySQL do it. I learned something when doing it, too, because I'd never worked with a function in a query before. It opens up a lot of other possibilities.

This was one that was easy to test, too, so it wasn't nearly the problem that I have with other requests. I'm glad I was able to give you something you can use.  :)

alhaudhie

how about top poster today.... with the number of posts?

JPDeni

When does "today" start? GMT? Server time? Forum time? User's time?

There's just too many possibilities.

alhaudhie

oh... tq for reply  :up: :up: ... but i thing a have got it in other topic like

global $db_prefix, $scripturl, $memberContext, $txt, $modSettings;
$maxlength=20;

// $starttime = strtotime('24 hours ago'); //posters laatste 24 uur
$starttime = mktime(0, 0, 0, date('m'), date('d'), date('Y')); //posters vandaag
$list_count = 10;

$poster = array();

$request = db_query("
SELECT  m.ID_MEMBER, COUNT(m.ID_MEMBER) as postCount
FROM ({$db_prefix}messages AS m, {$db_prefix}topics AS t, {$db_prefix}boards AS b)
WHERE m.posterTime > " . $starttime . "
AND t.ID_TOPIC = m.ID_TOPIC
AND b.ID_BOARD = t.ID_BOARD" . (!empty($modSettings['recycle_enable']) &&

$modSettings['recycle_board'] > 0 ? " AND b.ID_BOARD != $modSettings[recycle_board]" : '') . "
GROUP BY m.ID_MEMBER
ORDER BY postCount DESC LIMIT " . $list_count, __FILE__, __LINE__);

while ($row = mysql_fetch_assoc($request))
{
    loadMemberData(array($row['ID_MEMBER']));
    loadMemberContext($row['ID_MEMBER']);
$membername = (strlen($memberContext[$row['ID_MEMBER']]['name']) > $maxlength) ?

substr($memberContext[$row['ID_MEMBER']]['name'],0,$maxlength) : $memberContext[$row['ID_MEMBER']]['name'];
$poster[$row['ID_MEMBER']] = array (
  'id' => $row['ID_MEMBER'],
  'count' => $row['postCount'],
  'link' => '<a href="' . $scripturl . '?action=profile;u=' . $row['ID_MEMBER'] . '" title="' . $txt[92] . ' ' .

$memberContext[$row['ID_MEMBER']]['name'] . '">' . '<font color="' .

$memberContext[$row['ID_MEMBER']]['group_color'] . '">' . $membername . '</font>' . '</a>' );
}
mysql_free_result($request);

echo '<table width=100%>';
foreach($poster as $top_user)
{
echo '<tr>
      <td align="left" width=100%>' . $top_user['link'] . '</td>
      <td align="left">| '. $top_user['count'] . '</td>
      </tr>';
}
echo '</table>';

JPDeni

That would be server time.

I guess you don't need the code, then, because already found it.

Mick

JPDeni,   its crazy how you can whip-up codes in a jiff.

Very cool.  Thanx.