Php 查询、隐藏内容 Microsoft sql
Php query, hide content Microsoft sql
我正在尝试对我正在处理的博客进行一些分页,它正在运行,现在我已经添加了内容,这样我就可以通过 url 联系到每个人 post,例如 index.php?postID=1, 2, 3 等等。
但是,有一件事没有像我想要的那样工作,当我用那个 url 转到 post 时,post 将加载到顶部,但其他 2 个分页 posts 也会显示,所以我的问题很简单:
当我只想转到单个 post 时,如何不加载那些 post?
这就是脚本现在的样子,我知道在更有经验的编码人员眼中这可能是一团糟,请记住我是一个想要学习的菜鸟:)
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$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 "Inga rader hittades.";
}
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> ");
}
}
$tsql = "SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY blogID DESC)
AS RowNumber,
blog_title,
blog_post,
blog_author,
blog_category,
blog_date,
blogID,
blog_short
FROM blog_posts)
AS Temp
WHERE RowNumber BETWEEN ? AND ?";
$stmt2 = $conn->prepare($tsql);
if (isset($_GET['postID'])){
$value = $_GET['postID'];
$result = "SELECT * FROM blog_posts WHERE blogID='$value'";
$aa = $conn->query($result);
$post = $aa->fetch(PDO::FETCH_NUM);
if($post[0] == 0)
{
echo "Inget inlägg med det ID't hittades!";
}
else
{
echo "$post[1]";
echo "$post[2]";
echo "$post[3]";
echo date_format( new DateTime($post['5']), 'd M Y, H:i' );
echo "$post[4]";
echo "$post[0]";
}
}
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[7]";
echo '<a href="?postID='.$row[6].'">Read more</a>';
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() ) );
}
编辑:
if (isset($_GET['postID']))
{
$id = $_GET['postID'];
$tsql2 = "SELECT * FROM blog_posts WHERE blogID=':id'";
$stmt3 = $conn->prepare($tsql2);
$stmt3->execute(array(':id' => $id));
while($post = $stmt3->fetch(PDO::FETCH_BOTH) )
{
回显 $post 1-6 这里
如果您只想显示单个 post 或分页 post,您应该这样做:
if (isset($_GET['postID'])) {
//single post logic
} else {
//paged posts logic
}
我正在尝试对我正在处理的博客进行一些分页,它正在运行,现在我已经添加了内容,这样我就可以通过 url 联系到每个人 post,例如 index.php?postID=1, 2, 3 等等。
但是,有一件事没有像我想要的那样工作,当我用那个 url 转到 post 时,post 将加载到顶部,但其他 2 个分页 posts 也会显示,所以我的问题很简单:
当我只想转到单个 post 时,如何不加载那些 post?
这就是脚本现在的样子,我知道在更有经验的编码人员眼中这可能是一团糟,请记住我是一个想要学习的菜鸟:)
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$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 "Inga rader hittades.";
}
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> ");
}
}
$tsql = "SELECT * FROM
(SELECT ROW_NUMBER() OVER(ORDER BY blogID DESC)
AS RowNumber,
blog_title,
blog_post,
blog_author,
blog_category,
blog_date,
blogID,
blog_short
FROM blog_posts)
AS Temp
WHERE RowNumber BETWEEN ? AND ?";
$stmt2 = $conn->prepare($tsql);
if (isset($_GET['postID'])){
$value = $_GET['postID'];
$result = "SELECT * FROM blog_posts WHERE blogID='$value'";
$aa = $conn->query($result);
$post = $aa->fetch(PDO::FETCH_NUM);
if($post[0] == 0)
{
echo "Inget inlägg med det ID't hittades!";
}
else
{
echo "$post[1]";
echo "$post[2]";
echo "$post[3]";
echo date_format( new DateTime($post['5']), 'd M Y, H:i' );
echo "$post[4]";
echo "$post[0]";
}
}
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[7]";
echo '<a href="?postID='.$row[6].'">Read more</a>';
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() ) );
}
编辑:
if (isset($_GET['postID']))
{
$id = $_GET['postID'];
$tsql2 = "SELECT * FROM blog_posts WHERE blogID=':id'";
$stmt3 = $conn->prepare($tsql2);
$stmt3->execute(array(':id' => $id));
while($post = $stmt3->fetch(PDO::FETCH_BOTH) )
{
回显 $post 1-6 这里
如果您只想显示单个 post 或分页 post,您应该这样做:
if (isset($_GET['postID'])) {
//single post logic
} else {
//paged posts logic
}