【问题标题】:Adding PHP pagination to search results在搜索结果中添加 PHP 分页
【发布时间】:2017-12-13 17:42:30
【问题描述】:

如何将 PHP 分页添加到来自搜索查询的结果中。我已经尝试过herehere,但似乎不明白这些是如何工作的,或者应该如何与我的代码一起工作。在我想到分页之前,我已经编写了搜索查询,因为我之前使用的是滚动负载。如何使结果显示分页。

下面是我显示 searchresults.php 的代码。

if (isset($_GET["mainSearch"])) 
{
  $condition = '';
  // $mainSearch = SQLite3::escapeString($_GET['mainSearch']);
  $keyword = $_GET['mainSearch'];
  $query = explode(" ", $keyword);

  foreach ($query as $text) 
  {
      $condition .= "question LIKE '%".SQLite3::escapeString($text)."%' OR answer LIKE '%".SQLite3::escapeString($text)."%' OR ";
  }
  $condition = substr($condition, 0, -4);


  $order = " ORDER BY quiz_id DESC ";
  $sql_query = "SELECT * FROM questions WHERE " . $condition . ' '. $order;
  $sql_query_count = "SELECT COUNT(*) as count FROM questions WHERE " . $condition .' '. $order;
  $result = $db->query($sql_query);
  $resultCount = $db->querySingle($sql_query_count);

  if ($resultCount > 0)
  {
  if ($result)
  {
      while ($row = $result->fetchArray(SQLITE3_ASSOC))
      {

          $wording = str_replace($text, "<span style='font-weight: bold;'>".$text."</span>", $row['answer']);

           echo '<div class="quesbox_3">
            <div class="questitle">
                <h2>'.$row["question"].'</h2>
            </div>
            <div class="quesanswer">'.$wording.'</div>
        </div>';
      }
  }
  }
  else
  {
      echo "No results found";
  }
}

我正在使用它与 j​​avascript 一起在滚动上加载更多结果

if (isset($_POST['limit']) && isset($_POST['start'])) {

$start = $_POST["start"];
$limit = $_POST["limit"];

$query =<<<EOF
SELECT * FROM questions ORDER BY quiz_id DESC LIMIT '$start', '$limit';
EOF;

// echo $query;

$result = $db->query($query);

while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo '<div class="quesbox_2">
  <div class="questitle">
      <h2>'.$row["question"].'</h2>
  </div>
  <div class="quesanswer">'.$row["answer"].'</div>
    <div class="quesdatetime"><img src="images/questime.png" alt="export question">'.$row["date"].'</div>
</div>';
}

}

如何在我的 searchresults.php 中添加分页?

谢谢。

【问题讨论】:

    标签: php jquery mysql pagination


    【解决方案1】:

    在不使用 jquery 的情况下尝试此代码

    <?php 
    
    
     if (isset($_GET["mainSearch"])) 
        {
          $condition = '';
          // $mainSearch = SQLite3::escapeString($_GET['mainSearch']);
          $keyword = $_GET['mainSearch'];
          $query = explode(" ", $keyword);
          $perpageview=10;
          if($_GET["pageno"]){
               $page=$_GET["pageno"];
         }else{
          $page=1;
         }
      $frompage = $page*$perpageview-$perpageview;
          foreach ($query as $text) 
          {
              $condition .= "question LIKE '%".SQLite3::escapeString($text)."%' OR answer LIKE '%".SQLite3::escapeString($text)."%' OR ";
          }
          $condition = substr($condition, 0, -4);
    
    
          $order = " ORDER BY quiz_id DESC ";
          $sql_query = "SELECT * FROM questions WHERE " . $condition . ' '. $order.' LIMIT '.$frompage.','.$perpageview;
          $sql_query_count = "SELECT COUNT(*) as count FROM questions WHERE " . $condition .' '. $order;
          $result = $db->query($sql_query);
          $resultCount = $db->querySingle($sql_query_count);
          $pagecount = ceil($resultCount/$perpageview);
          if ($resultCount > 0)
          {
          if ($result)
          {
              while ($row = $result->fetchArray(SQLITE3_ASSOC))
              {
    
                  $wording = str_replace($text, "<span style='font-weight: bold;'>".$text."</span>", $row['answer']);
    
                   echo '<div class="quesbox_3">
                    <div class="questitle">
                        <h2>'.$row["question"].'</h2>
                    </div>
                    <div class="quesanswer">'.$wording.'</div>
                </div>';
              }
              for ($i=1; $i <= $pagecount; $i++) { 
                 echo '<a href="url?mainSearch='.$mainSearch.'&pageno='.$i.'">'.$i.'</a>';
              }
          }
          }
          else
          {
              echo "No results found";
          }
        }
    

    ?>

    【讨论】:

    • 我试过了,但是当我搜索时,所有搜索结果都显示在同一页面上,并与页码一起显示。无论我单击哪个页码,它都会显示相同的结果。我认为结果没有共享到不同的页面。请问我该如何解决这个问题。 @sekaraja
    • 喜改这一行小修正 $frompage = $page*$perpageview-$perpageview;而不是这一行 $frompage = $page*$perpageview+1-$perpageview;因为第一个数据将丢失。我在上面的代码中进行了更改。谢谢
    • @sekeraja 非常感谢。你拯救了我的一天。
    猜你喜欢
    • 1970-01-01
    • 2015-05-16
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多