帮助PHP数组(EZPDF)

时间:2011-06-15 15:26:57

标签: php arrays

我正在尝试使用ezpdf将mysql数据输出到pdf。我已经成功生成了报告的第一部分,但第二部分有很多专栏,当然也不会在整个页面中生成。下图可能会解释我正在尝试做什么。

当前布局示例:


| --- 标题 - | ---的 HEADER2 - | ---的 HEADER3 - | --- HEADER4 - | ---的 HEADER5 - |

| USERNAME1 | DATAFIELD1 | DATAFIELD2 | DATAFIELD3 | DATAFIELD3 |

| USERNAME2 | DATAFIELD1 | DATAFIELD2 | DATAFIELD3 | DATAFIELD3 |

| USERNAME3 | DATAFIELD1 | DATAFIELD2 | DATAFIELD3 | DATAFIELD3 |


我正在努力完成的例子:


| ----的头1 --- | ---的 HEADER2 --- |

| USERNAME1 | DATAFIELD1 |

| ---的 HEADER3 --- | ---的 HEADER4 --- | ---的 HEADER5 --- | < / p>

| DATAFIELD2 | DATAFIELD3 | DATAFIELD4 |


| ----的头1 --- | ---的 HEADER2 --- |

| USERNAME2 | DATAFIELD1 |

| ---的 HEADER3 --- | ---的 HEADER4 --- | ---的 HEADER5 --- | < / p>

| DATAFIELD2 | DATAFIELD3 | DATAFIELD4 |


| ----的头1 --- | ---的 HEADER2 --- |

| USERNAME3 | DATAFIELD1 |

| ---的 HEADER3 --- | ---的 HEADER4 --- | ---的 HEADER5 --- | < / p>

| DATAFIELD2 | DATAFIELD3 | DATAFIELD4 |


我希望这是有道理的。如果有人能提供帮助,我们将非常感激。

以下是我的测试代码

test code

3 个答案:

答案 0 :(得分:0)

实际上,如果你没有保留旧代码,我建议你使用TCPDF从php生成PDF,它提供了很多功能。例如,在没有问题的情况下将html转换为PDF代码。

在这种情况下,您可以创建html表,然后像this示例

中那样转换它们

编辑 - 在TCPDF中你必须非常小心你如何标记你的表:从你的链接我看到你的标记中的错误。您要创建的表应该是这样的:

$tbl = '
<table border="1" cellpadding="2" cellspacing="2">
<thead>
 <tr style="background-color:#FFFF00;color:#0000FF;">
  <td align="center"><b>USERNAME</b></td>
  <td align="center"><b>LASTNAME</b></td>
  <td align="center"><b>FIRSTNAME</b></td>
 </tr>
</thead>
<tbody>
  <tr style="background-color:#FF0000;color:#FFFF00;">
     <td align="left">' .$username. '</td>
     <td></td>
     <td></td>
  </tr>
</tbody>
</table>
';

答案 1 :(得分:0)

好的我修复了错误并使循环工作。出于某种原因,虽然它正在切断第一行数据。

    $tbl = '
<table border="1" cellpadding="1" cellspacing="2">
 <tr style="background-color:#666666;color:#FFFFFF;">
  <td align="center"><b>TITLE 1 HERE</b></td>
  <td align="center"><b>TITLE 2 HERE</b></td>
  <td align="center"><b>TITLE 3 HERE</b></td>
 </tr>';
while($row = mysql_fetch_array($Recordset1))
  {

$tbl = $tbl .'  <tr style="background-color:#000066;color:#FFFFFF;">
  <td align="left">Name: '.$row[lastname].', '.$row[firstname].'</td>
 </tr>'
    .'  <tr style="background-color:#CCCCCC;color:#000000;">
  <td align="left">'.ValLesson1.'</td> 
  <td align="left">'.ValLesson2.'</td>
  <td align="left">'.ValLesson3.'</td>
  </tr>'
 .'<tr style="background-color:#FFFFFF;color:#000000;">
 <td align="left">'.$row[most_valuable_lesson].'</td>
 <td align="left">'.$row[second_valuable_lesson].'</td>
 <td align="left">'.$row[third_valuable_lesson].'</td>
 </tr>'
    .'  <tr style="background-color:#CCCCCC;color:#000000;">
  <td align="left">'.CourseStrengths.'</td>
  <td align="left">'.CourseWeakness.'</td>
 </tr>'
 .'<tr style="background-color:#FFFFFF;color:#000000;">
 <td align="left">'.$row[course_strength].'</td>
 <td align="left">'.$row[course_weakness].'</td>
 </tr>'
; }
$tbl = $tbl . '</table>'; 

$pdf->writeHTML($tbl, true, false, false, false, '');

任何想法?

答案 2 :(得分:0)

在您发布的example code中,您使用mysql_fetch_array($ Recordset1)在循环之前调用mysql_fetch_assoc($ Recordset1),因此循环将错过第一个结果。如果您在其他代码中执行相同操作,那么这将是问题所在。