in my php,
while($info3 = mysql_fetch_array($result3)){
$Name = $info3["Name"];
$Address = $info3["Address"];
$Age = $info3["Age"];
// -----------------------------------------------------------------------------
$tbl = '
<table style="width: 638px;" cellspacing="0">
<tr>
<td style="border: 1px solid #000000; width: 150px;">'.$Name.'</td>
<td style="border: 1px solid #000000; width: 378px;">'.$Age.'</td>
<td style="border: 1px solid #000000; width: 110px; text-align:center">'.$Address.'</td>
</tr>
</table>
';
$pdf->writeHTML($tbl, true, false, false, false, '');
}
Prints the whole table always in my pdf. But I want to print <table>
and </table>
for a single instance and then want to loop printing the rows in between. How can I solve this??
$tbl_header = '<table style="width: 638px;" cellspacing="0">';
$tbl_footer = '</table>';
$tbl = '';
// foreach item in your array...
$tbl .= '
<tr>
<td style="border: 1px solid #000000; width: 150px;">'.$Name.'</td>
<td style="border: 1px solid #000000; width: 378px;">'.$Age.'</td>
<td style="border: 1px solid #000000; width: 110px; text-align:center">'.$Address.'</td>
</tr>
';
$pdf->writeHTML($tbl_header . $tbl . $tbl_footer, true, false, false, false, '');
If what you mean is you want one table that includes all the results as rows, only loop the row printing and migrate the opening and closing tags outside the loop.
$tbl = '<table style="width: 638px;" cellspacing="0">';
while($info3 = mysql_fetch_array($result3)){
$Name = $info3["Name"];
$Address = $info3["Address"];
$Age = $info3["Age"];
$tbl .= '<tr>
<td style="border: 1px solid #000000; width: 150px;">'.$Name.'</td>
<td style="border: 1px solid #000000; width: 378px;">'.$Age.'</td>
<td style="border: 1px solid #000000; width: 110px; text-align:center">'.$Address.'</td>
</tr>'
}
$tbl .= '</table>';
$pdf->writeHTML($tbl, true, false, false, false, '');
I would certainly do something like this:
$table = '<table style="width: 638px;" cellspacing="0">%s</table>'
$tr = '
<tr>
<td style="border: 1px solid #000000; width: 150px;"> %s</td>
<td style="border: 1px solid #000000; width: 378px;"> %s</td>
<td style="border: 1px solid #000000; width: 110px; text-align:center">%s</td>
</tr>
';
while($info3 = = mysql_fetch_array($result3)){
$trs[] = sprintf($tr, $info3["Name"], $info3["Age"], $info3["Address"]);
}
$tbl = sprintf($table, implode( $trs ));
$pdf->writeHTML($tbl, true, false, false, false, '');
If you can't organize your presentation layer with templates at least make it as separated as you can from the actual logic.
You can read about sprintf here and implode here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With