-1

私はデータベースを持っています。私がデータをフェッチしているとき、それは多くの行を持っています。この結果を破りたい。ページ付けに関する多くのチュートリアルを読みましたが、ページ付けの方法がわかりません。以下は私のコードです-

<?php
                if(isset($_GET['search_profile'])){
                $gender = $_GET['Gender'];
                $religion = $_GET['selected_religion'];
                $caste = $_GET['selected_caste'];
                $marital_status = $_GET['marital_status'];
                $lage = $_GET['lage'];
                $hage = $_GET['hage'];

                $current_date = date('Y');
                            $hage1 = date('Y') - $hage;
                //echo $hage1;
            //  echo "<br>";
                $lage1 = date('Y') - $lage;
                //echo $lage1;



                $qq = "SELECT * FROM members WHERE yyyy BETWEEN '$hage1' AND '$lage1' AND gender='$gender' 
                AND religion LIKE '%$religion%'
                AND caste LIKE '%$caste%'
                AND marital_status LIKE '%$marital_status%'";

$profile_query_result = mysql_query($qq, $dbc)
or die('Error1'.mysql_error());


                }
                ?>
4

3 に答える 3

0

先日、最初のページネーション スクリプトを完成させました。それほど難しくはありませんでした。正直なところ、私はあなたがその論理を理解するのを手伝ってくれることを嬉しく思いますが、私はあなたのためにそれをコーディングするつもりはありません-私はまた、このトピックはこれらのボードでカバーされていると信じており、これは重複している可能性があります.

あなたはどのくらいPHPを知っていますか? ページネーション スクリプトの背後にあるロジック (データがデータベースから取得されていると仮定) は、次のようなものです。

少なくとも 2 つのデータベース クエリが必要です 。最初のクエリは結果の数を示し、2 番目のクエリは実際に結果を提供します。

必要な変数がいくつかあります。項目の数を知る必要があります。また、制限、つまり、各ページに表示できるアイテムの数を知る必要があります。アイテム数から制限を割ることでページ数を見つけます(アイテム数/ページあたりの制限)

表示 HTML - ページネーションの HTML を作成するために、一連の if ステートメントを使用しました。次の疑似コードのようなもの:

if ( isset( $_GET['page'] ) ) {
       $page = preg_replace( '/[^0-9]/', '', $_GET['page'] );
}
else {
       $page = 1;
}


/* the following code will not work
   with the identity (===) operator 
   because when coming from get $page
is a string not an int */

if ( $current_page == 1 ) {

     $page2 = $page + 1;
     $page3 = $page + 2;
     $page4 = $page + 3;


     $pagination .= "<div>Pg $page</div>";

    // if theres a second page, display page 2
    if ( $num_of_posts > ( $limit * 1 ) ) {
         $pagination .= "<a>$page2 &gt;</a>";
    }

    // if there is a 3rd page
    if ( $num_of_posts > ( $limit * 2 ) ) {
         $pagination .= "<a>$page3 &gt;</a>";
    }

    // if there is a 4th page
    if ( $num_of_posts > ( $limit * 3 ) ) {
         $pagination .= "<a>$page4 &gt;</a>";
    }

    // if there is more than 4 pages
    if ( ($page4 != $last_page && $page3 != $last_page ) {
         $pagination .= "<a href='" . $last_page . "'>&gt; &gt;</a>";
    }
}

このプロセスを繰り返す必要があります。それをどれだけ繰り返すかは完全にあなた次第です。if / elseif ステートメントを switch ステートメントとして書き換えることができます。私は個人的に web プログラミングで switch ステートメントを使用しません。

( $page == 2 )、( $page == $last_page )、( $page == ( $last_page - 1 ) に対して同じアプローチを取ることができます。やり過ぎても構いません。これにより、HTML 出力が確実にコンテンツが 1 ページまたは 2 ページしかない場合に適しています。

2 番目のクエリ- 2 番目のクエリは、データベースから結果を取得します。制限は ( ( $page - 1 ) * $limit_per_page ), $limit_per_page になります

すなわち:

 $limit = ( $page - 1) * $limit_per_page
   $sql= "SELECT post, user, id, etc, whatever
         FROM table
         WHERE this = that
         ORDER BY foobarz ASC[/DESC]
         LIMIT ".$limit.",".$limit_per_page;

これがあなたがそれを構築するのに十分であることを願っています! 幸運を!さらに説明が必要な場合はお知らせください。

于 2013-02-07T23:41:35.567 に答える
0

LIMIT キーワードを使用して、取得するレコード数を MySQL に伝え、開始オフセットを指定できます。

 SELECT * 
   FROM members 
   WHERE yyyy BETWEEN '$hage1' AND '$lage1' 
     AND gender='$gender' 
     AND religion LIKE '%$religion%'
     AND caste LIKE '%$caste%'     
     AND marital_status LIKE '%$marital_status%'
  LIMIT 0,100

上記の SQL クエリは、最初の 100 件のレコードから始めて、最初の 100 件のレコードを返します。

次の 100 件 (つまり、recrod #101 から始まる 100 件のレコード) が必要な場合はLIMIT 100, 100、 ;を使用します。その後、次の 100LIMIT 200,100など..

もちろん、PHP からページ番号を制御したい場合は、次のように、ハードコードされた値の代わりにパラメーターを使用します。

 SELECT * 
   FROM members 
   WHERE yyyy BETWEEN '$hage1' AND '$lage1' 
     AND gender='$gender' 
     AND religion LIKE '%$religion%'
     AND caste LIKE '%$caste%'     
     AND marital_status LIKE '%$marital_status%'
  LIMIT '$offset', '$recordsPerPage'

次に、$offset は $recordsPerPage (つまり、0、100、200、...n*100) の増分で値を取得する必要があり、$recordsPerPage は、各ページに表示するレコードの数 (通常は 10、20、または 100) にすることができます。

于 2013-02-07T19:16:40.583 に答える
0

クライアント側のページネーションが問題にならない場合、簡単な解決策は Jquery ページネーションを使用することです。で例を見ることができますhttp://www.datatables.net/release-datatables/examples/basic_init/alt_pagination.html

JavaScript コードに以下を追加します。

$(document).ready(function() {
    $('#example').dataTable( {
        "sPaginationType": "full_numbers"
    } );
} );

「例」は、要素の場合のIDです。

于 2013-02-07T19:21:44.727 に答える