Pagination display error using mysqli

浪子不回头ぞ 提交于 2020-01-25 10:52:06

问题


I want to display 10 records per page

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

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

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

?>

回答1:


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.



来源:https://stackoverflow.com/questions/25325828/pagination-display-error-using-mysqli

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!