我正在编写PHP脚本以在我的网页上显示来自数据库(Mysql)的数据。我不希望所有信息都显示在单个页面上以避免滚动。但是,我想只显示几个,然后使用页码导航到其余部分。我设法创建页码,但仍然所有信息都显示在一个页面上。以下是我的代码:
<?php
include('./includes/DB_Config.php');
$status = 1;
// Set number of Post per page for navigation
$post_per_page = 2;
if (isset($_GET['page']))
{
$startP = ($_GET['page'] - 1) * $post_per_page;
}
else
{
$startP = 0;
}
$post = mysqli_query ($mySQL_Conn, "SELECT * FROM BlogPost WHERE status = '$status'");
// Fetch Data or number of rows
$dataRw = mysqli_num_rows($post);
$pages = $dataRw / $post_per_page;
if ($dataRw == 0)
{
$_SESSION['NoPost'] = "No Post Found!";
}
else
{
unset($_SESSION['NoPost']);
//$pages = ceil($dataRw / $rows_per_page);
//$pages = array_slice($dataRw, $startP, $post_per_page);
while ($data = mysqli_fetch_array($post)) //Fetch data in array
{
//Assign data to variabes
$name = $data['blogger_Name'];
$postDate = $data['dateTime'];
$blogpost = $data['blog_message'];
$date = strtotime($postDate);
?>
<p> <span><?php echo $_SESSION['NoPost'] ; ?> </span></p>
<p> <span>By:</span><?php echo $name; ?> </p>
<p> <span>Posted On: </span> <?php echo date("j F Y", $date); ?> </p>
<p> <span>Post: </span><?php echo $blogpost; ?> </p>
<?php
}
}
?>
<hr>
<?php
for ($currentpage = 0; $currentpage < $pages; $currentpage++ )
{
?>
<span><a href="?page=<?php $currentpage + 1; ?>"> <?php echo $currentpage + 1; ?></a> </span>
<?php
}
?>
答案 0 :(得分:0)
你想要完成的是一种非常普遍的模式,它被称为分页。
您可以在mysql查询中使用LIMIT
和OFFSET
来获取数据的某个子集,并且可以将其用于基本分页。
例如,如果您希望每页显示50个结果,并且用户位于第三页,则将LIMIT
设置为50,将OFFSET
设置为2 * 50(100),然后保留请注意,第一页的偏移量为0,因此我们将页面减一。
您可以使用以下sql查询来获取特定页面的数据子集。
"SELECT * FROM Users LIMIT $num_results OFFSET ".(($page_num-1)*$num_results);
您可以通过从Users表中获取总行数并将其除以$ num_results来获取可能页面的总数。一个好主意可能是让您的输出脚本采用将用作页码的GET
url查询参数。