PHP分页错误的类型页面以及如何设置分页没有显示5乘5

时间:2017-10-07 07:23:33

标签: php oracle

我正在使用PHP Pagination将我的数据用于Oracle数据库。

if(isSet($_GET['search']))
{
    $strSQL = oci_parse($c1, "
        SELECT
        T.TONEID,
        T.TONE_NAME,
        T.ACTIVE,
        TO_CHAR(T.DATEADDED, 'DD-MON-YYYY HH24:MI:SS') AS DATEADDEDS,
        T.ADDEDBY
        FROM
        WA_BT_TBL_TONE T
        WHERE
        TONE_NAME LIKE '%" . $_GET['search'] . "%'
        ORDER BY T.DATEADDED DESC
    "); 
}
else
{
    $strSQL = oci_parse($c1, "
        SELECT
        T.TONEID,
        T.TONE_NAME,
        T.ACTIVE,
        TO_CHAR(T.DATEADDED, 'DD-MON-YYYY HH24:MI:SS') AS DATEADDEDS,
        T.ADDEDBY
        FROM
        WA_BT_TBL_TONE T
        ORDER BY T.DATEADDED DESC
    "); 
}
oci_execute ($strSQL,OCI_DEFAULT);

$Num_Rows = oci_fetch_all($strSQL, $dData); 

$Per_Page = 10;

$Page = $_GET["Page"]; 
if(!$_GET["Page"]) 
{ 
    $Page=1; 
} 

$Prev_Page = $Page-1; 
$Next_Page = $Page+1; 

$Page_Start = (($Per_Page*$Page)-$Per_Page); 
if($Num_Rows<=$Per_Page) 
{ 
    $Num_Pages =1; 
} 
else if(($Num_Rows % $Per_Page)==0) 
{ 
    $Num_Pages =($Num_Rows/$Per_Page) ; 
} 
else 
{ 
    $Num_Pages =($Num_Rows/$Per_Page)+1; 
    $Num_Pages = (int)$Num_Pages; 
} 

$Page_End = $Per_Page * $Page; 
if($Page_End > $Num_Rows) 
{ 
    $Page_End = $Num_Rows; 
}

$no = 1;

if($Num_Rows > 1)
{
    for($i=$Page_Start;$i<$Page_End;$i++)
    {
    ?>
        <tr>
            <td><?php echo $dData['TONE_NAME'][$i]; ?>
        </tr>
    <?php
    }
}

HTML分页

<div class="pagination">
    <?php
    if($Prev_Page)
    {
        echo " <a href='?Page=$Prev_Page'>Back</a> ";
    }

    for($i=1; $i<=$Num_Pages; $i++)
    {
        if($i != $Page)
        {
            echo "<a href='?Page=$i'>$i</a>";
        }
        else
        {
            echo "<b><a> $i </a></b>";
        } 
    } 
    if($Page!=$Num_Pages)
    {
        echo " <a href ='?Page=$Next_Page'>Next</a> ";
    }
    ?>
</div>

上面的代码运行良好,直到我尝试用文本或数字-5手动编辑页面时,表格显示为空行。示例:http://example.com/Page=blabla enter image description here

我的问题:
1.如果我们手动编辑具有奇怪值的页面,例如带有文本或-5?的话,如何防止数据显示为空 2.是否可以将页码数限制为5乘5?

enter image description here

1 个答案:

答案 0 :(得分:0)

一般来说,对于php中的分页,我建议使用两个查询:

  1. 一个可以计算所有元素
  2. SELECT count(*) from tableName

    如果blablabla的元素数为0,那么您就不会处理第二个查询

    1. 秒从例如获取行2页10至20页
    2. SELECT field1, field2 FROM tableName

      选择页面的LIMIT。

      此策略应解决您的问题。

      我找到了一些有用的东西:How can I perform this query in oracle

      编辑:

      我不擅长oracle但在这里我只是想说每个页面上的所有记录都不是好主意。我找到了一些可以帮助http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

      的东西