Hi,
Is there any way to show 10 members with the most "posts per day" in a block?
thanks.
Did you check the block code and snippets board ?
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.
wow.. thanks...
that works.
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. :)
how about top poster today.... with the number of posts?
When does "today" start? GMT? Server time? Forum time? User's time?
There's just too many possibilities.
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>';
That would be server time.
I guess you don't need the code, then, because already found it.
JPDeni, its crazy how you can whip-up codes in a jiff.
Very cool. Thanx.
I was wondering if someone could tell me why neither of the codes above work for me when I try to apply this as a center block in my memberlist from the custom action.
EDIT: I figured it out. It was turned off(hidden in memberlist) in the settings.
Another question now. I used the second code in this topic and was wondering if someone could tell me how to add horizontal rule to separate the users.
The printout on the second code is here:
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>';
You have two choices. Either you can remove the table formatting and add one hr or you can add two hrs -- one to each table cell. Either way, it's just basic html.
echo '<table width=100%>';
foreach($poster as $top_user)
{
echo '<tr>
<td align="left" width=100%>' . $top_user['link'] . '<hr /></td>
<td align="left">| '. $top_user['count'] . '<hr /></td>
</tr>';
}
echo '</table>';
or
foreach($poster as $top_user)
{
echo '$top_user['link'] . ' | '. $top_user['count'] . '<hr />';
}
Sorry. Is this added in the html or php blocks?
Quote from: WBA Dude on June 14, 2009, 09:19:13 AM
Sorry. Is this added in the html or php blocks?
Give it a try both ways to see what works, that way you don't have to wait for an answer. :up:
php
thanks
Take a look at the code. If it includes echo in it anywhere, it's php code.
Okay. Not as good with php :)
Thanks
For some reason I have a hard time getting PHP codes to work. I tride this and it won't work for me. I would love to have this block. Any hints on what I did wrong. I copied and pasted the code into a PHP Code block. Made sure my members were checked and hit save and then activated it. What else would I need to do?
I'm running TinyPortal v1.0 beta 3 Ã,© Bloc Powered by SMF 1.1.10 | SMF Ã,© 2006-2009, Simple Machines LLC
QuoteAny hints on what I did wrong.
Only if you tell us what "won't work" means. Are you getting an error message? A blank block? No block at all? Strange letters?