繁体   English   中英

下一条记录不存在错误处理

[英]Next record doesnt exist error handling

我有一些代码根据记录ID转到数据库中的下一条记录,当它下次点击它时到达最后一条记录,由于表中没有记录而且url没有有效。 是否有一些错误处理我可以用它来显示最后一条记录时的警报? 谢谢

<a id="next" data-ajax="true"  href="eventviewtester.php?eventid= <?php echo $_GET['eventid'] +1;?>" style="display:none;"></a>

看起来好像你正在处理一种退化形式的分页 - 你一次分页单个记录的情况。 因此,您应该使用典型的分页方法,该方法要求您了解总可能结果集的大小以及该结果集中的位置。

我建议远离盲目依赖row id + 1进行分页查看,因为这种机制可能不可靠(例如,如果从表中删除一行而在数字序列中留下间隙会发生什么?)。 您应该在表上执行LIMIT X,Y类型的查询,以明确了解您正在处理的行。 也许在你的情况下,这意味着一次获得一组两个记录,这样你就可以显示当前记录,并显示指向下一条记录的链接(如果你已达到记录上限和你的查询,则不显示next链接只返回一条记录)。

以下是一些查询建议。

这将获得当前选定的记录加上下一个最高记录。 如果只返回一行,则这是最后一条记录

SELECT [fields]
FROM [table]
WHERE eventid >= [value from GET]
ORDER BY eventid ASC
LIMIT 2

或者,如果你想要处理“页面”,即不依赖于事件id本身,而是依赖于X位置的事件

SELECT [fields]
FROM [table]
ORDER BY eventid ASC
LIMIT X,1

这里X将是一个从零开始的值,这样如果你想按升序排列第10个事件,你将传递一个值9.这里你不需要知道下一个事件id号(你可以只需要调用第11页)在第10页的链接中,所以我们只返回1条记录。 当然,要了解执行额外的简单查询以确定表中行数所需的页面总数。

由于您在评论中提到要尝试基于eventid的方法,因此我认为第一个查询是您需要使用的。 因此,当您读取结果集时,显然第一条记录将包含您在当前页面上显示所需的数据。 然后,您需要从第二条记录中获取eventid信息,并在构建查询字符串时使用它。

// you would grab next event id in your second iteration through the DB result set
$next_event_id = $row['eventid'];

// then use it when building your URL reference
echo '<a id="next" data-ajax="true"  href="eventviewtester.php?eventid=' . $next_event_id . '" style="display:none;"></a>';

查找记录总数,然后在计数小于或等于该数字时显示链接。

// FIND TOTAL RECORD COUNT
$number_of_records = 20;

// CHECK TO SEE IF THE COUNT IS LESS THAN OR EQUAL TO THE TOTAL 
if ($_GET['eventid'] + 1 <= $number_of_records) {
    echo '<a id="next" data-ajax="true"  href="eventviewtester.php?eventid='.($_GET['eventid'] + 1).'" style="display:none;">Link Text</a>';
}
else {
    echo 'Non-Link Text';
}

我不确定这个,试试这个。 使用计数值获取记录数。

if($count>$_GET['eventid']){
<a id="next" data-ajax="true"  href="eventviewtester.php?eventid= <?php echo $_GET['eventid'] +1;?>" style="display:none;"></a>
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM