我有一些代码根据记录ID转到数据库中的下一条记录,当它下次点击它时到达最后一条记录,由于表中没有记录而导致代码中断网址无效。是否有一些错误处理我可以用它来显示最后一条记录时的警报?感谢
<a id="next" data-ajax="true" href="eventviewtester.php?eventid= <?php echo $_GET['eventid'] +1;?>" style="display:none;"></a>
答案 0 :(得分:1)
好像你正在处理一种退化形式的分页 - 你一次分页一个记录的情况。因此,您应该使用典型的分页方法,该方法要求您了解总体可能结果集的大小以及该结果集中的位置。
我建议不要盲目地依赖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>';
答案 1 :(得分:1)
查找记录总数,然后在计数小于或等于该数字时显示链接。
// 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';
}
答案 2 :(得分:0)
我不确定这一点,试试吧。使用计数值获取记录数。
if($count>$_GET['eventid']){
<a id="next" data-ajax="true" href="eventviewtester.php?eventid= <?php echo $_GET['eventid'] +1;?>" style="display:none;"></a>
}