代码之家  ›  专栏  ›  技术社区  ›  Dipak

分页中的php-ajax实时搜索

  •  1
  • Dipak  · 技术社区  · 6 年前

    我正在努力实现 live search 在里面 pagination . 我可以插入静态搜索按钮,点击enter后工作。我想实现实时搜索按钮,而不是这个。当我尝试使用Ajax时,我无法处理,它是混乱的。

    下面是我的分页和搜索代码。如何使用实时搜索而不是静态搜索?我是阿贾克斯的新手。或者,请提供一个教程链接以在分页中创建实时搜索。

    <?php   
        $search_keyword = '';
        if(!empty($_POST['search']['keyword'])) {
            $search_keyword = $_POST['search']['keyword'];
        }
        $sql = 'SELECT * FROM posts WHERE post_title LIKE :keyword OR description LIKE :keyword OR post_at LIKE :keyword ORDER BY id DESC ';
    
        /* Pagination Code starts */
        $per_page_html = '';
        $page = 1;
        $start=0;
        if(!empty($_POST["page"])) {
            $page = $_POST["page"];
            $start=($page-1) * ROW_PER_PAGE;
        }
        $limit=" limit " . $start . "," . ROW_PER_PAGE;
        $pagination_statement = $pdo_conn->prepare($sql);
        $pagination_statement->bindValue(':keyword', '%' . $search_keyword . '%', PDO::PARAM_STR);
        $pagination_statement->execute();
    
        $row_count = $pagination_statement->rowCount();
        if(!empty($row_count)){
            $per_page_html .= "<div style='text-align:center;margin:20px 0px;'>";
            $page_count=ceil($row_count/ROW_PER_PAGE);
            if($page_count>1) {
                for($i=1;$i<=$page_count;$i++){
                    if($i==$page){
                        $per_page_html .= '<input type="submit" name="page" value="' . $i . '" class="btn-page current" />';
                    } else {
                        $per_page_html .= '<input type="submit" name="page" value="' . $i . '" class="btn-page" />';
                    }
                }
            }
            $per_page_html .= "</div>";
        }
    
        $query = $sql.$limit;
        $pdo_statement = $pdo_conn->prepare($query);
        $pdo_statement->bindValue(':keyword', '%' . $search_keyword . '%', PDO::PARAM_STR);
        $pdo_statement->execute();
        $result = $pdo_statement->fetchAll();
    ?>
    <form name='frmSearch' action='' method='post'>
    <div style='text-align:right;margin:20px 0px;'><input type='text' name='search[keyword]' value="<?php echo $search_keyword; ?>" id='keyword' maxlength='25'></div>
    <table class='tbl-qa'>
      <thead>
        <tr>
          <th class='table-header' width='20%'>Title</th>
          <th class='table-header' width='40%'>Description</th>
          <th class='table-header' width='20%'>Date</th>
        </tr>
      </thead>
      <tbody id='table-body'>
        <?php
        if(!empty($result)) { 
            foreach($result as $row) {
        ?>
          <tr class='table-row'>
            <td><?php echo $row['post_title']; ?></td>
            <td><?php echo $row['description']; ?></td>
            <td><?php echo $row['post_at']; ?></td>
          </tr>
        <?php
            }
        }
        ?>
      </tbody>
    </table>
    <?php echo $per_page_html; ?>
    </form>
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Alex    6 年前

    这是我在搜索后在谷歌搜索结果中得到的第一件事 live search pagination :

    StackOverflow Link - pagination with live search .


    注意: 此方法使用 jQuery 你就知道了。

    作为 Akshay 指出,你只需要一个搜索框:

    <input type='text' Id="search_box" name='search' placeholder='search' />

    还有你的 JS 代码如下:

    $(document).ready(function() {
      change_page('0');
    });
    
    function change_page(page_id) {
      //To get the field value
      var search_val = $("#search_box").val();
      $(".flash").show();
      $(".flash").fadeIn(400).html('Loading <img src="ajax-loader.gif" />');
      var dataString = 'page_id=' + page_id + '&search=' + search_val;
      $.ajax({
        type: "POST",
        url: "paging.php",
        data: dataString,
        cache: false,
        success: function(result) {
          $(".flash").hide();
          $("#page_data").html(result);
        }
      });
    }
    

    你现在需要做的就是把你的 PHP 代码转换为单独的 .php 将数据归档并引用到 $.ajax url 参数。