0

このクエリを作成して、jQuery でオートコンプリート ボックスを表示しました。それは完全に機能しています。

<?php

require_once('database.php');

if(isset($_POST['queryString'])) {

    $queryString = $dbc->real_escape_string($_POST['queryString']);

    if(strlen($queryString) >0) {
        $q = "SELECT keyword 
                FROM (
                    SELECT tname AS keyword FROM t
                    UNION
                    SELECT sname AS keyword FROM sub
                    UNION
                    SELECT cname AS keyword FROM c
                    UNION
                    SELECT iname AS keyword FROM i
                ) s
              WHERE keyword LIKE '%$queryString%' 
              LIMIT 10";

        $r = mysqli_query ( $dbc, $q);

        if($q) {
            while ($row = mysqli_fetch_array($r, MYSQL_ASSOC)) {
                echo '<li onClick="fill(\''.$row['keyword'].'\');">'.$row['keyword'].'</li>';
            }
        } else {
            echo 'ERROR: There was a problem with the query.';
        }
    } else {

    }
} else {
    echo 'There should be no direct access to this script!';
}

?> 

このクエリを使用すると、キーワードに従って科目、チューター名、都市を含むオートコンプリート リストが表示されます。ここで、オート コンプリート リストをより多くの値で変更する必要があります。たとえば、現在の都市、プロフィール画像などを表示したいリストに家庭教師の名前があります。これは、Facebookの検索に似ています。

これは私の都市と住所の表です

# --------------
# Address Table
# --------------

CREATE TABLE address (
address_id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
address_one VARCHAR(40) NOT NULL, 
address_two VARCHAR(40) DEFAULT NULL, 
city_id INT(4) UNSIGNED NOT NULL,
PRIMARY KEY (address_id),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


# --------------
# City Table
# --------------

CREATE TABLE city(
city_id INT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
city_name VARCHAR(30) NOT NULL, 
district_id INT(2) UNSIGNED NOT NULL,
PRIMARY KEY (city_id),
UNIQUE (city_name)
) ENGINE=MyISAM;

これどうやってするの?

4

1 に答える 1

0

2つの選択肢があると思います。

クエリを調整する必要があると思います。これは、t テーブルとサブ テーブルを調べて、検索語が発生するかどうかを確認するためです。ただし、クエリが非常に短いため、検索を実行する列だけで、一致するプロファイル情報を利用できません。

もちろん、条件に一致しない行から大量のデータを照会したくはありません。一方で、検索を実行した後に多くのクエリを実行するのはあまり便利ではありません。ただし、10個までの制限があるため、問題ないはずです。

クエリをselect name, birthday, gender, imgdata from tetcに変更します。

于 2012-11-26T15:41:02.997 に答える