使用mysqli分页显示错误

时间:2014-08-15 11:44:35

标签: php mysqli pagination

我想每页显示10条记录

当我设置 $ per_page = 1 行时,此代码正常工作,显示每页显示1条记录,并且还会显示移动到下一页的选项

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

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

**// 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;
}

?>

1 个答案:

答案 0 :(得分:0)

我建议您将session_start();移到包含分页文件之上。将session_start();放在第一行文件中是个好习惯。