【问题标题】:multiple values suggestion in textbox with jquery autocomplete带有jQuery自动完成功能的文本框中的多个值建议
【发布时间】:2014-05-28 20:21:14
【问题描述】:

有人可以帮我对我的 php 代码添加一些修改,以便它允许用户获得多个自动建议吗? (现在它对一个值工作正常,但我希望他/她收到更多值的自动建议,(例如在插入逗号后,将再次显示自动完成建议)。

这是 HTML 代码:

  <p><label>Actor/actress:</label><input type='text' name='name' value=''  class='auto'></p>
  <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  <script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>
  <script type="text/javascript">
    $(function() {

     //autocomplete
       $(".auto").autocomplete({
          source: "actorsauto.php",
           minLength: 2
       });                             
    });
  </script>

这是php代码:

<?php
define('DB_SERVER', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', 'xxxxxx');
define('DB_NAME', 'imdb');


if (isset($_GET['term'])){
    $return_arr = array();

    try {

        $conn=new PDO('mysql:dbname=imdb;host=localhost', 'root', 'xxxxx');
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare('SELECT name FROM name WHERE name LIKE :term');
        $stmt->execute(array('term' => '%'.$_GET['term'].'%'));

        while($row = $stmt->fetch()) {
            $return_arr[] =  $row['name'];
        }

    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }


    /* Toss back results as json encoded array. */
    echo json_encode($return_arr);
}


?>

我是 jquery 和 php 的新手,感谢您的所有想法。

【问题讨论】:

    标签: php jquery mysql autocomplete


    【解决方案1】:

    您可以通过拆分搜索词来组合一个 where 语句,例如在用户键入的每个空格处。假设他搜索了music cd。以下代码将获取包含字符串 cdmusic 的所有内容。

    $stmt = $conn->prepare('SELECT name FROM name WHERE :where');
    if($_GET['term']){
      $termParts = explode(' ', $_GET['term']);
      $whereParts = array()
      foreach($termParts as $term){
        $whereParts[] "name LIKE '%".$term."%'";
      }
      $where = implode(' OR ', $whereParts);
    } else {
      $where = 1;
    }
    $stmt->execute(array('where' => $where));
    

    【讨论】:

    • 对不起,但它没有改变......我的意思是我插入莱昂纳多·迪卡普里奥,然后我想插入另一个演员(假设在空格或逗号之后),但是对于我写的第二个演员,自动完成不建议任何名称..
    猜你喜欢
    • 2011-06-06
    • 1970-01-01
    • 2013-10-12
    • 2012-08-05
    • 1970-01-01
    • 2010-11-14
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多