【问题标题】:Help with PHP array (EZPDF)帮助 PHP 数组 (EZPDF)
【发布时间】:2011-06-17 05:56:22
【问题描述】:

我正在尝试使用 ezpdf 将 mysql 数据输出到 pdf。我已成功生成报告的第一部分,但第二部分有很多列,当然不会跨页。下图可能会解释我想要做什么。

当前布局示例:


|---HEADER--|---HEADER2--|---HEADER3--|---HEADER4--|---HEADER5--|

|用户名1 |数据字段1 |数据字段2 |数据字段3 |数据字段3 |

|用户名2 |数据字段1 |数据字段2 |数据字段3 |数据字段3 |

|用户名3 |数据字段1 |数据字段2 |数据字段3 |数据字段3 |


我想要完成的示例:


|----HEADER1---|---HEADER2---|

|用户名1 |数据字段1 |

|---HEADER3---|---HEADER4---|---HEADER5---|

|数据字段2 |数据字段3 |数据字段4 |


|----HEADER1---|---HEADER2---|

|用户名2 |数据字段1 |

|---HEADER3---|---HEADER4---|---HEADER5---|

|数据字段2 |数据字段3 |数据字段4 |


|----HEADER1---|---HEADER2---|

|用户名3 |数据字段1 |

|---HEADER3---|---HEADER4---|---HEADER5---|

|数据字段2 |数据字段3 |数据字段4 |


我希望这是有道理的。如果有人可以提供帮助,将不胜感激。

下面是我的测试代码

test code

【问题讨论】:

    标签: php arrays


    【解决方案1】:

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

    【讨论】:

    • 感谢 Cez!我删除了第一个电话,它就像一个魅力。
    【解决方案2】:

    实际上,如果您不维护旧代码,我建议您使用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>
    ';
    

    【讨论】:

    • 感谢 Nicola 的推荐,我实际上开始使用 TCPDF,但我的任何报告都没有成功。我在 EZPDF 的其他几份报告中取得了成功。 EZPDF 对我来说更容易上手。
    • @Brian B 你在哪里遇到了 TCPDF 的问题?无论如何我会使用 html 表格来组织数据,然后将它们输出为 PDF
    • 我在循环表格中的数据时遇到了很多麻烦。只会显示第一行数据。
    • 这是我用来测试 fcpdf gamer4lyfe.com/dev/tcpdfcode.txt 的代码
    • @Brian B 明天我会看看那个! :)
    【解决方案3】:

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

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

    有什么想法吗?

    【讨论】:

    • 查看我的回答,了解您为什么缺少一行