TCPDF - print table from mysql

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, ''); } 

Always prints the entire table in my pdf. But I want to print <table> and </table> for one instance, and then program to print the lines between them. How can I solve this problem?

+6
php tcpdf
source share
4 answers
 $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, ''); 
+10
source share

If you mean that you need one table that includes all the results as rows, just loop the row print and move 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, ''); 
+2
source share

I would definitely 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 cannot organize your presentation layer using templates, at least make it as separate as possible from the actual logic.

You can read about sprintf here and implode here

+1
source share
 $tbl = '<table style="width: 638px;" cellspacing="0">'; while($info3 = mysql_fetch_array($result3)){ $Name = $info3["Name"]; $Address = $info3["Address"]; $Age = $info3["Age"]; // ----------------------------------------------------------------------------- $tbl = $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 = $tbl . '</table>'; $pdf->writeHTML($tbl, true, false, false, false, ''); 
0
source share

All Articles