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

Php 下一条记录不存在错误处理,php,mysql,Php,Mysql,我有一段代码,根据记录id转到数据库中的下一条记录,当下次单击最后一条记录时,由于该记录不在表中且url无效,代码将中断。是否有一些错误处理我可以放在这个显示警报时,最后一个记录已经达到?谢谢 <a id="next" data-ajax="true" href="eventviewtester.php?eventid= <?php echo $_GET['eventid'] +1;?>" style="display:none;"></a> 我不确定,试

我有一段代码,根据记录id转到数据库中的下一条记录,当下次单击最后一条记录时,由于该记录不在表中且url无效,代码将中断。是否有一些错误处理我可以放在这个显示警报时,最后一个记录已经达到?谢谢

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

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

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

似乎您正在处理一种退化的分页形式—一次分页一条记录的情况。因此,您应该使用典型的分页方法,该方法要求您了解整个可能结果集的大小以及您在该结果集中的位置

我建议不要盲目地依赖
行id+1
进行分页查看,因为这种机制可能不可靠(例如,如果从表中删除一行,在数字序列中留下间隙,会发生什么情况?)。您应该对表执行
limitx,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号(您可以在第10页的链接中调用第11页),因此我们只返回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>';
//您将在第二次迭代中通过DB结果集获取下一个事件id
$next_event_id=$row['eventid'];
//然后在构建URL引用时使用它
回声';

查找记录总数,如果计数小于或等于该数字,则显示链接

// 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';
}
//查找记录总数
$number_of_记录=20;
//检查计数是否小于或等于总数

如果($\u GET['eventid']+1我可以获取事件id的最大值并执行任何小于或等于该值的操作吗?我如何将其实现到现有的HTML中?是的,获取事件id的最大值将完成完全相同的事情。至于将其放入现有的HTML中,只需使用标准的PHP标记插入代码。PHP就是为此.F设计的例如,如果您想将PHP代码插入表单元格,您可以这样做:
@Quickrick这就是我所拥有的,它在第9行给了我一个错误。}您的MySQL语法中有一个错误。MAX应该这样使用:MySQL\u query(“从事件中选择MAX(event\u id));你能给我更多的信息或一个如何做的例子吗?@Steven在SO和整个互联网上都有许多分页查询的例子。我在我的答案中添加了几个分页查询的例子,希望能让你开始。还有一个问题。我如何更改锚定标记以转到下一条记录?页面的方式因为它是一个记录的单一视图,所以这就是为什么我最初对url使用了eventid+1的黑客方法。谢谢。这是唯一缺少的东西,然后我可以批准你的答案为接受。谢谢。@Steven这取决于你是想让你的应用程序处理url中的页面还是事件id中的页面e同一事件ID可能会出现在不同的页面上,具体取决于删除或插入之前的项目。使用事件ID方法,您的URL对于单个事件ID将始终保持不变,但下一个事件可能会更改。因此,该方法实际上是由您所需的用户体验决定的。