简体   繁体   中英

Pagination not showing data from second page onwards

The pagination code is not working correctly. Here, $query is giving correct value by running in query box and $per_page=3, $page=1 $sub is the part of $query. There is no error display, the page link sends to a blank page every time.

function pagination($query,$per_page,$page,$sub, $url='?')
    {        
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "project";
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    if (!$conn) 
    {
        die("Connection failed: " . mysqli_connect_error());
    }
            $subject=$sub;
            $query = "SELECT COUNT(*) as `num` FROM {$query}";

            $x1 = mysqli_query($conn,$query);
            $row = mysqli_fetch_array($x1,MYSQLI_ASSOC);
            $total = $row['num'];
            $adjacents = "2"; 

            //$page = ($page == 0 ? 1 : $page); 
            $page = isset($_GET['page']) ? max((int)$_GET['page'], 1) : 1; 
            $start = ($page - 1) * $per_page;                               

            $prev = $page - 1;                          
            $next = $page + 1;
            $lastpage = ceil($total/$per_page);
            $lpm1 = $lastpage - 1;

            $pagination = "";
            if($lastpage > 1)
            {   
                $pagination .= "<ul class='pagination'>";
                        $pagination .= "<li class='details' style='margin-top:2px'>Page $page of $lastpage</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}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}page=$counter'>$counter</a></li>";                    
                        }
                        $pagination.= "<li class='dot'>...</li>";
                        $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
                        $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";      
                    }
                    elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
                    {
                        $pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                        $pagination.= "<li><a href='{$url}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}page=$counter'>$counter</a></li>";                    
                        }
                        $pagination.= "<li class='dot'>..</li>";
                        $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
                        $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";      
                    }
                    else
                    {
                        $pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                        $pagination.= "<li><a href='{$url}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}page=$counter'>$counter</a></li>";                    
                        }
                    }
                }

                if ($page < $counter - 1){ 
                    $pagination.= "<li><a href='{$url}page=$next'>Next</a></li>";
                    $pagination.= "<li><a href='{$url}page=$lastpage'>Last</a></li>";
                }else{
                    $pagination.= "<li><a class='current'>Next</a></li>";
                    $pagination.= "<li><a class='current'>Last</a></li>";
                }
                $pagination.= "</ul>\n";    

            }

            return $pagination;
        } 
    ?>

Just a few questions to start:

  • Is it definitely not going to the second page? Ie. what the link in the address bar when you click to go to the second page?

  • Or is it going to the second page and just not displaying any data?

  • If its a Wordpress site you could turn on error in the wp-config file to see whats going on.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM