Search code examples
arraysperltemplate-toolkitmultiple-columns

want to display arrays of data in table using template file in perl


I have different arrays of data stored from my SQL :

push( @bugid,$bug_id);
push(@assign,$assignd_to);
push(@stat,$stats);
push(@res,$resol);
push(@rat,$rate);
push(@sev,$prior);
push(@op,$o_p);
push(@shrt,$shor_desc);

 $vars->{'bugid'}= \@bugid;
 $vars->{'Ticket'}= $ticket_no;
 $vars->{'Assigne'}= \@assign;
 $vars->{'stats'}= \@stat;
 $vars->{'resoltion'}= \@res;
 $vars->{'rate'}= \@rat;
 $vars->{'priorty'}= \@sev;
 $vars->{'opsys'}= \@op;
 $vars->{'shrtdesc'}= \@shrt;

And i have passed this to a template file for displaying purpose like below :

$template->process('reports/gayathri_old-ticketlist.html.tmpl', $vars)
     || ThrowTemplateError($template->error());

And i want to display the details in a table . ie, corresponding to each bugid, i want to display all other fields.

I have added the code like this in template file.i got the table format.but the values are entering into each column in a wrong manner.

<table border='1' bgcolor='#eefff3'>

<tr><td><b>BUG ID</b></td>
<td><b>TICKET NO</b></td>
<td><b>ASSIGNED TO</b></td>
<td><b>BUG STATUS</b></td>
<td><b>RESOLUTION</b></td>
<td><b>RATING</b></td>
<td><b>PRIORITY</b></td>
<td><b>OP-SYS</b></td>
<td><b>SHORT DESCRIPTION</b></td></tr>
[% FOREACH Assigne  = Assigne %]
[% FOREACH stats = stats %]
[% FOREACH resoltion = resoltion %]
[% FOREACH rate = rate %]
[% FOREACH priorty = priorty %]
[% FOREACH opsys = opsys  %]
[% FOREACH shrtdesc = shrtdesc %]
[% FOREACH bugid  = bugid %]

<tr>
  <td>
      &nbsp; <A HREF="show_bug.cgi?id=[% bugid %]"> [% bugid %] </A><br>
  </td>

  <td>
     &nbsp;  [% Ticket %]
 </td>

 <td>
     &nbsp;  [% Assigne %]
 </td>

  <td>
     &nbsp;  [% stats %]
  </td>
  <td>

    &nbsp;  [% resoltion %]

  </td>
   <td>

    &nbsp;  [% rate %]

   </td>
   <td>

    &nbsp;  [% priorty %]

   </td>
   <td>

    &nbsp;  [% opsys %]

   </td>
    <td>

     &nbsp;  [% shrtdesc %]

    </td>
</tr>
  [% END %]
 [% END %]
   [% END %]
   [% END %]
  [% END %]
   [% END %]
   [% END %]
    [% END %]
   </table>

could any one please correct this?


Solution

  • my @items;
    while(my($bug_id,$icket_no,$assignd_to,$stats,$resol,$rate,$prior,$o_p,$shor_desc)
    =$sth->fetchrow_array()) {
    my $item = {
    bugid => $bug_id,
    ticket => $icket_no,
    assign_to => $assignd_to,
    status => $stats,
    resolution => $resol,
    priority => $prior,
    opsys => $o_p,
    shortdesc => $shor_desc,
    };
    push(@items, $item);
    }
    $vars-> {items} = \@items;
    

    Then passed to template file,

    $template->process('reports/gayathri_old-ticketlist.html.tmpl', $vars)
     || ThrowTemplateError($template->error());
    

    Then in the template file :

    <b>Bugs Corresponding to ticket no :[% item.ticket %]</b><br>
    <br>
    
    <table border='1' bgcolor='#eefff3'>
    
      <tr><td><b>BUG ID</b></td>
     <td><b>TICKET NO</b></td>
      <td><b>ASSIGNED TO</b></td>
      <td><b>BUG STATUS</b></td>
     <td><b>RESOLUTION</b></td>
     <td><b>RATING</b></td>
     <td><b>PRIORITY</b></td>
     <td><b>OP-SYS</b></td>
     <td><b>SHORT DESCRIPTION</b></td></tr>
    
     [%- FOREACH item in items -%]
     <tr>
        <td>
            <a href="show_bug.cgi?id=[% item.bugid %]"> [%  item.bugid %] </a><br>
            &nbsp; [% item.ticket %]<br/>
             &nbsp; [% item.assign_to %] <br/>
             &nbsp; [% item.status %] <br/>
             &nbsp; [% item.resolution %] <br/>
             &nbsp; [% item.priority %] <br/>
            &nbsp; [% item.opsys %] <br/>
            &nbsp; [% item.shortdesc %] <br/>
    
          </td>
      </tr>
       [%- END -%]
    
    </table>
    
     [% PROCESS global/footer.html.tmpl %]
    

    But is is providing a blank page