今天早些时候尝试了它,但是我已经重新完成了脚本并且我得到了部分工作,但是它只显示了所有页面上的最新2个帖子(只有两页atm因为只有4个博客帖子)那么我在这里失踪的是什么?
<?php
$rowsPerPage = 2;
try
{
$conn = new PDO( "sqlsrv:server=localhost ; Database=blog", "******", "*********");
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(Exception $e)
{
die( print_r( $e->getMessage() ) );
}
try
{
$tsql = "SELECT COUNT(blogID) FROM blog_posts";
$stmt = $conn->query($tsql);
$rowsReturned = $stmt->fetch(PDO::FETCH_NUM);
if($rowsReturned[0] == 0)
{
echo "No rows returned.";
}
else
{
$numOfPages = ceil($rowsReturned[0]/$rowsPerPage);
for($i = 1; $i<=$numOfPages; $i++)
{
$pageNum = "index.php?pageID=$i";
print("<a href=$pageNum>$i</a> ");
}
echo "<br/><br/>";
}
$tsql = "SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY blogID desc)
AS RowNumber,
blog_title,
blog_post,
blog_author,
blog_category,
blog_date
FROM blog_posts)
AS Temp
WHERE RowNumber BETWEEN ? AND ?";
$stmt2 = $conn->prepare($tsql);
if(isset($_GET['pageNum']))
{
$highRowNum = $_GET['pageNum'] * $rowsPerPage;
$lowRowNum = $highRowNum - $rowsPerPage + 1;
}
else
{
$lowRowNum = 1;
$highRowNum = $rowsPerPage;
}
$params = array(&$lowRowNum, &$highRowNum);
$stmt2->execute(array($lowRowNum, $highRowNum));
while($row = $stmt2->fetch(PDO::FETCH_NUM) )
{
echo " $row[0]";
echo "<h2 style=text-align:center>", $row[1],"</h2>";
echo "$row[2]";
echo "$row[3]";
echo "$row[4]";
echo date_format( new DateTime($row['5']), 'd M y, H:i' );
}
}
catch(Exception $e)
{
die( print_r( $e->getMessage() ) );
}
?>
最后,为脚本中的博客类别添加分页还需要做更多的工作吗?当脚本增长到15行以下时,我有点失明
答案 0 :(得分:3)
我只是把它变成一个社区维基,因为我不想从中获得任何东西。
“?pageID,你正在做$ _GET ['pageNum']。我会调用那个未定义的...并且可能依赖于$ pageNum。它无法正常工作。”
“@ Fred-ii-哈哈我知道这很简单,就像我写的那样,经过15行后我才会失明...非常感谢你看看它!我很感激! - per卡尔斯特罗姆“
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。