I'm developing my own groups module. I've got a mysql table with group members (with a group id column and a member id column), and a group info mysql table with all the information regarding each group. I want to output a table with the name, date created, and number of members for each group. I also want to be able to sort on each of the headings. I got everything working, but I don't like the way the member count works. The problem is that the number of members is updated AFTER it's sorted. Can anybody please suggest a better way?
Here's what I have:
<?php
function group_groups_home()
{
$sql = "SELECT group_info.gid, group_info.title, group_info.nid, group_info.created, group_info.members FROM (group_info)";
$header = array(
array('data' => t('Group Name'), 'field' => 'title', 'width' => '100%'),
array('data' => t('Created'), 'field' => 'created', 'align' => 'center'),
array('data' => t('Members'), 'field' => 'members', 'align' => 'center')
);
$rows = array();
$sql .= tablesort_sql($header);
$result = pager_query($sql, 20);
while ($group = db_fetch_object($result)) {
// I don't like the way this is done, but this is the only way I could figure out how to sort by membercount
$membercount = mysql_num_rows(db_query("SELECT * FROM (group_members) WHERE group_members.gid = '%d'", $group->gid));