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

于 2012-08-21T10:56:53.890 回答