2017-10-07 8 views
0

私はOracleデータベースで自分のデータにPHPのページ設定を使用しています。私は空の行テーブルのショーを得たまで、私はテキストまたは番号-5で手動でページを編集しようとすると間違ったタイプのページでページ番号を設定する方法とページ番号を設定する方法はありません。

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> 

上記のコードは、良い取り組んでいます。例:http://example.com/Page=blabla enter image description here

私の質問に:私たちは、テキストまたは-5との奇妙な値、例を使って手動でページを編集する場合、どのデータが空の行を表示しないようにする
1.?
2.ページ番号5を5で制限することはできますか?

enter image description here

+0

使用しているOracleのバージョンは? –

+0

@TimBiegeleisen Oracle 11g –

+0

アドバイスありがとうございます。 –

答えて

0

一般的にPHPのページネーションのために、私はお勧めします使用の2つのクエリ:要素数がある場合

  1. 1は、すべての要素

SELECT count(*) from tableName

の数を取得します0 blablablaの場合、2番目のクエリを処理しません。

  1. 秒から行を取得する秒。 10ページ選択されたページのための制限付き

SELECT field1, field2 FROM tableName

2上の20。

この方法で問題が解決するはずです。 How can I perform this query in oracle

編集:

は、私はあなたのために助けることができる何かを見つけ

を私は、Oracleが得意ではないんだけど、ここで私はちょうどそれがすべてのページ上のすべてのレコードを取得言いたかった良いアイデアではありません。私は助けることができるものを見つけたhttp://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html

+0

Oracleは 'LIMIT'をサポートしていますか? –

+0

私はオラクルが良くありませんが、ここではすべてのページのすべてのレコードを取得するのは良い考えではないと言いたいと思っています。私はhttp://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.htmlに役立つものを見つけました。 – Arkowsky

関連する問題