PHP While loop displaying only last row(PHP While 循环只显示最后一行)
问题描述
我正在使用 TCPD 库来生成表格的 PDF.
I'm using TCPDF library to generate PDF of a table .
表的行数很少,比如 10
Table has few number of rows say 10
其中两行发票编号相同78650"
现在我按发票编号选择,并根据需要生成带有两行的 PDF.
Now i am selecting by invoice number and as desired it should generate PDF with two rows.
但它只获取最后一行的第二行.那是 Serial no 2 只被拿走了.
But instead it is only fetching the second row that is the last row. That is Serial no 2 is only taken .
代码如下:
<?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 循环只显示最后一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:PHP While 循环只显示最后一行
基础教程推荐
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- HTTP 与 FTP 上传 2021-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 使用 PDO 转义列名 2021-01-01