2016-03-01 103 views
0

我想在前端分頁我的數據庫博客文章。分頁不工作在MSSQL + PHP

這裏是代碼。

  <h2>Blogs</h2> 
       <?php 
       $limite = 2; 
       $pg = (isset($_GET['pg'])) ? (int)$_GET['pg'] : 1; 
       $inicio = ($pg * $limite) - $limite; 
       $lastRow = $inicio + $limite; 
       $total = 0; 

       include_once('includes/db-connect.php'); 
       $sql = "SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY Pk_blog_id) as row FROM dbo.tb_IEAG_Blogs) a WHERE row between ".$inicio." and ".$lastRow.""; 
       $a2 = sqlsrv_query($conn,$sql); 
       $sqlcounter = "SELECT Pk_blog_id,Blog_title,Blog_content FROM dbo.tb_IEAG_Blogs WHERE Is_archived = 0 "; 
       $acounter = sqlsrv_query($conn,$sqlcounter); 

       while ($result1 = sqlsrv_fetch_array($acounter)) { 
       $totalintable++; 
       } 
      ?> 

      <?php while($result = sqlsrv_fetch_array($a2)){ ?> 
      <div class="media"> 
       <div class="media-body"> 
       <h3 class="media-heading"><?php echo $result['Blog_title'];?></h3> 
       <p><i class="fa fa-calendar"></i><?php echo date('F d, Y',strtotime($result['Created_at']));?></p> 
       <p><?php echo substr($result['Blog_content'], 0, 280) . '...'; ?></p> 
       </div> 
       <a class="btn rm-blg" href="blog-details.php?pkid=<?php echo $result['Pk_blog_id'];?>">Read More</a> 
      </div> 
      <?php } ?> 


      <?php $qtdPag = ceil($totalintable/$limite); 

      if($qtdPag > 1 && $pg <= $qtdPag) 
      { 
       ?> 
      <nav class="text-center"> 
       <ul class="pagination"> 
       <li> 
        <a href="#" aria-label="Previous" class="next"> 
        <span ><img src="images/prev.png" alt=""></span> Previous 
        </a> 
       </li> 
       <?php 
       for($i = 1; $i <= $qtdPag; $i++) 
       { 
        if($i == $pg){ 
        echo "<li><a class='ative'>".$i."</a></li>"; 
        } else { 
        echo "<li><a href='blog.php?pg=$i'>".$i."</a></li>"; 
        } 
       } 
       ?> 
       <li> 
        <a href="#" aria-label="Next" class="prevs"> Next 
        <span ><img src="images/next.png" alt=""></span> 
        </a> 
       </li> 
       </ul> 
      </nav> 
      <?php } ?> 

我得到分頁鏈接,但它是不正確的。

我將每頁限制爲2篇博文。

表總排是6

第一頁是工作好,去第二頁時,其顯示三個記錄每頁。

我該如何解決這個問題..

感謝

+0

是否Fi的末尾結果第一頁顯示爲第二頁上的第一個結果? – ImClarky

回答

1

我有一個懷疑,在第一頁上的最後記錄出現的第二頁上的第一記錄。這完全取決於您設置記錄選擇變量$inicio$lastRow的方式。

如果我們是你把你的計算,我們得到如下結果:

+------+-------+-------+-----+ 
| Page | Limit | Start | End | 
+------+-------+-------+-----+ 
| 1 |  2 |  0 | 2 | 
| 2 |  2 |  2 | 4 | 
| 3 |  2 |  4 | 6 | 
+------+-------+-------+-----+ 

開始= (page * limit) - limit;結束= (page * limit)
Start = (1 * 2) - 2 = 0End = (1 * 2) = 2

的結果是,你得到3個結果在總每一頁 - 在開始結束數字包容性(第2頁給出了記錄:2,3 ,4)。究其原因,第一頁只有有兩個記錄是因爲如果你改變你的變量這樣的事情是不存在的記錄數0,因爲它從第1行

開始:

$inicio = (($pg - 1) * $limite) + 1; 
$lastPage = ($pg * $limite); 

你得到的結果如下:

+------+-------+-------+-----+ 
| Page | Limit | Start | End | 
+------+-------+-------+-----+ 
| 1 |  2 |  1 | 2 | 
| 2 |  2 |  3 | 4 | 
| 3 |  2 |  5 | 6 | 
+------+-------+-------+-----+ 

Start = ((1 - 1) * 2) + 1 = 1End = (1 * 2) = 2