4

Paper Mashups Autosuggestを使用しています。

会社名、カテゴリ名、サブカテゴリ名を自動提案できるように、3 つのテーブルを 1 つにまとめるための mysql ユニオンの実行が完了しました。残念ながら、それは機能していましたが、追加のliが追加されました(これがそのようなものだと思います 。写真は次のとおりです。

これらの余分なliを取り除くにはどうすればよいですか?

これが私のコードです:

<?php
$db = new mysqli('localhost', 'root' ,'*********', '****************');

if(!$db) {

    echo 'Could not connect to the database.';
} else {

    if(isset($_POST['queryString'])) {
        $queryString = $db->real_escape_string($_POST['queryString']);

        if(strlen($queryString) >0) {
            $query = $db->query("SELECT name FROM company WHERE name LIKE '$queryString%' UNION SELECT cat FROM cat WHERE cat LIKE '$queryString%' UNION SELECT subcat FROM subcat WHERE subcat LIKE '$queryString%' LIMIT 10");
            if($query) {
            echo '<ul>';
                while ($result = $query ->fetch_object()) {
                    echo '<li onClick="fill(\''.addslashes($result->name).'\');">'.$result->name.'</li>';
                    echo '<li onClick="fill(\''.addslashes($result->cat).'\');">'.$result->cat.'</li>';
                    echo '<li onClick="fill(\''.addslashes($result->subcat).'\');">'.$result->cat.'</li>';
                }
            echo '</ul>';

            } else {
                echo 'OOPS we had a problem :(';
            }
        } else {
            // do nothing
        }
    } else {
        echo 'There should be no direct access to this script!';
    }
}
?>

助けてくれてありがとう!

4

3 に答える 3

0

空白を吐き出しているように見えます。最初にname 、次にcat、次にsubcatを使用して犯人を見つけてみてください。また、3つのエコーのサブキャットは、サブキャットではなくエコーキャットです...

echo '<li onClick="fill(\''.addslashes($result->subcat).'\');">'.$result->cat.'</li>';

次のようにする必要があります。

echo '<li onClick="fill(\''.addslashes($result->subcat).'\');">'.$result->subcat.'</li>';
于 2012-08-01T15:24:17.180 に答える
0

あなたは単にチェックを置くことができます:

while ($result = $query ->fetch_object()) {
                if($result->name && $result->cat && $result->subcat){
                  echo '<li onClick="fill(\''.addslashes($result->name).'\');">'.$result->name.'</li>';
                  echo '<li onClick="fill(\''.addslashes($result->cat).'\');">'.$result->cat.'</li>';
                  echo '<li onClick="fill(\''.addslashes($result->subcat).'\');">'.$result->cat.'</li>';
                 }
}
于 2012-08-01T15:23:16.877 に答える
0

クエリを次のように変更すると、理解しやすく操作しやすくなります。

SELECT name as SuggestText FROM company WHERE name LIKE '$queryString%' 
UNION 
SELECT cat as SuggestText FROM cat WHERE cat LIKE '$queryString%' 
UNION 
SELECT subcat as SuggestText FROM subcat WHERE subcat LIKE '$queryString%' LIMIT 10

次に、ループを次のように変更します。

while ($result = $query ->fetch_object()) {
     echo '<li onClick="fill(\''.addslashes($result->SuggestText).'\');">'.$result->SuggestText.'</li>';
}
于 2012-08-01T15:32:53.593 に答える