分页递增问题

时间:2009-02-05 09:41:46

标签: php

我有以下代码,这是更大的应用程序中分页的基础。但是,它不起作用,因为虽然我应该从url获取pg的值,但pg永远不会高于2.出于某种原因,next = pg + 1;似乎总是将pg视为1,无论在url上传递什么。与上一个问题类似。我假设我压倒从GET获得的值,但我不确定在哪里。

问题似乎在于我如何计算$ max和限制,而不是0,10,10,10传递。另外,$ max之前的ifcode似乎没有成功阻止pg为0。

<?php
if (isset($_GET["pg"])) {
    $pg = $_GET["pg"];
} else $pg = 1;
$con = mysql_connect("localhost","","");
if(!$con) {
    die('Connection failed because of' .mysql_error());
}
mysql_select_db("ebay",$con);

if ($pg < 1) {
    $pg = 1;
} elseif ($pg > $last) {
    $pg = $last;
}
$table = 'AUCTIONS';
$page_rows = 10;
$max = ' limit ' .($pg - 1) * $page_rows .', ' .$page_rows;
$rows = getRowsByArticleSearch($query, $table, $max);
$rowcount = count($rows);
echo $rowcount;
$last = ceil($rowcount/$page_rows);
$page_rows = 10;
$rowcount = 2;
// Would normally obtain the number of rows returned, but database stuff is snipped for brevity
$last = ceil($rowcount/$page_rows);
if ($pg < 1) {
    $pg = 1;
} elseif ($pg > $last) {
    $pg = $last;
}
$self = htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'utf-8');
echo " <a href='$self?pg=1'> <<-First</a> ";
$previous = $pg-1;
echo " <a href='$self?pg=$previous'> <-Previous</a> ";
echo "---------------------------";
$next = $pg+1;
echo " <a href='$self?pg=$next'>Next -></a> ";
echo " <a href='$self?pg=$last'>Last ->></a> ";

3 个答案:

答案 0 :(得分:1)

这是你的问题:

$last = ceil($rowcount/$page_rows);

将$ last设置为1,然后你有:

if ($pg > $last) {
  $pg = $last;
}

编辑:我想知道你的意思是,而不是:

$last = ceil($page_rows/$rowcount);

再次编辑:根据Cassy的回答,你可能真的只需要为这些变量设置正确的值:

$page_rows = 10;
$rowcount = 2;

答案 1 :(得分:1)

代码是正确的,但数据错误。

当你有

$page_rows = 10;
$rowcount = 2;

实际上意味着,您在页面上显示2行,每行显示10行。这使它总共1页。

将其更改为

$page_rows = 10;
$rowcount = 200;
瞧,瞧,你会得到你的分页。

答案 2 :(得分:0)

基于现在修订的问题:

$rowcount = count($rows);

自然会总是返回10,因为你限制了结果

... LIMIT 10;

但这可能有所帮助:

SQL CALC FOUND ROWS 示例:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
    -> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();

第一个查询仍将返回您的文章,而第二个查询将返回前一个选择在不使用LIMIT子句时可能拥有的行数。

希望有所帮助。