2016-03-03 34 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