0

PHP を使用して mysql クエリの出力を分離する方法をまとめたので、結果がページごとにグループ化されて返されます (つまり、ページ 0 には投稿 1 から 10 があり、ページ 1 には投稿 11 から 20 があるなど)。 )。

URL は次のように変数を渡します。

http://domain.com/test.php?page=0 (this will render results 1 through 10)

その特定のページの MySQL クエリでは値 0 が使用されます。これは次のようになります。

$page = $_GET['page'];
select <search> limit $page, 10; (this has been made brief to spare you the superfluous details).

そのため、課題は、そのページに適切な結果を表示するために、URL からクエリに渡されるこの値を取得することです。私はそれを行う方法を考え出しましたが、率直に言って、私はそれに不満を持っています.

if ($page == "0")
        {
        $page = 0;
        }
elseif ($page == "1")
        {
        $page = 10;
        }
elseif ($page == "2")
        {
        $page = 20;
        }
elseif ($page == "3")
        {
        $page = 30;
        }
elseif ($page == "4")
        {
        $page = 40;
        }
elseif ($page == "5")
        {
        $page = 50;
        }
elseif ($page == "6")
        {
        $page = 60;
        }

私が言ったように、これはうまくいくようですが、これを行うためのよりスマートな方法はありますか? 値をより効率的に変更する必要があります。また、できれば、明日気が変わってページごとに 15 の投稿をレンダリングすることに決めた場合でも、難しくならないようにする方法を見つける必要があります。

4

2 に答える 2

6

うーん... 明らかな何かが欠けているかもしれませんが、これをやってみませんか?

$page = $page * 10;

明日、1 ページあたり 15 の投稿を表示することにした場合は、15 に変更してください。

于 2013-10-17T18:03:29.650 に答える
3

次のような関数を使用できます。

function getNum($page) {
    return (int) $page * 10;
}

そして、次のように使用します:

$page = getNum($page);

これは、複数回実行する場合に適しています。また、ロジックを関数にまとめると、後でコードを更新しやすくなります。すべてのステートメントでロジックを変更する必要はありません。1 つの関数を変更するだけで十分です。

への型キャストintも、クエリに数値のみが挿入されるようにします。

ただし、データベースに挿入する前に、ユーザー入力を適切にエスケープする必要があります (パラメータ化されたクエリでMySQLiまたはPDOを使用することをお勧めします)。

于 2013-10-17T18:04:12.293 に答える