【问题标题】:JQuery & PHP Lookup FieldJQuery 和 PHP 查找字段
【发布时间】:2011-06-28 08:21:33
【问题描述】:

我遵循了一个关于如何创建一个查找字段的教程,该字段在 MySQL 数据库中动态搜索一个表 - 目的是通过邮政编码处理联系人查找。我的搜索工作正常,值(在页面上)被插入到字段中,但是我需要将选择的记录的 id 放入输入字段的 value="idhere" 参数中。我已经添加了下面的 PHP 和 HTML,任何人都可以查看并帮助解决我的问题。

Javascript 和 CSS

        <script type="text/javascript">
        function getSuggestions(value) {
            if(value != ""){ 
            $.post("lookup.php", {contactPart:value}, function(data) {
                $("#suggestions").html(data);
                runCSS();
            });
            }else{
                removeSuggestions();
            }
        }

        function removeSuggestions() {
            $("#suggestions").html("");
            stopCSS();  
        }

        function addText(value) {
            $("#inputContact").val(value);
            $("#inputContact").val() {
                $(this).val()
            }   
        }

        function runCSS() {
            $("#suggestions").css({
                'border' : 'solid',
                'border-width' : '1px'
            });
        }

        function stopCSS() {
            $("#suggestions").css({
                'border' : '',
                'border-width' : ''
            });
        }
        </script>

        <style type="text/css">     
        #suggestions {
            text-align: left;
            padding-left: 3px;  
        }

        #link:hover {
            background-color: #f0f0f0;
            cursor: default;    
        }
        </style>

HTML

<input type="text" name="userA" id="inputContact" onblur="setTimeout('removeSuggestions()', 200)" onkeyup="getSuggestions(this.value);" value="idhere" />
<div id="suggestions"></div>

PHP

<?php 

mysql_connect("127.0.0.1", "root", "root")or die(mysql_error());
mysql_select_db("gEntry")or die(mysql_error());

$contactPart = mysql_real_escape_string(addslashes($_POST['contactPart']));
$result = mysql_query("SELECT id, title, firstname, lastname, postcode FROM contact WHERE postcode LIKE '%".$contactPart."%'")or die (mysql_error());

while ($row = mysql_fetch_assoc($result)) {
    echo "<div id='link' onClick='addText(\"".$row['id']. ' - ' .$row['title']. ' ' .$row['firstname']. ' '.$row['lastname']."\");'>" . $row['id'] . ' - ' . $row['title'] . ' ' . $row['firstname'] . ' ' . $row['lastname'] . ' - ' . $row['postcode'] .  "</div>";
}

?>

我使用标准 mysql 语法,因为 mysqli 无法在我的服务器上运行。

提前致谢

【问题讨论】:

  • 什么“id here”我在你的代码中没有看到
  • @mplungjan - 我更新了代码抱歉

标签: php javascript jquery mysql html


【解决方案1】:

我不知道你想把你的 id 放在哪里,但我建议你返回 json 对象,这样你就可以做你想做的事了。我会这样做:

    $row = mysql_fetch_assoc($result);

    $json['id'] = $row['id'];
    $json['title'] = $row['title'];
    $json['firstname'] = $row['firstname'];
    $json['lastname'] = $row['lastname'];
    echo json_encode($json);

然后在客户端你可以构建你的 div 并将你的 id 放在你想要的地方:

   $.post("lookup.php", {contactPart:value}, function(data) {
        var message = data.id+" - "+data.title+" "+data.firstname+" "+data.lastname;
        var resultdiv = "<div id='link' onClick='addText('"+message+"')>"+message+"</div>";
        $("#suggestions").html(resultdiv);
        //put your data.id where you need to put it
        $(this).val(data.id);
        runCSS();
        }, "json");

【讨论】:

  • @pimvdb 感谢这个所以 json 进入 php?并且 javascript 取代了我所拥有的?
  • @Justin Erswell:实际上是@Nicola Peluchetti 提出了他的想法。无论如何,发生的事情是 PHP 将数据放入一个数据包中,发送它,然后 JavaScript 将它再次解包到一个对象中(这样您就可以访问 id 属性)。这是一种发送数据的便捷方式。
  • @Justin Erswell 是的,第一部分在 php 中(我不只得到一件事:你期望有多少结果?只有一个?不止一个?你应该检查一下) .无论如何,这个想法只是打包您的数据并以他可以重复使用的方式将其返回给他:在您的情况下,您需要两次 id 将其放在“数据”的属性中很方便
  • 尝试你的代码,没有下拉但没有错误,你会成为明星并编辑我发布的代码并插入你的建议,以便我可以看到如何制定它,谢谢。
【解决方案2】:

只删除这部分,因为它是无效的,不添加任何东西:

$("#inputContact").val() {
    $(this).val()
}

您只能将大括号与function() {}if() {} 等一起使用。我不确定您希望这样做,但如果您只删除这 3 行会怎样?

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 1970-01-01
    • 2012-01-15
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 2013-04-16
    相关资源
    最近更新 更多