PDA

View Full Version : Help with Basic Module


Tbird66
12-21-2004, 03:32 AM
Noob here trying to create a module that will output the usernames of all members of usergroupid = 9 who joined within the past 60 days.

I created the following:

newmembers.php (saved in modules dir):

<?php
$new_members = array();

$new_members_res = $DB_site->query("
SELECT user.userid, user.username, DATE(FROM_UNIXTIME(user.joindate)) AS jdate, userfield.field6 AS name
FROM " . TABLE_PREFIX . "user AS user
JOIN " . TABLE_PREFIX . "userfield AS userfield
ON user.userid = userfield.userid
WHERE DATEDIFF(CURDATE(), FROM_UNIXTIME(joindate))<= 60 AND usergroupid = 9
ORDER BY name ASC
");

while($new_mem = $DB_site->fetch_array($new_members_res))
eval('$new_members[\'new_mem\'] .= "' . fetch_template('adv_portal_newmembersbits') . '";');
$DB_site->free_result($new_members_res);

eval('$home[$mods[\'modid\']][\'content\'] = "' . fetch_template('adv_portal_newmembers') . '";');
?>


adv_portal_newmembers template:

<table align="center" border="0" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" class="tborder" width="100%">
<tr>
<td class="tcat"><span class="smallfont"><b>$vba_options[portal_blockbullet] New Club Members</b></span></td>
</tr>
<tr>

<td class="$getbgrow" width="100%">

<!-- Begin custom code -->
Welcome to our new members who joined in the past 2 months!</br></br>
$new_members[new_mem]
<!-- End custom code -->

</td>
</tr>
</table>
<br />


adv_portal_newmembersbits template:

li><span class="smallfont">$new_mem[name] <a href="member.php?u=$new_mem[userid]">$new_mem[username]</a> $new_mem[jdate]</span></li>

in vBa CMPS added new module:

Module Title: New Club Members
Module Identifier:
File to Include: newmembers.php
Active: Yes
Column: Center
Display Order: 2
Templates Used: adv_portal_newmembers, adv_portal_newmembersbits
Usergroups: All marked

When open my vBadvanced portal, all the correct data is displayed, but the 3 colmuns are seperated by only 1 space.

How do I output the data with headers (Name, User Name, Join Date) and seperation between columns?

Thanks!

Tbird66
12-21-2004, 06:02 PM
I changed my templates, so now I have the following:

newmembers.php (saved in modules dir):

<?php
$new_members = array();

$new_members_res = $DB_site->query("
SELECT user.userid, user.username, DATE(FROM_UNIXTIME(user.joindate)) AS jdate, userfield.field6 AS name
FROM " . TABLE_PREFIX . "user AS user
JOIN " . TABLE_PREFIX . "userfield AS userfield
ON user.userid = userfield.userid
WHERE DATEDIFF(CURDATE(), FROM_UNIXTIME(joindate))<= 60 AND usergroupid = 9
ORDER BY name ASC
");

while($new_mem = $DB_site->fetch_array($new_members_res))
eval('$new_members[\'new_mem\'] .= "' . fetch_template('adv_portal_newmembersbits') . '";');
$DB_site->free_result($new_members_res);

eval('$home[$mods[\'modid\']][\'content\'] = "' . fetch_template('adv_portal_newmembers') . '";');
?>

adv_portal_newmembers template:

<table align="center" border="0" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" class="tborder" width="100%">
<tr>
<td class="tcat"><span class="smallfont"><b>$vba_options[portal_blockbullet] New Club Members (joined in last 60 days)</b></span></td>
</tr>
</table>
<table align="center" border="0" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" class="tborder" width="100%">
<tr>
<td class="thead" width="33%"><span class="smallfont">Name</span></td>
<td class="thead" width="33%"><span class="smallfont">User Name</span></td>
<td class="thead" width="33%"><span class="smallfont">Join Date</span></td>
$members[new_mem]
</tr>
</table>
<br />

adv_portal_newmembersbits template:

<tr>
<td class="$getbgrow">
<div class="smallfont">$new_mem[name]</div>
<div class="smallfont"><a href="member.php?u=$new_mem[userid]">$new_mem[username]</a></div>
<div class="smallfont">$new_mem[jdate]</div>
</td>
</tr>

When open my vBadvanced portal, the module appears with it's title - New Club Members (joined in last 60 days) - and 3 nicely spaced columns - Name, User Name, and Join Date - but no data.

Can someone please tell me what I need to fix? If I can get this one down I won't have to bug ya next time :D

Thanks!

Our Sponsors
 

Brian
12-21-2004, 06:18 PM
In your file you have:

eval('$new_members[\'new_mem\']


Then in your template you have:
$members[new_mem]

See the problem? ;)

Tbird66
12-21-2004, 06:33 PM
Ok, we're getting close. In newmembers.php I replaced
eval('$new_members[\'new_mem\']
with
eval('$new_members[new_mem]

and I changed my template to use $new_members[new_mem]

now I get data, but for each row all 3 data elements appear under the first column heading (Name)...

Our Sponsors
 

Brian
12-21-2004, 06:34 PM
That line needs to be $members[new_mem]

Tbird66
12-21-2004, 06:40 PM
Sorry, I was editing my post as you responded. I changed the variables in both the php file and the template to $members and now I get data, just all in 1 column...

Brian
12-21-2004, 06:50 PM
See if this makes any difference...
<?php

$new_members_res = $DB_site->query("
SELECT user.userid, user.username, DATE(FROM_UNIXTIME(user.joindate)) AS jdate, userfield.field6 AS name
FROM " . TABLE_PREFIX . "user AS user
JOIN " . TABLE_PREFIX . "userfield AS userfield
ON user.userid = userfield.userid
WHERE DATEDIFF(CURDATE(), FROM_UNIXTIME(joindate))<= 60 AND usergroupid = 9
ORDER BY name ASC
");

while($new_mem = $DB_site->fetch_array($new_members_res))
{
eval('$members .= "' . fetch_template('adv_portal_newmembersbits') . '";');
}
$DB_site->free_result($new_members_res);

eval('$home[$mods[\'modid\']][\'content\'] = "' . fetch_template('adv_portal_newmembers') . '";');

?>

Tbird66
12-21-2004, 07:31 PM
The new php file didn't make a difference, although yours is cleaner syntax. The problem was in my adv_portal_newmembersbits template.

I changed it from
<tr>
<td class="$getbgrow">
<div class="smallfont">$new_mem[name]</div>
<div class="smallfont"><a href="member.php?u=$new_mem[userid]">$new_mem[username]</a></div>
<div class="smallfont">$new_mem[jdate]</div>
</td>
</tr>

to

<tr>
<td class="$getbgrow">$new_mem[name]</td>
<td class="$getbgrow"><a href="member.php?u=$new_mem[userid]">$new_mem[username]</a></td>
<td class="$getbgrow">$new_mem[jdate]</td>
</tr>

and now everything works as expected. Dunno if it's clean, optimized, etc...

Thanks for the assistance!