使用mysql结果创建导航的Next和Previous按钮


Creating Next and Previous buttons for navigation using mysql result

我已经从这个线程中获取了工作代码:为导航创建下一个和上一个按钮

它对我有效,但现在我想问,如果链接到达第一个或最后一个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,我有什么方法可以禁用链接吗?

提前感谢各位。

谨致问候,Jeff

对于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表中的每个条目提供一行(您只使用其中的第一行,它们都是相等的)。