我想在我的php页面中加入分页。我从mysql数据库中获取结果并在表中显示它们。有没有人可以帮助我如何在不使用javascript或jquery的情况下做到这一点。
答案 0 :(得分:1)
如果DB_Pageris不可用,您可以使用pc_print_link()和pc_indexed_links( )示例10-2和10-3中所示的函数,以生成格式正确的链接。
例10-2。
function pc_print_link($inactive,$text,$offset='') {
if ($inactive) {
printf('<font color="#666666">%s</font>',$text);
} else {
printf('<a
href="%s?offset=%d">%s</a>',$_SERVER['PHP_SELF'],$offset,$text);
}
}
function pc_indexed_links($total,$offset,$per_page) {
$separator =' | ';
// print "<<Prev" link
pc_print_link($offset == 1, '<<Prev', $offset -$per_page);
// print all groupings except last one
for ($start = 1, $end = $per_page;
$end < $total;
$start += $per_page, $end += $per_page) {
print $separator;
pc_print_link($offset == $start, "$start-$end", $start);
}
/* print the last grouping -* at this point, $start points to the element at the beginning
* of the la
st grouping
*/
/* the text should only contain a range if there's more than
* one element on the last page. For example, the last grouping
* of 11 elements with 5 per page should just say "11", not "11-11"
*/
$end = ($total > $start) ? "-$total" : '';
print $separator;
pc_print_link($offset == $start, "$start$end", $start);
// print "Next>>" link
print $separator;
pc_print_link($offset == $start, 'Next>>',$offset + $per_page);
}
要使用这些功能,请使用以下方法检索正确的数据子集 DB :: modifyLimitQuery()然后将其打印出来。调用pc_indexed_links()来显示 索引链接:
$offset = intval($_REQUEST['offset']);
if (! $offset) { $offset = 1; }
$per_page = 5;
$total = $dbh->getOne('SELECT COUNT(*)FROM zodiac');
$sql = $dbh->modifyLimitQuery('SELECT * FROM zodiac ORDER BY id',
$offset -1,$per_page);
$ar = $dbh->getAll($sql);
foreach ($ar as $k => $v) {
print "$v->sign, $v->symbol ($v->id)<br>";
}
pc_indexed_links($total,$offset,$per_page);
printf("<br>(Displaying %d -%d of %d)",$offset,$offset+$k,$total);
连接到数据库后,您需要确保$ offset具有适当的值。 $ offset是应显示的结果集中的开始记录。从头开始 结果集的开头,$ offsets应为1.变量$ per_pageis设置为如何 每页显示许多记录,$ total是整个记录的总数 结果集。对于此示例,将显示所有十二生肖记录,因此$ totalis设置为 整个表中所有行的计数。 以正确顺序检索信息的SQL查询是: SELECT * FROM zodiac ORDER BY id 使用modifyLimitQuery()来限制要检索的行。你想要检索 $ per_pagerows,从$ offset -1开始,因为第一行是0而不是1 数据库。 modifyLimitQuery()方法将正确的特定于数据库的逻辑应用于 限制查询返回的行。 $ dbh-&gt; getAll($ sql)检索相关行,然后显示信息 从每一行。在行之后,pc_indexed_links()提供了导航链接。
答案 1 :(得分:0)
让我们说你想要每页10个结果,但想要滚动它们。
您可以将LIMIT 0,10
添加到您的mysql查询中。
然后在表格底部添加一个链接转到下一组结果。 (类似于table.php?page=2
)
在此页面上,将查询更改为LIMIT 10,20
。
这应该是足以帮助您入门的信息。