php中的分页在搜索sql中不起作用

问题描述 投票:0回答:1

我在php中有分页,其中根据用户搜索条件从数据库表中显示数据。我已经完成了以下代码:

<?php

$limit = 8;
if (isset($_GET["page"])) { $page  = $_GET["page"]; } else { $page=1; };
$start_from = ($page-1) * $limit;
$link = mysqli_connect("localhost", "root", "", "code");

if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

if(isset($_REQUEST["search"])){
    $sql = "SELECT * FROM image_gallery WHERE keyq LIKE ? OR keyw LIKE ? OR keye LIKE ? OR keyr LIKE ? OR keyt LIKE ? OR keyy LIKE ? OR keyu LIKE ? OR keyi LIKE ? OR keyo LIKE ? OR keyp LIKE ? LIMIT $start_from, $limit ";

    if($stmt = mysqli_prepare($link, $sql)){
        mysqli_stmt_bind_param($stmt, "ssssssssss", $param_term, $king, $me, $you, $gig, $mig, $mug, $sug, $kez, $peb);


        $param_term = $_REQUEST["search"] . '%';
        $king = $_REQUEST["search"] . '%';
        $me = $_REQUEST["search"] . '%';
        $you = $_REQUEST["search"] . '%';
        $gig = $_REQUEST["search"] . '%';
        $mig = $_REQUEST["search"] . '%';
        $mug = $_REQUEST["search"] . '%';
        $sug = $_REQUEST["search"] . '%';
        $kez = $_REQUEST["search"] . '%';
        $peb = $_REQUEST["search"] . '%';

        if(mysqli_stmt_execute($stmt)){
            $result = mysqli_stmt_get_result($stmt);

            if(mysqli_num_rows($result) > 0){
                while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){?>




  <div class="aamir"><span><img style="height:40px; width:55px; " class="img-responsive" alt="" src="admin/uploads/<?php echo $row['image'] ?>" /></span><small><?php echo $row['title']; ?></small><strong style="width:40%; height: 35%;"><em  class="icon icon-chevron-down"></em><p style="margin-top: -5%;"> <?php echo $row['description']; ?> </p></strong>
    <a
      class="zayan" target="_blank" href="<?php echo $row['url']; ?>">VISIT</a>
  </div>


  <?php }?>

  <?php

$results = mysqli_query($link,"SELECT COUNT(id) FROM image_gallery");
$row = mysqli_fetch_row($results);
$total_records = $row[0];
$total_pages = ceil($total_records / $limit);
$pagLink = "<div class='pagination'>";
for ($i=1; $i<=$total_pages; $i++) {
             $pagLink .= "<a class='circle' href='view.php?page=".$i."'>".$i."</a>";
};
echo $pagLink . "</div>";
?>

    <?php

            } else{
                echo "<p>No matches found <br> <a href='index.php'>Go Back</a></p>";
            }
        } else{
            echo "ERROR " . mysqli_error($link);
        }
    }

    // Close statement
    mysqli_stmt_close($stmt);
}

// close connection
mysqli_close($link);
?>

现在,当用户进入搜索时,它会将他带到该页面并显示数据,但是这里的问题是分页不起作用,所有数据都显示在第一页,而第二页显示为空白。谁能告诉我代码中有什么问题。在此先感谢

php mysql sql search pagination
1个回答
0
投票

您可以根据所有记录进行分页,但是只能根据您要查找的记录进行分页

<?php

//...code

        if(mysqli_stmt_execute($stmt)){
            $result = mysqli_stmt_get_result($stmt);
            $rowCount = mysqli_num_rows($result);

            if ($rowCount > 0) {
                while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
                     //...code 
                }  
            }

if ($rowCount > 0) {
    $total_pages = ceil($rowCount / $limit);
    $pagLink = "<div class='pagination'>";
    //...code
}

// close connection
mysqli_close($link);
?>
© www.soinside.com 2019 - 2024. All rights reserved.