douxiong0668 2019-02-28 12:35 采纳率: 100%
浏览 80

如何使用php pdo对搜索结果进行分页?

I am creating a pagination for search result all looks fine on first loading page, but when I click on paginated links then it show me a white page (search page but without entries in). simply with no results found from my data

This is the site search box in index.php

<form action="search/" method="post">
<input type="text" name="search" placeholder="word..." required />
<input type="submit" name="submit_search" class="search-btn" value="" />
</form>

Here is my setup for htaccess pagination:

RewriteRule ^search/page/(.*)$ search.php?page=$1 [L,NC]

it looks fine on browser.

Here is my search page codes:

<?php 
if(isset($_POST['submit_search']) && !empty($search)){
    $search = htmlspecialchars(strip_tags($_POST['search']), ENT_QUOTES);
    $perpage = intval("12");

    $n_stmt = $pdo->prepare("SELECT * FROM posts");
    $n_stmt->execute(); 
    $total_posts = $n_stmt->rowCount();

    $total_pages = ceil($total_posts/$perpage);

    $page = !empty($_GET['page']) && intval($_GET['page']) ? (int) intval($_GET['page']) : intval("1");
    if($page < intval("1")) $page = intval("1");
    if($page > $total_pages) $page = $total_pages;
    $limit = ($page - intval("1")) * $perpage;

    $pages_to_show = intval("10");

    $stmt = $pdo->prepare("SELECT * FROM posts WHERE title LIKE :search OR subject LIKE :search OR descriptions LIKE :search OR keywords LIKE :search ORDER BY created DESC LIMIT :limit, :perpage");
    $stmt->bindValue(":search","%".$search."%", PDO::PARAM_STR);
    $stmt->bindValue(":limit",$limit, PDO::PARAM_INT);
    $stmt->bindValue(":perpage",$perpage, PDO::PARAM_INT);
if($stmt->execute()){
    if($stmt->rowCount() > 0){
        while($row = $stmt->fetch(PDO::FETCH_ASSOC)){?>

    <div class="news_box">
    <a href="<?php echo htmlspecialchars($row['news_url']);?>/" title="<?php echo htmlspecialchars($row['title']);?>">
        <div class="title"><h2><?php echo htmlspecialchars($row['title']);?></h2></div>
        <div class="image">
        <img src="images/posts/<?php echo htmlspecialchars($row['img']);?>" alt="<?php echo htmlspecialchars($row['title']);?>"/></div>
        <div class="spot"><?php echo htmlspecialchars($row['subject']);?></div>
    </a>
    </div>

    <?php 
        }
    }
}
unset($stmt);
?>

Here is my pagination part:

<div class="pagination">    
<?php if($page >1){?>
    <a href="search/page/1/">First</a>
    <a href="search/page/<?php echo $page - intval("1");?>">previous</a>                
    <?php } for($i = $page - $pages_to_show; $i < $page + $pages_to_show + 1; $i++){ 
        if($i > 0 and $i <= $total_pages){
            if($i == $page){?>
                <a href="search/page/<?php echo intval($i);?>" class="active"><?php echo intval($i);?></a>
            <?php }else{?>
            <a href="search/page/<?php echo intval($i);?>"><?php echo $i;?></a>
            <?php   
            }
        }
    ?>

    <?php } ?>

    <?php if($page != $total_pages){?>
    <a href="search/page/<?php echo $page + intval("1");?>">Next</a>
    <a href="search/page/<?php echo $total_pages;?>">Last</a>
    <?php } ?>
</div>
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 西门子S7-Graph,S7-300,梯形图
    • ¥50 用易语言http 访问不了网页
    • ¥50 safari浏览器fetch提交数据后数据丢失问题
    • ¥15 matlab不知道怎么改,求解答!!
    • ¥15 永磁直线电机的电流环pi调不出来
    • ¥15 用stata实现聚类的代码
    • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
    • ¥20 docker里部署springboot项目,访问不到扬声器
    • ¥15 netty整合springboot之后自动重连失效
    • ¥15 悬赏!微信开发者工具报错,求帮改