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

时间:2012-08-21 10:52:25

标签: php mysql

我从这个帖子中获取了工作代码: Creating Next and Previous buttons for navigation

它对我有用但是现在我想问一下,如果链接到达第一个或最后一个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,那么逻辑上,没有ID小于1.如果ID达到最小和最大ID,我有什么方法可以禁用链接?< / p>

先谢谢你们。

此致 杰夫

1 个答案:

答案 0 :(得分:2)

对于ID = 1,$LinkID['prevValue']应返回NULL,您可以检查easily。包含一个检查,以便只有在存在上一个/下一个值时才打印链接,例如:

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