PHP While循环仅显示最后一行 [英] PHP While loop displaying only last row
问题描述
我正在使用 TCPDF 库生成表格的PDF.
I'm using TCPDF library to generate PDF of a table .
表的行数很少,例如10
Table has few number of rows say 10
其中两行具有相同的发票编号"78650"
Among that two rows has same invoice number "78650"
现在,我按发票编号进行选择,并根据需要生成具有两行的PDF.
Now i am selecting by invoice number and as desired it should generate PDF with two rows.
但是相反,它仅获取第二行,即最后一行.那是序列号2仅被采用.
But instead it is only fetching the second row that is the last row. That is Serial no 2 is only taken .
下面的代码:
Code Below :
<?php
require_once('TCPDF/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
require_once(dirname(__FILE__).'/lang/eng.php');
$pdf->setLanguageArray($l);
}
$pdf->SetFont('helvetica', '', 9);
$pdf->AddPage();
$html1 = '<table cellspacing="0" class="table table-striped">
<tr>
<th>SL No.</th>
<th>Product</th>
<th>Description</th>
<th>Qty</th>
<th>Total</th>
</tr>';
$sql = ("select * from invoice WHERE invoice_no = 78650 ORDER BY invoice_id ASC");
$result=mysqli_query($connection,$sql);
$i = 1;
while($row = mysqli_fetch_array($result)){
$pr = $row['product'];
$dr = $row['description'];
$qty = $row['qty'];
$total = $row['total'];
$html2 = "<tr>
<td>".$i."</td>
<td>".$pr."</td>
<td>".$dr."</td>
<td>".$qty."</td>
<td>".$total."</td>
</tr>";
$i++; }
$sql_1 = ("select *,SUM(total)as tot from invoice WHERE invoice_no = 78650 GROUP BY invoice_no");
$result_1=mysqli_query($connection,$sql_1);
$row_1 = mysqli_fetch_array($result_1);
$tot = $row_1['tot'];
$html3 = "<tr>
<td></td>
<td></td>
<td></td>
<td>Total: </td>
<td>".$tot."</td>
</tr>
</table>";
$html = $html1.$html2.$html3;
$pdf->writeHTML($html, true, 0, true, 0);
$pdf->lastPage();
$pdf->Output('htmlout.pdf', 'I');
?>
推荐答案
这是因为要迭代,您要替换$html2
的内容.您将需要附加内容.
That's because for iteration you're replacing the content of $html2
. You will need to append the content instead.
因此将空白的$html2
变量带到循环之外,并在循环时附加结果.
So take the blank $html2
variable outside the loop and append the result as you iterate the loop.
代码看起来像这样,
$html2="";
while($row = mysqli_fetch_array($result)){
$pr = $row['product'];
$dr = $row['description'];
$qty = $row['qty'];
$total = $row['total'];
$html2 = $html2."<tr>
<td>".$i."</td>
<td>".$pr."</td>
<td>".$dr."</td>
<td>".$qty."</td>
<td>".$total."</td>
</tr>";
$i++;
}
这篇关于PHP While循环仅显示最后一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!