使用mysqli的分页显示错误 [英] Pagination display error using mysqli

查看:40
本文介绍了使用mysqli的分页显示错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想每页显示10条记录

I want to display 10 records per page

当我通过每页使用这1条记录设置行 $ per_page = 1 时,此代码可以正常工作,并且还会出现移至下一页的选项

This code works fine when i set the line $per_page = 1 by using this 1 record per page is displayed and the option to move to next page also appears

当我将此行更新为 $ per_page = 10; 时,将显示所有记录,但移至下一页"选项消失

when i update this line to $per_page = 10; all the records are displayed but Move to next page options disappears

有两个文件view_data.php,其中写入了完整的逻辑 和pagination.php,其中编写了分页布局代码

There are two files view_data.php in which the complete logic is written and pagination.php in which pagination layout code is written

**// view_data.php**

<?php
 include_once('pagination.php');
session_start();

$db_username = 'aa';
$db_password = 'aa';
$db_name = 'edu';
$db_host = 'localhost';

$conDB = mysqli_connect

($db_host, $db_username, $db_password,$db_name)or die('Error: Could not connect to database.');


$page = (int)(!isset

($_GET["page"]) ? 1 : $_GET["page"]);
if ($page <= 0) $page = 1;

$per_page = 1; /////////////// if i set per_page=1 than this code works fine and display 1 record per page and the option to move on the next page also appears  but when i change it to $per_page = 10 than records are displayed but move to next page option disappears

$startpoint = ($page * $per_page) - $per_page;

$statement = "`qualification` ORDER BY `q_title` ASC"; 

// Change table name according to your database table.

$results = mysqli_query($conDB,"SELECT * FROM {$statement} LIMIT 

{$startpoint} , {$per_page}");

if (mysqli_num_rows($results) == 0) {

    echo "No records are found.";

} else {



echo "<font color=orange size=5px > <br><br><br>View Data:<br><br>";


 echo "<font color=black size=5px > ";
$count=0;

    while ($r = mysqli_fetch_array($results))

 {

   echo "<font color=black size=5px>";
    $q_id= $r["q_id"];
    $q_title=$r["q_title"];

    echo "<li><a 

href='data_db.php?id=$q_id'> <font color=black size=5px >$q_title</a></li> <br>";   

    }
}


$id=$q_id;
// displaying paginaiton.
echo "<font color=orange size=5px /><b>";
echo pagination($statement,$per_page,$page,$id);
echo "</b>";


?>






**/// Pagination.php**

<style>



ul.pagination {
    margin-top:50px;
    text-align:center;
     padding:0  100px;



}
ul.pagination li {
    display:inline;
    padding:0 10px;
}
ul.pagination a {
    color:#194C85;
    display:inline-block;
    padding:5px 10px;
    border:1px solid #00C;
    text-decoration:none;
}
ul.pagination a:hover,
ul.pagination a.current {
    background:#194C85;
    color:#fff;
}
</style>


    <?php
#$id = $_GET['id'];         
function pagination($query,$per_page=1,$page,$id,$url='?'){  
    global $conDB;

    $query = "SELECT COUNT(*) as `num` FROM {$query}";
    $row = mysqli_fetch_array(mysqli_query($conDB,$query));
    $total = $row['num'];
    $adjacents = "2";

    $prevlabel = "&lsaquo; Prev";
    $nextlabel = "Next &rsaquo;";

    $page = ($page == 0 ? 1 : $page); 
    $start = ($page - 1) * $per_page;                              

    $prev = $page - 1;                         
    $next = $page + 1;

    $lastpage = ceil($total/$per_page);

    $lpm1 = $lastpage - 1; // //last page minus 1

    $pagination = "";
    if($lastpage > 1){  
        $pagination .= "<ul class='pagination'>";
        $pagination .= "<li class='page_info'>Page {$page} of {$lastpage}</li>";

            if ($page > 1) $pagination.= "<li><a href='{$url}id={$id}&page={$prev}'>{$prevlabel}</a></li>";

        if ($lastpage < 7 + ($adjacents * 2)){  
            for ($counter = 1; $counter <= $lastpage; $counter++){
                if ($counter == $page)
                    $pagination.= "<li><a class='current'>{$counter}</a></li>";
                else
                    $pagination.= "<li><a href='{$url}id={$id}&page={$counter}'>{$counter}</a></li>";                   
            }

        } elseif($lastpage > 5 + ($adjacents * 2)){

            if($page < 1 + ($adjacents * 2)) {

                for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++){
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>{$counter}</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}id={$id}&page={$counter}'>{$counter}</a></li>";                   
                }
                $pagination.= "<li class='dot'>...</li>";
                $pagination.= "<li><a href='{$url}id={$id}&page={$lpm1}'>{$lpm1}</a></li>";
                $pagination.= "<li><a href='{$url}id={$id}&page={$lastpage}'>{$lastpage}</a></li>"; 

            } elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) {

                $pagination.= "<li><a href='{$url}id={$id}&page=1'>1</a></li>";
                $pagination.= "<li><a href='{$url}id={$id}&page=2'>2</a></li>";
                $pagination.= "<li class='dot'>...</li>";
                for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>{$counter}</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}id={$id}&page={$counter}'>{$counter}</a></li>";                   
                }
                $pagination.= "<li class='dot'>..</li>";
                $pagination.= "<li><a href='{$url}id={$id}&page={$lpm1}'>{$lpm1}</a></li>";
                $pagination.= "<li><a href='{$url}id={$id}&page={$lastpage}'>{$lastpage}</a></li>";     

            } else {

                $pagination.= "<li><a href='{$url}id={$id}&page=1'>1</a></li>";
                $pagination.= "<li><a href='{$url}id={$id}&page=2'>2</a></li>";
                $pagination.= "<li class='dot'>..</li>";
                for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>{$counter}</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}id={$id}&page={$counter}'>{$counter}</a></li>";                   
                }
            }
        }

            if ($page < $counter - 1) $pagination.= "<li><a href='{$url}id={$id}&page={$next}'>{$nextlabel}</a></li>";

        $pagination.= "</ul>";       
    }

    return $pagination;
}

?>

推荐答案

我建议您将session_start();移至包含分页文件的上方.最好在文件的第一行包含session_start();.

I suggest you to move session_start(); to above the inclusion of pagination file. It would be good practice to have session_start(); in very first line of file.

这篇关于使用mysqli的分页显示错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆