PHP Пока цикл показывает только последнюю строку

Я использую библиотеку TCPDF для создания PDF-таблицы.

В таблице указано несколько строк: 10

Среди этих двух строк есть номер счета-фактуры "78650"

Теперь я выбираю номер счета и по желанию, он должен генерировать PDF с двумя строками .

Но вместо этого он извлекает только вторую строку, которая является последней строкой. То есть Serial no 2 принимается только.

Код ниже:

<?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 . Вам нужно будет добавить контент.

Поэтому возьмите пустую переменную $html2 вне цикла и добавьте результат при повторении цикла.

Код будет выглядеть примерно так,

 $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++; } 

Вторая выборка перезаписывает переменную $ html2. Вы можете использовать массив $ html2 [$ i].