使用 I++ 和分页循环


loop with i++ and pagination

>我有这个:

    $page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]);
    $limit = 50;
    $startpoint = ($page * $limit) - $limit;
    //to make pagination
    $statement = "`users`";
<?php
$sql = mysql_query("SELECT * FROM users ORDER BY respect DESC LIMIT {$startpoint} , {$limit}");
$i   = 1;
while ($row = mysql_fetch_assoc($sql)) {
    echo '
    <tr>
      <td style="text-align:center;">
';
    if ($i == '1') {
        echo '<i class="fa fa-trophy"></i> ';
    }
    if ($i == '2') {
        echo '<i class="fa fa-trophy"></i> ';
    }
    if ($i == '3') {
        echo '<i class="fa fa-trophy"></i> ';
    }
    echo '
      ' . $i++ . '

和分页功能:

function pagination($query, $per_page = 10,$page = 1, $url = '?')
   {        
        $query = "SELECT COUNT(*) as `num` FROM {$query}";
        $row = mysql_fetch_array(mysql_query($query));
        $total = $row['num'];
        $adjacents = "2"; 
        $page = ($page == 0 ? 1 : $page);  
        $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'>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;
    } 

每页限制是 50 个,第一页从 1 到 50 看起来不错,但是 wen i 移动到第 2 页从 1 到 50 是一样的,为什么不是从 51 到 101 在 page3 从 102 到 152?

看到它

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

对于您的上下文,您必须根据页面更改 {$startpoint} 值,

SELECT * FROM users ORDER BY respect DESC LIMIT {$startpoint} , {$limit}")

例如

//determine page number from $_GET 
$page = 1;
if(!empty($_GET['page'])) 
{
 $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
 if(false === $page) {
    $page = 1;
 }
}
 // set the number of items to display per page
 $items_per_page = 50;
 // build query
 $offset = ($page - 1) * $items_per_page;
 $sql = "SELECT * FROM users LIMIT " . $offset . "," . $items_per_page;

如果您的限制为 50,那么您的$startpoint应为($currentpage - 1) * $limit因此,对于第 1 页,该值将为 0 、第 2 页50