Andy wrote:
HI, Not quite as simple as that =)
You need something like this: (it WON'T sort by age, I tried - but couldn't get it working)
Code:
sub { use GT::SQL;
use lib '/path/to/secure_data/lib';
my $NEWDB = new GT::SQL (
def_path => '/path/to/secure_data/defs',
cache => 0,
debug => 0,
subclass => 0
);
my $db = $NEWDB->table('comm_users');
$db->select_options( "GROUP BY prof_birthday","ORDER BY dob_count DESC");
my $sth = $db->select("prof_birthday", "COUNT(*) as dob_count") or die "Query Error: $GT::SQL::error";
my $current = GT::Date::date_get();
my @current = split /-/, $current; # $current[0]
my $ages;
my $back;
while (my ($s, $c) = $sth->fetchrow_array) {
if ($s !~ /^(19|20)\d\d-/) { next; }
my @date = split /-/, $s; # yyyy-mm-dd
my $age = $current[0] - $date[0]; # age of person looking at
if ($ages->{$age}) { $ages->{$age} += 1; } else { $ages->{$age} = 1;}
}
my @entries;
map {
push @entries, { Age => $_, Count => $ages->{$_} }
} sort keys %$ages;
return { age_loop => \@entries }
}
Then call with:
Code:
<%global_name%> <ul>
<%loop age_loop%>
<li><%Age%> - <%Count%></li>
<%endloop%>
</ul>
Hi Andy,
this global works fine, but I have some wrong entries in my database.
The global prints out this wrong user entries.
So I have users with the age of 108 and 3, 4 and 5 ;-)
Is there a way to print out only entries between the age of 18 and 80 ? to prevent wrong outputs?
Thanks
Matthias
Matthias
gpaed.de