我正在尝试使用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...';
答案 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,但是在语义或甚至使用过时/不赞成的标签方面有一些不好的做法。以下是一些:
border
或cellpadding
属性,使用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
代替。