1

私はちょうどページネーションを学んでいます。検索結果でうまく動作しません。適切な数のリンクで最初のページが正しく表示されますが、リンクのいずれかをクリックすると (ページ 1 であっても)、空白のページに移動します。

誰かが私が間違っていることを教えてください:

次のコードは、検索ボタンがクリックされたときのものです。

<?php

include('includes/connect-db.php');
include('includes/functions.php');

if (isset($_GET['searchbtn'])){
    $product=$_GET['products'];
    $status=$_GET['ticket_status'];
    $order_by=$_GET['order_by'];
    $ticket_type=$_GET['ticket_type'];

    #check if product has been selected
    if ($_GET['products'] == 'select'){
        echo '<font class="error">&nbsp Please select a product to search.</font>'; 
    }else{
        if ($status == 'All' AND $order_by == 'All' AND $ticket_type == 'All' ){
            $page_query="SELECT * FROM tickets WHERE product='$product' ORDER BY created DESC";
        }elseif ($ticket_type == 'BOX'){
            $page_query="SELECT * FROM tickets WHERE product='$product' AND status='$status' AND pbi <> '-' ORDER BY '$order_by'    ";
        }elseif ($ticket_type == 'PVR'){
            $page_query="SELECT * FROM tickets WHERE product='$product' AND status='$status' AND inc <> '-' ORDER BY '$order_by'    ";
        }else{
            $page_query="SELECT * FROM tickets WHERE product='$product' AND status='$status' ORDER BY created DESC";
        }   
    }#end of else

    $results_per_page=3;
    $result_set=pagination($results_per_page,$page_query);

    $query=$result_set['query'];
    $pages=$result_set['pages'];

    #SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset. A resource on success or False on Error

    if (!empty($query)){
        $result = mysqli_query($db,$query) or die( "My query ($query) generated an error: ".mysql_error());
        $num_results = mysqli_num_rows($result);

        if ($num_results > 0){
            displayTicket($result);
            if ($pages > 1){
                echo '</br>';
                for($i=1;$i<=$pages;$i++){
                    echo ' <a href="?page='.$i.'">'.$i.'</a> ';
                }
            }
        }else{
            echo "&nbsp No Records found.";
        }
    }#query string is not empty
}   


?>

ページネーションコードを別の関数に入れました:

function pagination($per_page, $pages_query){
    include('includes/connect-db.php');
    $pagination[]=array();

    #total result count 
    $total_result=mysqli_query($db,$pages_query);

    #ceil takes a decimal number and gives the nearest whole number
    $total=mysqli_num_rows($total_result);
    $pages = ceil($total / $per_page);

    $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
    $start = ($page - 1) * $per_page;

    $query = " LIMIT $start,$per_page";
    $query = $pages_query.$query;
    $pagination['query'] = $query;
    $pagination['pages'] = $pages; 
    return $pagination;
}

注: 他のページへのページネーション リンクは、検索機能を使用して試行した場合にのみ失敗します。表に情報をリストするページで試してみましたが、リンクは正常に機能します。

4

2 に答える 2

1

問題はリンク内の情報にあるように見えlocalhost/test/searchProductForm.php?page=1ます。searchProductFormに表示するページを指示しますが、検索情報が何であるかは指示しません。それがないと、検索ページは何を表示するかわかりません。ページネーションリンクを変更して、元の検索リンクに含まれていたすべての情報(つまり、、、、、およびパラメーター)productsを含めticket_statusてみてください。order_byticket_type

于 2012-06-03T04:51:01.627 に答える
-1

これが古いスレッドであることは知っていますが、上記のコードで同様の問題を解決できない人にとっては、ドキュメントの冒頭に session_start() がないことが原因である可能性があります。

これは、コードが ?page= &products= などによって $_GET ステートメントに渡されたセッション変数を取得しようとしているが、URL から変数に取得されていないが、session_start() をURL から文字列に情報を渡すように PHP ドキュメントに要求します。

于 2014-10-30T09:57:29.863 に答える