我正在使用github中的jspaginator
一次显示10条通知,每页显示5条通知。但是我没有提供任何NEXT按钮来获取用户请求的更多结果。所以我想实现它我自己。我有以下PHP代码 -
$start=0;
$end=10;
$query='select * from notice order by id desc limit '.$start.','.$end.';';
if($query_run=mysql_query($query))
{
$query_num_rows=mysql_num_rows($query_run);
if($query_num_rows==0)
{
echo '<h4>No Notices</h4>';
}else {
echo '<div id="green-contents" class="contents" ">
<table id="mt" cellpadding="0" cellspacing="0" border="0" class="table">
<tr class="header">
<th>
Date Posted
</th>
<th width="55%">
title
</th>
<th>
Posted By
</th>
<th>
Branch
</th>
<th>
Semester
</th>
</tr>';
for($i=0;$i<$query_num_rows;$i++)
{
echo '<tr>
<td>'.mysql_result($query_run,$i,'posted_on').'</td>
<td class="note"><h4><a href="view_notice.php?id='.
mysql_result($query_run,$i,'id').'">';
if(strlen(mysql_result($query_run,$i,'title'))>48)
echo (substr(mysql_result($query_run,$i,'title'),0,45)).'.....';
else
echo mysql_result($query_run,$i,'title');
echo '<td>'.mysql_result($query_run,$i,'posted_by').'</td>
<td>'.mysql_result($query_run,$i,'branch').'</td>
<td>'.mysql_result($query_run,$i,'semester').'</td>';
}
echo '</table>';
}
}else
echo mysql_error();
现在,如何更改$start
和$end
并再次执行查询以获取下一个10个结果。
答案 0 :(得分:1)
您需要动态start
参数。因此,可以通过$_GET
参数添加 http://example.com/filename.php?page=1 等网址。
您的脚本如下所示:
<?php
$batch = 10;
$page = (intval($_GET['page']) > 0) ? $_GET['page'] : 1; // set $page if it's a number greater than zero
$start = (($page - 1) * $batch);
$sql = "SELECT * FROM tbl LIMIT :offset, :limit";
$stmt = $db->prepare($sql);
$stmt->bindParam(':offset', $start, PDO::PARAM_INT);
$stmt->bindParam(':limit', $batch, PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetchAll();
您会注意到我在上面的代码段中没有使用mysql_
函数。原因有两方面:
答案 1 :(得分:1)
您可以在表单中添加隐藏的输入
<input type="hidden" name="page" value="'.$_GET['page']+1.'>
然后是你的$ start,$ end vars
if (isset($_GET['page']))
{
$start = $_GET['page'];
$end = $_GET['page']+9;
}
else
{
$start = 0;
$end = 10;
}
答案 2 :(得分:0)
您可以在网址中传递下一页的值,例如notices.php?page=2
,并使用点击代码$start
值
$page = isset($_GET["page"]) ? intval($_GET["page"]) : 1;
if (0 == $page) {
$page = 1;
}
$start = 10 * ($page - 1);
$end = 10;