混合HTML代码与PHP代码

时间:2015-06-18 09:23:28

标签: php html tcpdf

我正在尝试使用tcpdf库生成pdf。我有一个php文件,其中包含名称,公司名称等变量。但是为了显示产品,我将数组传递给php。现在我想在表格行中显示数组的每个元素,因为我必须编写PHP代码,但不知怎的,我有问题将PHP代码与html代码混合。这是包含问题的部分

    $html .= '<br><br>
              <table border="1" cellpadding="5">
                <tr>
                    <td colspan="3">Invoice # {invoice_ref_id}</td>            
                </tr>
                <tr>
                    <td><b>Product</b></td>
                    <td><b>Quantity</b></td>
                    <td align="right"><b>Amount (Rs.)</b></td>
                </tr>'.
                foreach($item as products): .'   //This part contains error
                <tr>
                    <td>'echo products['item']'</td>
                    <td>'echo products['quantity']'</td>
                    <td align="right">75</td>
                </tr>
                <tr>
                    <td colspan="3" align="right"><b>Total: 375</b></td>
                </tr>'
                endforeach;
             '</table>';

    $html .= '<br><br>Some more text can come here...';

4 个答案:

答案 0 :(得分:0)

你无法在foreach之后直接连接html。你必须再次$html .=

这个

</tr>'.
foreach($item as products): .'   //This part contains error
<tr>

应该是这个

</tr>';
foreach($item as products): $html .= '   //This part contains error
<tr>

在foreach结束时也是如此:

</tr>';
endforeach;
$html .= '</table>';

答案 1 :(得分:0)

你做错了。这应该有效 -

$html .= '<br><br>
              <table border="1" cellpadding="5">
                <tr>
                    <td colspan="3">Invoice # {invoice_ref_id}</td>            
                </tr>
                <tr>
                    <td><b>Product</b></td>
                    <td><b>Quantity</b></td>
                    <td align="right"><b>Amount (Rs.)</b></td>
                </tr>';
                foreach($item as products) {   //This part contains error
                $html .= '<tr>
                    <td>'. products['item']. '</td>
                    <td>'. products['quantity']. '</td>
                    <td align="right">75</td>
                    ........ ';
                }
$html .= '</table>';
$html .= '<br><br>Some more text can come here...';

答案 2 :(得分:0)

正确地做这样的事情

 $html .= '<br><br>
          <table border="1" cellpadding="5">
            <tr>
                <td colspan="3">Invoice # {invoice_ref_id}</td>            
            </tr>
            <tr>
                <td><b>Product</b></td>
                <td><b>Quantity</b></td>
                <td align="right"><b>Amount (Rs.)</b></td>
            </tr>';
            foreach($item as products): 
             $html .='   //This part contains error
            <tr>
                <td>'echo products['item']'</td>
                <td>'echo products['quantity']'</td>
                <td align="right">75</td>
            </tr>
            <tr>
                <td colspan="3" align="right"><b>Total: 375</b></td>
            </tr>';

            endforeach;
       $html .=  '</table>';

$html .= '<br><br>Some more text can come here...';

答案 3 :(得分:0)

不是将你的HTML连接成一个你需要回应的字符串,我会这样做:

<br><br>
<table border="1" cellpadding="5">
    <tr>
        <td colspan="3">Invoice # {invoice_ref_id}</td>            
    </tr>
    <tr>
        <td><b>Product</b></td>
        <td><b>Quantity</b></td>
        <td align="right"><b>Amount (Rs.)</b></td>
    </tr>
    <?php foreach($item as products){ ?>  
    <tr>
        <td><?php echo products['item'] ?></td>
        <td><?php echo products['quantity'] ?></td>
        <td align="right">75</td>
    </tr>
    <tr>
        <td colspan="3" align="right"><b>Total: 375</b></td>
    </tr>
    <?php> } //ending the foreach ?>
</table>
<br><br>Some more text can come here...

请注意,即使HTML代码仍然正确突出显示?它可能与您选择的编辑器中的相同。我发现它更具可读性,甚至可以避免可能的字符转义问题。

注意:我没有修复你的HTML,但是在语义或甚至使用过时/不赞成的标签方面有一些不好的做法。以下是一些:

  • 不要在HTML中使用任何更改布局的内容,这就是CSS的用途。例如,不要在桌面上使用bordercellpadding属性,使用table {border: 1px solid #ccc;}(当然可以更改颜色,这是一个示例)和table td {padding: 5px;}。< / LI>
  • 语义最佳做法也意味着不使用<br>标记。更好地定义顶部或底部边距以在元素之间放置一些空间。 (我必须承认,这可能是我重视语义的唯一例子,有时我自己也会使用它)。
  • <b>标记只能在特定情况下使用cfr this article。在这种特定情况下,您可以通过在所需单元格上使用font-weight: bold来实现相同的效果(粗体文本),方法是通过为它们提供特定的CSS类,或者通过使用CSS3选择器来定位它们,例如:{{1 }}}
  • 同样地,不要使用tr td:nth-child(3) {font-weight: bold;}属性,同样的事情,定位所需的单元格并使用CSS属性align代替。