2012-01-27 70 views
0

關閉我以前的question我想弄清楚如何實現我後。 我有一個訂單。當需要打印該訂單時,如果訂單超過25行/行,我需要從第26行開始創建新頁面。我的問題是,我會如何寫?我在想mysql_num_rows,但我怎麼跟蹤?保持跟蹤的頁面和mysql_num_rows

我會如何分解它,比如說把0-24行放入array1然後把rows 25-49放入array2等等?然後將不同的陣列放入while循環中?

也許把所有東西都放到一個數組中,然後把它分開?

這就是我現在所擁有的

<?php 

    if (isset($_POST['CheckBox'])){ 
    $CB = $_POST['CheckBox']; 
    } else {echo 'Nothing Marked'; die;} 
    ///////////////////////////////////////// 
    ?> 
    <!DOCTYPE HTML> 
    <html> 
    <head> 
    <meta charset="utf-8"> 
    <style> 
    @media print{ @page{margin: 5%;} } 
    body{ 
     background-color: #CCC; 
     margin:0; 
     padding:0; 
     } 
    #MainWrapper{ 
     margin:0 auto; 
     width:675px; 
     height:900px; 
     background-color:#3CF; 
     position:relative; 
     } 

    #OrderInfo{ 
     width:200px; 
     height:50px; 
     background-color:#6C6; 
     float:left; 
     font-family:Verdana, Geneva, sans-serif; 
     font-size:9px; 
    } 
    #OrderInfoNotes{ 
     width:475px; 
     height:50px; 
     background-color:#6C6; 
     float:right; 
     font-family:Verdana, Geneva, sans-serif; 
     font-size:9px; 
    } 
    #LineHeader{ 
     width:675px; 
     background-color:#C90; 
     float:left; 
    } 
    .OrderLines{ 
     font-family:Verdana, Geneva, sans-serif; 
     font-size:9px; 
     padding:0px; 
    } 

    .PBA{page-break-after: auto;} 
    .bigbold{ font-weight:bold; font-size:14px;} 
    .bigger{font-size:14px;} 

    </style> 
    </head> 
    <body> 
    <?php 
    /////////////////////////////////////////// 
    foreach ($CB as $thekey => $Order_ID) 
    { 
$queryOrderHead = "SELECT * FROM Orders WHERE Order_ID = ".mysql_real_escape_string($Order_ID).""; 
$queryOrderLines = "SELECT * FROM Order_LineDetails WHERE Order_LineDetails.Order_ID = ".mysql_real_escape_string($Order_ID).""; 
    ////////////////////////////////////////// 
     if ($queryRunHead = mysql_query($queryOrderHead)){ 
    ////////////////////////////////////////// 
    // THIS IS THE HEADER OF THE ORDER /////// 
    ////////////////////////////////////////// 
     while ($info_HEAD = mysql_fetch_array($queryRunHead))  
     { 
     $OrderDate_HEAD = $info_HEAD['OrderDate']; 
     $shippingservice_HEAD = $info_HEAD['shippingservice']; 
     $OrderNotes_HEAD = $info_HEAD['OrderNotes']; 
    ?>       
    <div id="MainWrapper">      
    <!--START ORDERINFO INTO --> 
     <div id="OrderInfo"> 
    Order ID:<span class="bigbold"><?php echo ' '.$Order_ID; ?></span><br> 
    <?php echo 'SHIPPER: <span class="bigbold">'.$shippingservice_HEAD.'</span>'; ?><br> 
    <?php echo 'ORDER DATE: '.$OrderDate_HEAD; ?> 
     </div> 
     <div id="OrderInfoNotes"> 
    <?php echo 'NOTES: '.$OrderNotes_HEAD; ?></div> 
    <!--END ORDERINFO INTO --> 
    <hr><br> 
     <div id="LineHeader"> 
    <table class="OrderLines"> 
    <tr class="bigbold"> 
     <td width="300"><u>Product Name:</u></td> 
     <td width="90"><u>UPC Code:</u></td> 
     <td width="50" align="right"><u>PID:</u></td> 
     <td width="75" align="right"><u>QTY:</u></td> 
     <td width="160" align="right"><u>Packer:</u></td>  
    </tr> 
    <?php 
    } 
    ///////////////////////////////////////// 
    // THIS IS THE ORDER LINES ////////////// 
    ///////////////////////////////////////// 
      $queryRunLines = mysql_query($queryOrderLines); 

      while ($info = mysql_fetch_array($queryRunLines)) 
      { 
       $ProductName_LINE = $info['ProductName']; 
       $qty_LINE = $info['qty']; 
       $Product_ID_LINE = $info['Product_ID']; 
       $UPC_LINE = $info['UPC']; 
    ?>       
    <tr class="bigger"> 
     <td><?php echo $ProductName_LINE; ?></td> 
     <td><?php echo $UPC_LINE; ?></td> 
     <td align="right"><?php echo $Product_ID_LINE; ?></td> 
     <td align="right"><?php echo $qty_LINE; ?></td>  
     <td></td>  
    </tr><tr> 
     <td colspan="5"><hr></td></tr> 
    <?php       
    } 
    /////////////////////////////////////////////////////////// 
    // END OF ORDER LINES /////////////////////////////////////  
    /////////////////////////////////////////////////////////// 
       $numRows = 0; 
       $numRows = mysql_num_rows($queryRunLines); 
       echo 'Total Rows ('.$numRows.')' 
    /////////////////////////////////////////////////////////// 
    ?><tr> 
     <td colspan="5" class="center">--- :END: ---</td> 
    </tr> 
    </table> 
    </div> 
    </div> 
    <p class="PBA"/> 


    <?php      
    } else { 
    echo mysql_error();   
    } 
    } 
    mysql_close($conn); 
    ?> 
    </body> 
    </html> 
+1

也許SQL的'LIMIT'子句對你很有意思。 – hakre 2012-01-27 16:47:13

+0

我不認爲這會工作,我想選擇*。 – Monty 2012-01-27 16:48:06

+0

'LIMIT'與'SELECT'一起工作;) – hakre 2012-01-27 16:51:30

回答

1

從看你前面的問題,看來你要打印的HTML頁面,不使用分頁。只需使用一個計數器變量:

$i = 0; 
while ($info = mysql_fetch_array($queryRunLines)) 
{ 
    $ProductName_LINE = $info['ProductName']; 
    $qty_LINE = $info['qty']; 
    $Product_ID_LINE = $info['Product_ID']; 
    $UPC_LINE = $info['UPC']; 

    if (!($i % 25)) { 
     // echo page break every 25 lines 
    } 

    // output 

    $i++; 
} 

後分頁,在CSS屬性分頁符,前/也看一看。我也建議使用HTML到PDF轉換器。它們易於使用,並且可以使您的印刷文檔在不同的系統中保持一致。

+0

擺弄了一下後,我做了我想做的事。我猜會更簡單了!謝謝一堆! – Monty 2012-01-27 19:19:05

0

你需要什麼叫分頁。

其中一種方法是在查詢中使用LIMIT子句。

我會在這裏提出,但有數百個教程在谷歌分頁與良好的解釋。如果你通過「php分頁」搜索並逐步學習,會更好。

+0

分頁不正確。我無法鏈接到下一頁。 – Monty 2012-01-27 16:53:39

0

你可以限制你的查詢返回的行數,在查詢結束

附加LIMIT 0,24,你會得到第25行。

,你可以有更多的細節here

0

使用一個變量來存儲要顯示的行數和另一個存儲正在檢索的當前行。

查找分頁,這會給你一個更好的主意。它可能不是你想要的,但會教你如何按你想要的方式來限制sql結果。

+0

不必要的投票FTL – crm 2012-01-27 22:14:43