【问题标题】:autocomplete using php and html使用 php 和 html 自动完成
【发布时间】:2017-03-15 06:38:03
【问题描述】:

我想使用 php 和 html 进行文本自动完成。 我试过下面的代码

<?php
$connection = mysqli_connect("localhost", "root", "pass", "data") or die("Error " . mysqli_error($connection));
$sql = "select value from fin";
$result = mysqli_query($connection, $sql) or die("Error " . mysqli_error($connection));
$dna = array();

while ($row = mysqli_fetch_array($result))
    {
    $dna[] = $row['value'];
    }

$jj = array_unique($dna);
print_r(array_values($jj));
?>

结果是

我的html

<head>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/
            themes/smoothness/jquery-ui.css">
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://code.jquery.com/ui/1.10.4
         /jquery-ui.js">
    </script>
</head>

<body>
    <form name="vinform" method="get"> <input type="text" name="editor" autocomplete="on"> <input type="submit" value="Show" id="display"> </form>
    <div id="div1"></div>
    <script type="text/javascript">
    $(function() {
        $('#div1').autocomplete({
            source: "auto.php"
        });
    });
    </script>
</body>

当我在文本字段中键入一些单词时,它不显示来自 mysql 的单词..当我在文本字段中键入一个字符时,我必须根据文本字段输入显示来自 mysql 的相关单词..谁能帮我解决我的代码中的问题?

用 Ajax 试过

              var se = null;

          $(function () {
          var minlength = 1;

       $("#editor").keyup(function () {
        var that = this,
    value = $(this).val();

    if (value.length >= minlength ) {
        if (se != null) 
            se.abort();
        se = $.ajax({
            type: "GET",
            url: "auto.php",
            data: value,
            dataType: "text",
            success: function(msg){

                if (value==$(that).val()) {

                }
                   }
                });
               }
             });
          });

php

                    <?php

                if(isset($_GET['editor']))
                {
                $con=mysqli_connect("localhost","root","admin321","data");       

                if (mysqli_connect_errno())                
                  {
          echo "Failed to connect to MySQL: " . mysqli_connect_error();
                  }
                  $name=$_GET['editor'];
        $sql = "select value from fin where value LIKE '%".$name."'";
          $result = mysqli_query($connection, $sql) or 
           die("Error " . mysqli_error($connection));

            $dna = array();
            while($row = mysqli_fetch_array($result))
            {
                $dna[] = $row['value'];
            }
            $jj=array_unique($dna);
             print_r ( $jj);

                }
        ?>

没有自动完成动作

【问题讨论】:

    标签: javascript php jquery mysql


    【解决方案1】:

    使用选项 1(Jquery UI 自动完成)并尝试类似的方法

    <?php
    $connection = mysqli_connect("localhost", "root", "pass", "data") or die("Error " . mysqli_error($connection));
    $sql = "select value from fin";
    $result = mysqli_query($connection, $sql) or die("Error " . mysqli_error($connection));
    $dna = array();
    
    while ($row = mysqli_fetch_array($result))
        {
        $dna[] = $row['value'];
        }
    
    echo json_encode($dna);
    ?>
    

    Jquery UI autocomplete 状态关于源选项

    字符串:使用字符串时,自动完成插件期望该字符串指向将返回 JSON 数据的 URL 资源。它可以在同一台主机上,也可以在不同的主机上(必须提供 JSONP)。自动完成插件不会过滤结果,而是添加一个带有术语字段的查询字符串,服务器端脚本应该使用它来过滤结果。例如,如果源选项设置为“http://example.com”并且用户键入 foo,则会向http://example.com?term=foo 发出 GET 请求。数据本身可以采用与上述本地数据相同的格式。

    【讨论】:

    • 感谢您的回复...我试过了 - pastebin.com/M9We1Lrt,但没有自动完成操作
    • 如果答案让你满意,可以标记为问题的答案
    • 从 pastebin 返回的格式将不起作用。像我写的那样做
    【解决方案2】:

    您可以使用 AJAX 和 Jquery..在 html 代码中调用 keyup 事件上的函数并使用 ajax 请求发送数据,然后使用 LIKE 查询从数据库中获取数据并显示它..

    【讨论】:

    • 尝试使用 ajax 并在问题中更新,没有自动完成操作
    【解决方案3】:

    在输入中添加 id="editor"

    <input type="text" id="editor" name="editor" autocomplete="on">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 2012-02-08
      • 1970-01-01
      • 2015-03-27
      • 2015-09-25
      • 2017-11-11
      • 1970-01-01
      相关资源
      最近更新 更多