【问题标题】:TCPDF - printing table from mysqlTCPDF - 从 mysql 打印表格
【发布时间】:2013-05-30 00:43:52
【问题描述】:

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

总是在我的 pdf 中打印整个表格。但我想为单个实例打印&lt;table&gt;&lt;/table&gt;,然后想循环打印其间的行。我该如何解决这个问题??

【问题讨论】:

    标签: php tcpdf


    【解决方案1】:
    $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, '');
    

    【讨论】:

      【解决方案2】:

      如果你的意思是你想要一个包含所有结果作为行的表,只循环打印行并将开始和结束标记迁移到循环之外。

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

      【讨论】:

      • 不工作..这只显示一行..只有当$pdf-&gt;writeHTML($tbl, true, false, false, false, '');在循环内时我才能得到结果
      • @blasteralfred - 您可以在您的 SQL 语句中进行编辑,以便我们可以确定它正在获取多行吗?
      • 即使没有 sql,简而言之,它使用虚拟数据卡住了。我发现安德烈的回答很有用。但我仍然在寻找像 Deacon 的建议
      【解决方案3】:

      我当然会这样做:

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

      如果你不能用模板组织你的表示层,至少让它与实际逻辑尽可能分离。

      你可以read about sprintf hereimplode here

      【讨论】:

        【解决方案4】:
        $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, '');
        

        【讨论】:

          猜你喜欢
          • 2014-10-28
          • 1970-01-01
          • 2012-03-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多