2014-12-06 127 views
0

我有這樣的:循環與我++和分頁

$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,但是我轉到頁面?2從1到50是一樣的,爲什麼不是從第101頁到第152頁的51到101?

+0

我使它工作,現在顯示我在第1頁從1到50,第2頁從51到101,我將$ i的值從1更改爲:$ start =($ page - 1)* $ limit + 1; $ i =(1 * $ start); 這樣很好嗎?我不會有問題? – rpV 2014-12-06 12:42:44

回答

0

看到它

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

對上下文,你必須根據你的頁面上改變{$起始點}值,

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

如果您限制爲50,所以你的$startpoint應該是($currentpage - 1) * $limit 所以對於第1頁的值e將是0,第2頁50