0

誰かが私が探しているこのページネーションを設定するための良い場所や良いチュートリアルを知っていますか?

私がここに何百行も投稿していることに腹を立てる前に、私が達成したいこと、私の状況をよりよく説明するために使用するコードについて簡単に説明しましょう。

以下のコードは、ページ付けのみまたは検索のみを行う場合に機能します
。1.メインページに入ると、ページ付けが機能します。1ページ目、2ページ目などを押すと、期待どおりの結果が得られます。
2.検索を使用すると機能しますが、これにより1ページに制限なくすべてのレコードが表示されます。制限を設定することはできますが、ページネーションは機能しません。

検索変数を取得してページネーションに追加する方法がわかりません。

次のようなURLを持つことは可能ですか:search = Hello + World?orderby = custforename + custsurname?page = 3..私はそうだと思います...このようなものはどうですか?と呼ばれる?高度なページ付けチュートリアルに適した場所を知っている人はいますか?


私はメインページでこのコードを使用しています:

<?php
    if(isset($_POST['search']))
    {
        $search = $_POST['search'];
        $search = ltrim($search, " ");
        $terms = explode(" ", $search);
        $customerlistquery = "
                            SELECT *
                            FROM customer
                            LEFT JOIN company
                            ON customer.compid=company.compid
                            WHERE
                            ";
        $i = 0;
        foreach ($terms as $each) 
        {
            if ($i++ > 0) 
            $customerlistquery .= ' OR ';

            $customerlistquery .= "concat(custsurname, custforename, custmidname, custpostal, custphone1, custphone2, custfax, custnamecode, datemodified, modifiedby) LIKE '%$each%' ";
        }
        $customerlistquery .= " ORDER BY $orderby ASC";
    }
    else
    {
        $page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]);
        $startpoint = ($page * $limit) - $limit;
        $customerlistquery = "  
                SELECT *
                FROM customer
                LEFT JOIN company
                ON customer.compid=company.compid
                ORDER BY $orderby ASC 
                LIMIT {$startpoint}, {$limit}
                ";
        echo pagination("customer
                LEFT JOIN company
                ON customer.compid=company.compid
                ORDER BY $orderby ASC",$limit,$page);       
    }
?>


$result=mysql_query($itemslistquery) or die("query fout " . mysql_error() );

そして最後にpagination.phpコード:

<?php
    function pagination($query, $per_page = 10,$page = 1, $url = '?'){        
        $query = "SELECT COUNT(*) as `num` FROM {$query}";
        $row = mysql_fetch_array(mysql_query($query));
        $total = $row['num'];
        $adjacents = "2"; 

        $page = ($page == 0 ? 1 : $page);  
        $start = ($page - 1) * $per_page;                               

        $prev = $page - 1;                          
        $next = $page + 1;
        $lastpage = ceil($total/$per_page);
        $lpm1 = $lastpage - 1;

        $pagination = "";
        if($lastpage > 1)
        {   
            $pagination .= "<ul class='pagination'>";
                    $pagination .= "<li class='details'>Page $page of $lastpage</li>";
            if ($lastpage < 7 + ($adjacents * 2))
            {   
                for ($counter = 1; $counter <= $lastpage; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>$counter</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                }
            }
            elseif($lastpage > 5 + ($adjacents * 2))
            {
                if($page < 1 + ($adjacents * 2))     
                {
                    for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
                    {
                        if ($counter == $page)
                            $pagination.= "<li><a class='current'>$counter</a></li>";
                        else
                            $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                    }
                    $pagination.= "<li class='dot'>...</li>";
                    $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
                    $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";      
                }
                elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
                {
                    $pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                    $pagination.= "<li><a href='{$url}page=2'>2</a></li>";
                    $pagination.= "<li class='dot'>...</li>";
                    for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
                    {
                        if ($counter == $page)
                            $pagination.= "<li><a class='current'>$counter</a></li>";
                        else
                            $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                    }
                    $pagination.= "<li class='dot'>..</li>";
                    $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
                    $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";      
                }
                else
                {
                    $pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                    $pagination.= "<li><a href='{$url}page=2'>2</a></li>";
                    $pagination.= "<li class='dot'>..</li>";
                    for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
                    {
                        if ($counter == $page)
                            $pagination.= "<li><a class='current'>$counter</a></li>";
                        else
                            $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                    }
                }
            }

            if ($page < $counter - 1){ 
                $pagination.= "<li><a href='{$url}page=$next'>Next</a></li>";
                $pagination.= "<li><a href='{$url}page=$lastpage'>Last</a></li>";
            }else{
                $pagination.= "<li><a class='current'>Next</a></li>";
                $pagination.= "<li><a class='current'>Last</a></li>";
            }
            $pagination.= "</ul>\n";      
        }


        return $pagination;
    } 
?>
4

1 に答える 1

1

GETで複数の変数を渡したい場合は、次のように使用する必要があります。

url?var1 = x&var2 = y&var3 = z

PHPでは、次のようにそれらを回復します。

$var1=$_GET['var1'];
$var2=$_GET['var2'];
$var3=$_GET['var3'];

「paginator」の問題については、通常1つのクエリのみを実行し、クライアント側でjavascriptを使用してページ分割します。これにより、サーバーが応答するのを待たずにページを変更できます。

PHPのみでこれを行う場合は、クエリで「LIMIT x、y」を設定する必要があります。ここで、xはページの最初の要素であり、yは1ページに表示する要素の数です。たとえば、50要素のページを表示している場合:

$x=50*($pagenumber-1); //the index of the 1st element is 0
$y=50;
$query="SELECT * FROM table LIMIT $x,$y";

このようなものはうまくいくはずです。

于 2012-11-06T12:27:13.887 に答える