Log in

View Full Version : latest user


hollyboy
05-27-2005, 09:09 AM
Hi,

I'd like to display the latest 5 users who registered to my forum.
What do I have to edit please?

Thanks :)

any help?

Adrian Schneider
05-28-2005, 02:43 AM
Where do you want it displayed?
Off the top of my head, place something like in the file you want it:


$newestmembers = $DB_site->query("
SELECT userid, username
FROM user
ORDER BY userid DESC
LIMIT 5
");
$shownewest=$DB_site->fetch_array($newestmembers))
{
$counter++;
$newuserid = $shownewest['userid'];
$newusername = $shownewest['username'];
$newestbit .= "<a href=\"member.php?u=$newuserid\">$newusername</a>";
if ($counter < 5)
{
$newestbit .= ", ";
}
}

Then place $newestbit in your template where you want it (it will list the last 5 users seperated by commas).

ericgtr
05-28-2005, 03:15 AM
I think if you are going to use query instead of query_first you need to use 'while' like this:


$newestmembers = $DB_site->query("
SELECT userid, username
FROM user
ORDER BY userid DESC
LIMIT 5
");
while ($shownewest=$DB_site->fetch_array($newestmembers))
{
$counter++;
$newuserid = $shownewest['userid'];
$newusername = $shownewest['username'];
$newestbit .= "<a href=\"member.php?u=$newuserid\">$newusername</a>";
if ($counter < 5)
{
$newestbit .= ", ";
}
}

N8
05-28-2005, 03:33 AM
I'm trying to add the joindate to this, but I'm not sure how format it to display.

heres the code:

$newestmembers = $DB_site->query("
SELECT userid, username, joindate
FROM user
ORDER BY userid DESC
LIMIT 20
");
while ($shownewest=$DB_site->fetch_array($newestmembers))
{
$counter++;
$newuserid = $shownewest['userid'];
$newusername = $shownewest['username'];
$newuserjoin = $shownewest['joindate'];

$newestbit .= "<a href=\"member.php?u=$newuserid\">$newusername</a> ($newuserjoin)";
if ($counter < 20)
{
$newestbit .= "<br /> ";
}
}


and heres what gets displayed:

Blue[sK] (1117254613)
ebad (1117254372)
123qwe (1117254139)
pointvu (1117253360)
lilbudbud03 (1117252790)
tugger9709 (1117252356)
TheCraftMaster10 (1117252283)
sonnie (1117251372)
hellohellorex (1117251360)
waterfall2cold (1117250130)
LonLey (1117249889)
eN.Banged (1117249323)
cornpops (1117248783)
mokodoko (1117248778)
pimpsta123 (1117248764)
g4it (1117248533)
ace2255 (1117248231)
thaphantomone (1117248186)
Masta-killa (1117248057)
aqz (1117247951)


Any ideas?

Adrian Schneider
05-28-2005, 04:00 AM
You need to convert the time stamps. :)
Add something like
$joindate = date("F d @ g:i A T",$shownewest['joindate']);
You can change the format easily enough (look here: http://ca3.php.net/date)



@eric: typo:(

amykhar
05-28-2005, 04:27 AM
Another thing you may want to consider is to cache this info in the datastore to save on queries.

Amy

hollyboy
05-28-2005, 06:53 AM
Where do you want it displayed?



I want it to be displayed in the index.php so what code do I have to eliminate?
Thanks

RapCapital
05-29-2005, 12:52 AM
I recomend installing the Stats Hack

Paul M
05-29-2005, 05:58 PM
I recomend installing the Stats HackSlight overkill for just the last 5 members. :)

Adrian Schneider
05-29-2005, 07:05 PM
Here's the updated one with datastore

index.php:
Find:
// ### ALL DONE! SPIT OUT THE HTML AND LET'S GET OUTA HERE... ###
Above it, add:

// Show 5 Newest Members //
$numbermembers = vb_number_format($userstats['numbermembers']);

$newestmembers = unserialize($datastore['newestmembers']);
foreach ($newestmembers as $two)
{
$counter++;
$newuserid = $two['userid'];
$newusername = $two['username'];
$newestbit .= "<a href=\"member.php?$session['sessionurl']u=$newuserid\">$newusername</a>";
if ($counter < 5)
{
$newestbit .= ", ";
}
}
// END Show 5 Newest Members //


Find: (in $specialtemplates)
'eventcache',
'mailqueue'

Replace it with:

'eventcache',
'mailqueue',
'newestmembers'

In the FORUMHOME TEMPLATE, find:
<div><phrase 1="member.php?$session[sessionurl]u=$newuserid" 2="$newusername">$vbphrase[welcome_to_our_newest_member_x]</phrase></div>
Replace it with:
<div>Welcome to our newest members, $newestbit </div>

Cron file:
(newestmemberscron.php - put in /includes/cron)

<?php

error_reporting(E_ALL & ~E_NOTICE);

if (!is_object($DB_site))
{
exit;
}

$newestmembers = $DB_site->query("
SELECT userid, username
FROM user
ORDER BY userid DESC
LIMIT 5
");
while($newestmemberss=$DB_site->fetch_array($newestmembers))
{ $counter++;
echo $counter;
$array[$counter] = $newestmemberss;
}

$fivenewestmembers = addslashes(serialize($array));

// Update DataStore
$check = $DB_site->query("
SELECT *
FROM datastore
WHERE title='newestmembers'
");
if ($DB_site->num_rows($check) == 0)
{
$insertdatastore = $DB_site->query("
INSERT INTO datastore
(title, data)
VALUES ('newestmembers', '$fivenewestmembers')
");
}
elseif ($DB_site->num_rows($check) != 0)
{
$updatedatastore = $DB_site->query("
UPDATE datastore
SET data='$fivenewestmembers'
WHERE title='newestmembers'
");
}



?>

Be sure to add that file to scheduled tasks, and set the run date as often as you'd like (probably an hour to a day, up to you).

.. first time having to use datastore, hopefully it's somewhat right. :)

Paul M
05-29-2005, 09:23 PM
Wouldn't it make more sense to update it when a new member registers, rather then a cron job ?

Adrian Schneider
05-29-2005, 09:59 PM
Probably But what does sense have to do with anything I do? ;)

Paul M
05-29-2005, 10:33 PM
Probably But what does sense have to do with anything I do? ;)Um.............

Point taken. :)

Kihon Kata
05-30-2005, 02:41 PM
I recomend installing the Stats Hack
I have the stats hack installed, but do not see where this is available in there. I see top 10 posters for users, but that is it...