-5

いくつかのエラーがあり、問題を修正できません。助けてくれませんか?これは、非推奨の関数を使用しているためですか? どうすればこれを修正できますか?

ここにコードがあります

<?php

class Pagination {
    function getStartRow($page,$limit){
        $startrow = $page * $limit - ($limit);
        return $startrow;
    }   
    function showPageNumbers($totalrows,$page,$limit){

        $query_string = $this->queryString();

        $pagination_links = null;

        /*
        PAGINATION SCRIPT
        seperates the list into pages
        */      
         $numofpages = $totalrows / $limit; 
        /* We divide our total amount of rows (for example 102) by the limit (25). This 

    will yield 4.08, which we can round down to 4. In the next few lines, we'll 
    create 4 pages, and then check to see if we have extra rows remaining for a 5th 
    page. */

        for($i = 1; $i <= $numofpages; $i++){
        /* This for loop will add 1 to $i at the end of each pass until $i is greater 
    than $numofpages (4.08). */     

          if($i == $page){
                $pagination_links .= '<div class="page-link"><span>'.$i.'</span></div> ';
            }else{ 
                $pagination_links .= '<div class="page-link"><a href="?page='.$i.'&'.$query_string.'">'.$i.'</a></div> '; 
            }
            /* This if statement will not make the current page number available in 
    link form. It will, however, make all other pages available in link form. */
        }   // This ends the for loop

        if(($totalrows % $limit) != 0){
        /* The above statement is the key to knowing if there are remainders, and it's 
        all because of the %. In PHP, C++, and other languages, the % is known as a 
        Modulus. It returns the remainder after dividing two numbers. If there is no 
        remainder, it returns zero. In our example, it will return 0.8 */

            if($i == $page){
                $pagination_links .= '<div class="page-link"><span>'.$i.'</span></div> ';
            }else{
                $pagination_links .= '<div class="page-link"><a href="?page='.$i.'&'.$query_string.'">'.$i.'</a></div> ';
            }
            /* This is the exact statement that turns pages into link form that is used above */ 
        }   // Ends the if statement 

        return $pagination_links;
    }

    //added by drale.com - 1-19-2010
    function showNext($totalrows,$page,$limit,$text="next &raquo;"){    
        $next_link = null;
        $numofpages = $totalrows / $limit;

        if($page < $numofpages){
            $page++;
            $next_link = '<div class="page-link"><a href="?page='.$page.'&'.$query_string.'">'.$text.'</a></div>';
        }

        return $next_link;
    }

    function showPrev($totalrows,$page,$limit,$text="&laquo; prev"){    
        $next_link = null;
        $numofpages = $totalrows / $limit;

        if($page > 1){
            $page--;
            $prev_link = '<div class="page-link"><a href="?page='.$page.'&'.$query_string.'">'.$text.'</a></div>';
        }

        return $prev_link;
    }

    function queryString(){ 
        //matches up to 10 digits in page number
        $query_string = eregi_replace("page=[0-9]{0,10}&","",$_SERVER['QUERY_STRING']);
        return $query_string;
    }
} 
?>

PHP のバージョンを 5.3 にアップグレードしたためですか?

4

4 に答える 4

2

エラーが発生する理由は、次のコードが原因です。

    if($page > 1){
        $page--;
        $prev_link = '<div class="page-link"><a href="?page='.$page.'&'.$query_string.'">'.$text.'</a></div>';
    }

    return $prev_link;

$prev_link変数はこれより前に初期化されず、 が より大きい場合にのみ設定され$pageます1

したがって、$page等しい1(またはそれより小さい?) 場合、returnステートメントは存在しない変数を返そうとします。

これにより、表示されているエラーが発生します。

これを修正するには、次のように関数の先頭に行を追加します。

$prev_link = '';

これにより、ページ番号に関係なく、変数が確実に初期化されます。

$query_stringエラーはまったく同じですが、プログラムの他の場所にあります。上記のヘルプを適応させることで、それを修正する方法を見つけていただければ幸いです。

最後に、eregPHP バージョンを 5.3 にアップグレードしたにもかかわらず、コードが以前の PHP バージョン用に開発されたため、エラーが発生しました。このereg()関数および関連するすべての関数は、PHP 5.3 以降サポートされていないためpreg_match()、 、 などに置き換える必要があります。SOpreg_replace()については、これに役立つ質問がたくさんあります。たとえば、次の質問を試してみてください。

それが役立つことを願っています。

于 2013-05-20T16:25:56.050 に答える
1

非推奨: 関数 eregi_replace() は C:\xampp\htdocs\manager\Pagination.php の 86 行目で非推奨です

preg_replace代わりに次のように使用します。

$query_string = preg_replace("page=[0-9]{0,10}&","",$_SERVER['QUERY_STRING']);

注意: 未定義の変数: C:\xampp\htdocs\manager\Pagination.php の 81 行目の prev_link

prev_linkが実際には定義されていないため、これが発生しているreturnため、コードを次のように変更します。

$prev_link = null;
if($page > 1){
    $page--;
    $prev_link = '<div class="page-link"><a href="?page='.$page.'&'.$query_string.'">'.$text.'</a></div>';
}

return $prev_link;

注意: 未定義の変数: C:\xampp\htdocs\manager\Pagination.php の 66 行目の query_string

これは、変数$query_stringが関数で定義されていないために発生していますshowPrev。どこから取得したいのかわかりませんが、パラメーターとして送信するか、どこかから収集する必要があります。

次に、受け取った反対票に対処します。このような質問には努力が見られません。あなたは何らかの努力をしたかもしれませんが、それを文書化していませんでした. あなたがすべてのコードを提供したのは良いことですが、あなたがすでにどのような努力をしてきたかを示すことを忘れないでください。

于 2013-05-20T16:25:16.367 に答える