跟踪页面和mysql_num_rows

时间:2012-01-27 16:43:22

标签: php

解开我之前的question我试图弄清楚如何实现我之前的目标。 我有一个订单。当打印该订单的时候,如果订单超过25行/行,我需要从第26行开始并创建一个新页面。我的问题是我该怎么写呢?我正在考虑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>

4 个答案:

答案 0 :(得分: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属性 page-break-before / page-break-after 。我还建议使用HTML到PDF转换器。它们易于使用,可以使您的打印文档在不同系统中保持一致。

答案 1 :(得分:0)

您需要的是分页。

其中一种方法是在查询中使用LIMIT子句。

我会在这里提出,但谷歌有数百个分页教程,并有很好的解释。如果你通过“php pagination”搜索并逐步学习会更好。

答案 2 :(得分:0)

您可以限制查询返回的行数

在查询结尾处添加LIMIT 0,24,您将获得前25行。

您可以获得更多详细信息here

答案 3 :(得分:0)

使用变量存储要显示的行数,另外一个存储要检索的当前行。

查看分页,这会给你一个更好的主意。它可能不完全是你的意思,但会教你如何以你想要的方式限制sql结果。