【问题标题】:PHP pagination with wrong type page and how to set pagination no show 5 by 5PHP 分页类型错误以及如何设置分页不显示 5 by 5
【发布时间】:2017-10-07 19:03:35
【问题描述】:

我在 Oracle 数据库中使用 PHP 分页来处理我的数据。

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

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

【问题讨论】:

  • 您使用的是什么版本的 Oracle?
  • @TimBiegeleisen Oracle 11g
  • 先生有什么建议吗?

标签: php oracle


【解决方案1】:

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

  1. 一个获取所有元素的计数

SELECT count(*) from tableName

如果 blablabla 的元素计数为 0,则不处理第二个查询

  1. 第二个从例如获取行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

【讨论】:

猜你喜欢
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 2017-11-30
相关资源
最近更新 更多