Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: HTML::Template if key of hash matches value of hash.

by moritz (Cardinal)
on Mar 31, 2013 at 15:16 UTC ( #1026366=note: print w/ replies, xml ) Need Help??


in reply to HTML::Template if key of hash matches value of hash.

The trick is to add some more logic to your perl code:

my $has_approved_records = 0; my $reqs; while (my $row = $sth->fetchrow_arrayref) { $has_approved_records 1 = if $row->{status} eq 'Approved'; push @$reqs, $row; } ... $template->param(REQS => $reqs, HAS_APPROVED_RECORDS => $has_approved_ +records);

And in the template

<TMPL_IF HAS_APPROVED_RECORDS> <span class="hotspot" onmouseover="tooltip.show('<strong>Approved +Vacation Requests</strong><br /><TMPL_VAR DATE>');" onmouseout="toolt +ip.hide();"> </TMPL_IF>


Comment on Re: HTML::Template if key of hash matches value of hash.
Select or Download Code
Re^2: HTML::Template if key of hash matches value of hash.
by walkingthecow (Friar) on Apr 02, 2013 at 06:41 UTC
    While not exactly what I was looking for (my fault for lacking clarity in my post), your reply was very helpful. Thank you. I will be sure to post my code when I figure it out. I figured a break was what was needed to solve this issue.
      Just wanted to post my code as an update on how I did this in case anyone is ever interested in the same thing: The trick was in my SQL statement...
      my $sth = $dbh->prepare( " select t.id,t.user,t.email,t.status,t.date,t.req_date, ( SELECT GROUP_CONCAT( (case when status = 'Approved' then user + end) separator ', ') FROM requests s WHERE s.date = t.date) AS approved FROM requests t WHERE status = 'Pending' AND req_email = '$email' AND date >= '$date' ORDER BY employee,date " ); $sth->execute(); my $reqs; push @{$reqs}, $_ while $_ = $sth->fetchrow_hashref(); my $template = HTML::Template->new( filename => 'approve.html' + ); $template->param( REQS => $reqs, ); print $template->output();
      And here's my template code:
      <TMPL_IF REQS> <form> <table class=approve> <tr> <th class=approve>Approve</th> <th class=approve>Decline</th> <th class=approve>Date</th> <th class=approve>Employee</th> <th class=approve>Status</th> <th class=approve>Request Date</th> </tr> <TMPL_LOOP NAME=REQS> <tr class=approve> <td class=approve><input type=radio name=apid<TMPL +_VAR NAME=ID> value=Approved></td> <td class=approve><input type=radio name=apid<TMPL +_VAR NAME=ID> value=Declined></td> <td class=approve> <TMPL_IF NAME=APPROVED> <span class="hotspot" onmouseover="tooltip +.show('<strong>Approved Vacation Requests</strong><br /><TMPL_VAR NAM +E=APPROVED>');" onmouseout="tooltip.hide();"> </TMPL_IF> <TMPL_VAR NAME=DATE> <TMPL_IF NAME=APPROVED> </span> <script type="text/javascript" language="j +avascript" src="js/script.js"></script> </TMPL_IF> </td> <td class=approve><TMPL_VAR NAME=USER></td> <td class=approve><TMPL_VAR NAME=STATUS></td> <td class=approve><TMPL_VAR NAME=REQ_DATE></td> <input type=hidden value=<TMPL_VAR EMAIL> name=emp +_email<TMPL_VAR NAME=ID>> <input type=hidden value=<TMPL_VAR EMPLOYEE> name= +emp_name<TMPL_VAR NAME=ID>> <input type=hidden value=<TMPL_VAR DATE> name=date +<TMPL_VAR NAME=ID>> </tr> </TMPL_LOOP> <tr class=approve> <th class=approve colspan=6> <input type=submit value="Approve / Decline"> <input type=hidden value=process name=state> </th> </tr> </table> </form> <TMPL_ELSE> <br /><b>There are no pending requests!</b><br /> </TMPL_IF>

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1026366]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (5)
As of 2014-09-23 01:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (210 votes), past polls