日期:2014-05-16  浏览次数:20403 次

两个设置分页的都出问题,想屎了...

<?php
$offset = isset($_GET['pid'])?intval($_GET['pid']):1;
if(!$offset) $offset = 1;
$perpage = 50;


$db = NEW PDO("mysql:host=localhost; port = 3306; dbname =library", 'root', 'cai123');
$total = $db->query('SELECT COUNT(*) FROM library.messages')->fetchColumn(0);

$sql = 'SELECT * FROM library.messages'." LIMIT $perpage OFFSET ".($offset-1);
$result = $db->query($sql);
if ($result)
{
foreach ($result->fetchAll() as $row)
{
echo "subject:    ".$row[5]."<br />";
}
}
else
{
$error = $db->errorInfo();
echo "error happened..".$error[2];
exit();
}

buildIndex($perpage, $total);//1,50,3500

/////////////////////////////////////////////////////////////////
function buildLink($index, $offset)
{
echo "<a href ='". htmlentities($_SERVER['PHP_SELF'])."?pid = $offset'>$index</a>";
}


function buildIndex($perpage, $total)
{
$separator = '|';
//buildLink($offset==1, '<<Prev', '')

for ($start = 1, $end = $perpage; $end < $total; $start += $perpage, $end += $perpage)
{
echo $separator;
buildLink("$start-$end", $start);
}

$end = ($total > $start) ? "$total":"";
echo $separator;
buildLink("$start-$end", $start);
}




?>


另一种思路的.....

<?php
$offset = isset($_GET['pid'])?intval($_GET['pid']):1;
if(!$offset) $offset = 1;
$perpage = 50;


$db = NEW PDO("mysql:host=localhost; port = 3306; dbname =library", 'root', 'cai123');
$total = $db->query('SELECT COUNT(*) FROM library.messages')->fetchColumn(0);

$sql = 'SELECT * FROM library.messages LIMIT '. ($offset -1)*$perpage.", $perpage ";
$result = $db->query($sql);
if ($result)
{
foreach ($result->fetchAll() as $row)
{
echo "subject:    ".$row[5]."<br />";
}
}
else
{
$error = $db->errorInfo();
echo "error happened..".$error[2];
exit();
}

$numpage = $total%$perpage;
if($total%$perpage) $numpage++;
$cur = $offset;
if ($cur < $numpage)
{
echo "<a href ='". htmlentities($_SERVER['PHP_SELF'])."?offset = ".($cur+1)."'> Next Page</a><br />";
}
if($cur > 0)
{
echo "<a href ='". htmlentities($_SERVER['PHP_SELF'])."?offset =". ($cur-1)."'> Prev Page</a><br />";

}


?>


问题如下:每次点击下一页,或者上一页,显示的都是同样的内容,即首页内容。 当数据表的内容有3000行...是怎么回事啊?
------解决方案--------------------
42 行有 ...setPage02.php?offset=$i'>$i....
而第 2 行是 $offset = isset($_GET['