使用php和html进行自动填充

时间:2017-03-15 06:38:04

标签: javascript php jquery mysql

我想使用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));
?>

结果为this

我的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);

                }
        ?>

没有自动填充动作

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用选项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说明了源选项

  

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

答案 2 :(得分:0)

在输入中添加 id="editor"

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