autosuggest显示空白li

时间:2012-08-01 15:17:11

标签: php mysql css

我正在使用Paper Mashups Autosuggest.

我刚刚完成了一个mysql联盟,将三个表合并为一个,这样我就可以自动提取公司名称,类别名称和子类别名称。不幸的是,虽然有效,但它增加了额外的li(我认为这就是它们,这里是picture.

如何摆脱那些额外的李?

这是我的代码:

<?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!';
    }
}
?>

感谢您的帮助!

3 个答案:

答案 0 :(得分: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>';
                 }
}

答案 1 :(得分:0)

在我看来,它正在吐出空白。首先尝试使用名称,然后只使用 cat ,然后只需 subcat 即可找到罪魁祸首。另外,你的三个回声中的subcat是回声猫而不是subcat ......

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

应该是:

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

答案 2 :(得分: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>';
}