1

フォームを監視する JQuery があります。基本的に、すべてのキーアップに対して、php ファイルを呼び出してデータベースを検索します。

$(document).ready(function() {
    $("#faq_search_input").watermark("Begin Typing to Search");

    $("#faq_search_input").keyup(function() {
        var faq_search_input = $(this).val();
        var dataString = 'keyword='+ faq_search_input;

        if (faq_search_input.length > 2) {
            $.ajax({
                type: "GET",
                url: "core/functions/searchdata.php",
                data: dataString,
                beforeSend: function() {
                    $('input#faq_search_input').addClass('loading');
                },
                success: function(server_response) {
                    $('#searchresultdata').empty();
                    $('#searchresultdata').append(server_response);
                    $('span#faq_category_title').html(faq_search_input);
                }
            });
        }

        return false;
    });
});

これは正常に機能#searchresultdataしますが、クエリに応じて結果をフィルタリングします。唯一のことは、フォームに何もない場合、すべてをロードすることです.ユーザーはこれを行うためにフォームをクリックする必要はありませ.blurん.

PHP ファイルは次のとおりです。

if(isset($_GET['keyword'])){}
4

2 に答える 2

1

サーバーで [*] 検索を処理する必要があります

$query = "SELECT Image, Manufacturer, Model FROM Device_tbl WHERE Manufacturer LIKE '%$keyword%' OR Model LIKE '%$keyword%";
if ($keyword=='*') $query = "SELECT Image, Manufacturer, Model FROM Device_tbl";

$(document).ready(function() {
    $("#faq_search_input").watermark("Begin Typing to Search");

    $("#faq_search_input").keyup(function() {
        var faq_search_input = $(this).val();
        if (faq_search_input =='') faq_search_input ='*';
        var dataString = 'keyword='+ faq_search_input;

        if (faq_search_input.length > 2 || faq_search_input=='*') {
            $.ajax({
                type: "GET",
                url: "core/functions/searchdata.php",
                data: dataString,
                beforeSend: function() {
                    $('input#faq_search_input').addClass('loading');
                },
                success: function(server_response) {
                    $('#searchresultdata').empty();
                    $('#searchresultdata').append(server_response);
                    $('span#faq_category_title').html(faq_search_input);
                }
            });
        }

        return false;
    });
    $("#faq_search_input").trigger('keyup');
});
于 2012-05-08T10:12:01.370 に答える
1

最初にすべての結果をロードする場合、これを JavaScript 配列に保存して、JavaScript で結果をフィルタリングすることはできませんか? これにより、キーを押すたびに HTTP 要求が節約され、サイトの速度とリソースの使用にのみ役立ちます.

編集:サンプル。

<?php
    $sql = "SELECT `title` FROM `your_table`";
    $res = mysql_query($sql);
    $rows = array();
    while ($row = mysql_fetch_assoc($res)) {
        $rows[] = $row['title'];
    }
    echo '<script>var data = ' . json_encode($rows) . ';</script>';
?>
<form method="post" action="">
  <fieldset>
    <input type="text" name="search" id="faq_search_input" />
  </fieldset>
</form>
<script>
    // I presume you're using jQuery
    var searchInput = $('#faq_search_input');
    var searchResults = $('#searchresultdata');
    var tmpArray = data;

    // add all results to results div
    $.each(data, function(key, val) {
        searchResults.append('<li>' + val + '</li>');
    });

    searchInput.attr('placeholder', 'Begin typing to search');
    searchInput.keyup(function() {
        // hide any <li> in your #searchresultdata that don't match input
    });
</script>

serverresponseあなたの変数に何が入っているのかわからないので、 searchresultdata <div>. また、テーブルと列の名前に一致するように SQL クエリを変更する必要があります。

searchdata.php の内容

$query = "SELECT Image, Manufacturer, Model FROM Device_tbl WHERE Manufacturer LIKE '%$keyword%' OR Model LIKE '%$keyword%'";
if ($keyword=='*') $query = "SELECT Image, Manufacturer, Model FROM Device_tbl";
$result=mysql_query($query, $database_connection) or die(mysql_error());

if($result){
    if(mysql_affected_rows($database_connection)!=0){
          while($row = mysql_fetch_object($result)){
?>
     <div class="hold-cont">
        <div class="holder">
            <div class="image-hold" >
                <img class="image-icon" src="<? echo $deviceimg.($row->Image); ?>"/>
</div>
        </div>
        <div class="device-name devicename-txt"><? echo($row->Manufacturer. ' ' .$row->Model);  ?></div>
    </div>
     <?
    }
    }else {
        echo 'No Results for :"'.$_GET['keyword'].'"';
    }

}
}else {
    echo 'Parameter Missing';
}
于 2012-05-08T10:31:10.490 に答える