2014-01-16 60 views
0

我有這種說法產生儘可能多的行,因爲它應該做的事:拆分表格後x行數和添加文本在While循環(使用TCPDF)

$result = mysqli_query($con,"SELECT * FROM b_sale_basket WHERE ORDER_ID=$ID ORDER BY  PRICE * QUANTITY DESC"); 

$total=0; 
while($row = mysqli_fetch_array($result)) 
{ 
$quantity = $row['QUANTITY']; 
$description = $row['NAME']; 
$unitprice = $row['PRICE']; 
$lineprice = $row['PRICE']*$row['QUANTITY']; 
$total=$total+$lineprice; 

$tbl_header = '<table style="width: 650px;" cellspacing="0" cellpadding="5">'; 
$tbl_footer = '</table>'; 
$tbl = ''; 

$tbl .= ' 
<tr> 
    <td style="width: 50px; text-align: left; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.number_format($quantity,0).'</p></td> 
    <td style="width: 350px; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.$description.'</p></td> 
    <td style="width: 125px; text-align:right; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.number_format($unitprice,2).'</p></td> 
    <td style="width: 125px; text-align:right; border-bottom: 0.1em solid #808080;" align="right" ><p style="color:#808080;">'.number_format($lineprice,2).'</p></td> 
</tr> 
'; 

$pdf->writeHTML($tbl_header . $tbl . $tbl_footer, true, false, false, false, ''); 

如前所述這將返回正確的數據。但是,我在TCPDF中使用SETXY設置的頁面上有一個頁腳,表中會列出這一點。我需要的是添加文本:

$pdf->AddPage(); 

10行後,然後表繼續下一頁。

任何想法?如果這不能完成,是否有設置setxy不只是坐在頁面的背景?

+0

爲什麼你是否拿出了相關的代碼部分,並把// // foreach項目放在你的數組中?'? –

+0

你的循環是錯誤的。您一次又一次創建$ tbl_header和$ tbl_footer,並且循環應該在'$ pdf-> writeHTML'之前結束。 –

+0

這沒有錯。它在這裏輸出:$ pdf-> writeHTML($ tbl_header。$ tbl。$ tbl_footer,true,false,false,false,''); – andy

回答

2

你只需要一個簡單的循環計數器:

$tbl = ''; 
$counter = 0; 

// foreach item in your array... 
$counter++; 
if ($counter > 9) { 
    $pdf->AddPage(); 
    $counter = 0; 
} 
$tbl .= ' 

編輯:你可能要重構你循環的方式,但你有它寫現在的解決方案是:

$result = mysqli_query($con,"SELECT * FROM b_sale_basket WHERE ORDER_ID=$ID ORDER BY  PRICE * QUANTITY DESC"); 

$total=0; 
$counter = 0; //implement a counter 
while($row = mysqli_fetch_array($result)) 
{ 
$counter++; //increment the counter on each loop 

$quantity = $row['QUANTITY']; 
$description = $row['NAME']; 
$unitprice = $row['PRICE']; 
$lineprice = $row['PRICE']*$row['QUANTITY']; 
$total=$total+$lineprice; 

$tbl_header = '<table style="width: 650px;" cellspacing="0" cellpadding="5">'; 
$tbl_footer = '</table>'; 
$tbl = ''; 

$tbl .= ' 
<tr> 
    <td style="width: 50px; text-align: left; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.number_format($quantity,0).'</p></td> 
    <td style="width: 350px; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.$description.'</p></td> 
    <td style="width: 125px; text-align:right; border-bottom: 0.1em solid #808080;"><p style="color:#808080;">'.number_format($unitprice,2).'</p></td> 
    <td style="width: 125px; text-align:right; border-bottom: 0.1em solid #808080;" align="right" ><p style="color:#808080;">'.number_format($lineprice,2).'</p></td> 
</tr> 
'; 

if ($counter > 9) { 
    $pdf->AddPage(); 
    $counter = 0; 
} 

$pdf->writeHTML($tbl_header . $tbl . $tbl_footer, true, false, false, false, ''); 
+0

我明白你想要做什麼,只需要讓我的頭稍微有點。不幸的是,這並不會將9行之後的表格拆分爲新頁面。 – andy

+0

這工作完美。只需要在頁面上添加頁腳,這樣就可以在頁面上顯示,但是它很有用。非常感謝您的幫助。非常感激。安迪 – andy