如何在网页上创建页码(用于导航)

时间:2016-12-06 20:36:01

标签: php html

我正在编写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
    }
?>                  

1 个答案:

答案 0 :(得分:0)

你想要完成的是一种非常普遍的模式,它被称为分页。

您可以在mysql查询中使用LIMITOFFSET来获取数据的某个子集,并且可以将其用于基本分页。

例如,如果您希望每页显示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查询参数。