Php 分页递增问题

Php 分页递增问题,php,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"])) { $p

我有以下代码,这是在更大的应用程序中分页的基础。但是,它不起作用,因为虽然我应该从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> ";
这是您的问题:

$last = ceil($rowcount/$page_rows);
这将$last设置为1,然后您有:

if ($pg > $last) {
  $pg = $last;
}
编辑:我不知道你是不是这个意思:

$last = ceil($page_rows/$rowcount);
再次编辑:根据Cassy的回答,您可能真的只需要为这些变量设置正确的值:

$page_rows = 10;
$rowcount = 2;

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

当你有

$page_rows = 10;
$rowcount = 2;
这实际上意味着,在页面上显示2行,每行显示10行。这使它总共有1页

换成

$page_rows = 10;
$rowcount = 200;

瞧,你会得到你的页码。

基于现在修订的问题:

$rowcount = count($rows);
会自然地返回10,因为你限制了结果

... LIMIT 10;
但这可能有助于:

例如:

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name
    -> WHERE id > 100 LIMIT 10;
mysql> SELECT FOUND_ROWS();
第一个查询仍将返回文章,而第二个查询将返回上一个select如果不使用LIMIT子句将拥有的行数


希望能有所帮助。

嗨,本,谢谢你的回复。问题似乎是我得到了一个行数,但因为我限制了结果,所以它总是10。谢谢你的回答,我会研究它。我的代码基于这里的教程,你知道为什么有作品而我的没有吗?对//这里我们计算结果的数量$data=mysql_query(“SELECT*fromtopsites”)$rows=mysql\u num\u rows($data);看,他们在做我建议的事情:在计算页数之前先计算总行数。好的,我试过了,但是现在什么都没有了。我想知道您是否可以检查我的整个代码(仍然很短),因为现在没有输出任何内容,我不想就此提出新问题。嗨,凯西:检查这里:我做了那些改变,但有些地方仍然不对劲。如果我移动ifblock以确保pg在$max之前不小于0,那么sql将完全打破它的命令限制-10,10,知道为什么吗?