2016-03-03 87 views
0

我已經寫了一個分頁腳本來頁面上的所有文章。現在,我想創建和端點,這樣我可以去mydomain/index.php?blogID1mydomain/index.php?blogID2mydomain/index.php?blogID3mydomain/index.php?blogID4單個帖子的分頁和查詢字符串MsSQL&PHP

我在哪裏可以讀到這樣做,以及如何實現它的最簡單的方法可能,鑑於我目前的腳本:

<?php 
     $rowsPerPage = 2; 
     try 
     { 
      $conn = new PDO("sqlsrv:server=localhost ; Database=blog", "******", "*******"); 
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     } 
     catch(Exception $e) 
     { 
      die(print_r($e->getMessage())); 
     } 

     try 
     { 
      $tsql = "SELECT COUNT(blogID) FROM blog_posts"; 
      $stmt = $conn->query($tsql); 
      $rowsReturned = $stmt->fetch(PDO::FETCH_NUM); 
      if($rowsReturned[0] == 0) 
      { 
       echo "No rows returned."; 
      } 
      else 
      {  
       $numOfPages = ceil($rowsReturned[0]/$rowsPerPage); 
       for($i = 1; $i<=$numOfPages; $i++)  
       { 
        $pageNum = "index.php?pageNum=$i"; 
        print("<a href='$pageNum' class='btn btn-primary active btn-sm'>$i</a>&nbsp;&nbsp;"); 
       } 
      } 
      $tsql = "SELECT * FROM 
      (SELECT ROW_NUMBER() OVER(ORDER BY blogID DESC) 
       AS RowNumber, 
       blog_title,  
       blog_post, 
       blog_author, 
       blog_category, 
       blog_date, 
       blogID 
       FROM blog_posts) 
AS Temp 
WHERE RowNumber BETWEEN ? AND ?"; 
$stmt2 = $conn->prepare($tsql); 
if(isset($_GET['pageNum'])) 
{ 
$highRowNum = $_GET['pageNum'] * $rowsPerPage; 
$lowRowNum = $highRowNum - $rowsPerPage + 1; 
} 
else 
{ 
$lowRowNum = 1; 
$highRowNum = $rowsPerPage; 
} 
$params = array(&$lowRowNum, &$highRowNum); 
$stmt2->execute(array($lowRowNum, $highRowNum)); 
while($row = $stmt2->fetch(PDO::FETCH_NUM)) 
{ 
echo "$row[1]"; 
echo "$row[2]"; 
echo "$row[3]"; 
echo date_format(new DateTime($row['5']), 'd M Y, H:i'); 
echo "$row[4]"; 
echo "$row[6]"; 

} 
} 
catch(Exception $e) 
{ 
die(print_r($e->getMessage())); 
} 
?> 
+0

如果你做這將有助於一些谷歌搜索和嘗試的東西。 SO更多的是解決問題,而不是提供解決方案。 –

+0

嗨!歡迎來到StackOverflow!不幸的是,您的問題非常類似於「請實現x功能」請求,這不太適合StackOverflow。請參考此頁面瞭解如何撰寫超級有效的問題! http://www.stackoverflow.com/help/mcve –

+0

@AleksanderLidtke我做了很多googeling,但我不知道從哪裏開始......我不想讓任何人爲我寫這個,我只是想在正確的方向/一些提示,因爲我不知道任何人誰甚至可以寫基本的HTML代碼,我想這是我的最佳選擇,獲得一些體面的指針 –

回答

1

是排一個帖子? 您可以按任意列對行進行排序,然後限制結果數量並根據請求的頁面設置偏移量。 這裏有一個關於該端點的mysql:MySQL Data - Best way to implement paging?

例如,如果頁面被請求是這樣的:的index.php頁次= 15,你是顯示每頁5個員額, 抓鬥與$page = $_GET['pageNum']值和設定您的PDO準備語句結果編號和偏移量(LIMIT)。

聲明$resultsPerPage = 5

SELECT * 
FROM Posts 
LIMIT :offset, :maxResults 

,推動在那些準備語句:

  • 偏移 - >($page - 1) * $resultsPerPage
  • 的maxResults - >$resultsPerPage
+0

Okey,但是這是否適用於Microsoft SQL?分頁部分按預期工作,我只是想添加,以便我可以使用像mydomain/index.php?blogID1這樣的URL訪問每個單獨的帖子。 $ row [1] - [6]基本上是一個帖子,其中$ row [1]包含帖子的唯一ID –

+1

要獲得n個單獨的帖子,請使用不同的GET密鑰。像postID'index.php?postID = 83'。然後你可以檢查你的index.php腳本,如果你有pageNum或postID設置(像這樣:'isset($ _ GET ['postID'])'),如果是,只顯示一個帖子。 – Bramastic

+0

對不起。限制不適用於ms sql,但你看到它就是正確的。只需在php腳本中使用這些變量,然後創建另一個查詢,您將在其中傳遞請求的帖子ID。 – Bramastic