0

このスレッドから作業コードを取得しました: ナビゲーション用の次と前のボタンの作成

それは私にとってはうまくいきますが、最初または最後のIDに到達した場合、リンクを無効にする方法はありますか?

これが私の簡単なコードです:

function getNavID($id) {

$result4= mysql_query("SELECT 
( SELECT id FROM products_list WHERE id > '$id' LIMIT 1 )
AS nextValue,
( SELECT id FROM products_list WHERE id < '$id' ORDER BY id DESC LIMIT 1 )
AS prevValue
FROM products_list");
if ($resultID = mysql_fetch_array($result4)) {
    return $resultID;
}
else {
    return NULL;
}
}

$LinkID = getNavID($id);

<p><a href="update.php?id=<?php echo urlencode($LinkID['prevValue']); ?>">Previous</a></p>
<p><a href="update.php?id=<?php echo urlencode($LinkID['nextValue']); ?>">Next</a></p>

私が今いるページが ID=1 であるとしましょう。論理的には、1 より小さい ID はありません。ID が最小および最大 ID に達した場合にリンクを無効にする方法はありますか?

よろしくお願いします。

よろしく、ジェフ

4

1 に答える 1

2

ID=1 の場合、簡単に$LinkID['prevValue']確認できる NULL を返す必要があります。前/次の値がある場合にのみリンクを印刷するように、チェックを含めます。

<p>
<?php
    if (!is_null($LinkID['prevValue'])) {
>?
    <a href="update.php?id=<?php echo urlencode($LinkID['prevValue']); ?>">Previous</a>
<?php
    } else {
        echo "No previous entries.";
    }
?>
</p>

次のエントリについても同様です。

ところで、完全を期すために、SQL ステートメントを次のように書き直します。

SELECT 
    ( SELECT id FROM products_list
        WHERE id > '$id' LIMIT 1 ) AS nextValue,
    ( SELECT id FROM products_list
        WHERE id < '$id' ORDER BY id DESC LIMIT 1 ) AS prevValue
    FROM products_list
    LIMIT 1

つまり、最後に LIMIT 1 を追加します。結果の違いに気付かないかもしれませんが、ステートメントを使用すると、データベースはテーブル products_list のエントリごとに 1 つの行を提供します (最初のものだけを使用し、それらはすべて等しいです)。

于 2012-08-21T10:56:53.890 に答える