如何在 PHP 的自动完成中根据其名字和姓氏返回 ID?

Posted

技术标签:

【中文标题】如何在 PHP 的自动完成中根据其名字和姓氏返回 ID?【英文标题】:How can I return the ID based from its first name and last name in autocomplete in PHP? 【发布时间】:2016-04-01 10:57:06 【问题描述】:

这是 index.php 代码(我在网上找到了,感谢所有者):

 <html>
 <HEAD>
  <TITLE> Ajax php Auto Suggest </TITLE>

  <link href="css/style.css" rel="stylesheet" type="text/css">

 <SCRIPT LANGUAGE="javascript" src="js/jquery.js"></SCRIPT>
 <SCRIPT LANGUAGE="JavaScript" src="js/script.js"></SCRIPT>
 </HEAD>
 <BODY>
 <center>

   <div class="main">
      <div class=""><a href="http://www.scriptime.blogspot.in">scriptime</a></span></div>
         <div id="holder"> 
         Enter Keyword : <input type="text" id="keyword" tabindex="0"><img src="images/loading.gif" id="loading">
         </div>
         <div id="ajax_response"></div>

   </div>
 </center>

 </BODY>
</HTML>

这是 .php 代码(配置工作正常)。

<?php
include("config.php");
$keyword = $_POST['data'];
$sql = "select idPerson, firstName, middleName, lastName from ".$db_table." where ".$db_column." like '".$keyword."%'";
//$sql = "select name from ".$db_table."";
$result = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($result))

    echo '<ul class="list">';
    while($row = mysql_fetch_array($result))
    
        $str = ($row['idPerson']);
        $str1 = ($row['firstName']);
        $str2 = ($row['middleName']);
        $str3 = ($row['lastName']);
        //$start = strpos($str,$keyword); 
        //$end   = similar_text($str,$keyword); 
        //$last = substr($str,$end,strlen($str));
        //$first = substr($str,$start,$end);

        $final = '-'.$str.' '.$str2;

        echo '<li><a href=\'javascript:void(0);\'>'.$str.' - '.$str1.' '.$str2.' '.$str3.'</a></li>';
    
    echo "</ul>";

else
    echo 0;?>      

这是输出: If I click the value, I want that the textbox would return its ID only. How can I do that? I really need help. I still suck at this.

【问题讨论】:

根据我上传的图片,代码如下:echo ''.$str1.' '.$str3.''; 添加 $row['id'] 怎么样?如果字段名当然是“id”。 “我在网上得到了这个,感谢所有者”。辩护的理由是,“你的荣誉,我确实相信了所有者......不是吗?” :-) 我已经做到了:$str = ($row['idPerson']);它仍然不只显示 ID。 【参考方案1】:

在文本字段本身中显示 ID 是一种不好的做法。如果用户想再次输入怎么办?当然,你可以用 jQuery 做任何事情,但我建议你在选择字段后显示id 在前面

试试下面的代码,我们在div 中有我们的first name last name,并从数据库中检索到一个唯一的id,并且每当单击此div 时,我们都会附加id 并将其显示给用户。

您的 PHP 代码:

<?php
include("config.php");
$keyword = $_POST['data'];
$sql = "select idPerson, firstName, middleName, lastName from ".$db_table." where ".$db_column." like '".$keyword."%'";
//$sql = "select name from ".$db_table."";
$result = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($result))

    echo '<ul class="list">';
    while($row = mysql_fetch_array($result))
    
        $str = ($row['idPerson']); 
        $str1 = ($row['firstName']);
        $str2 = ($row['middleName']);
        $str3 = ($row['lastName']);
        //$start = strpos($str,$keyword); 
        //$end   = similar_text($str,$keyword); 
        //$last = substr($str,$end,strlen($str));
        //$first = substr($str,$start,$end);

        $final = '-'.$str.' '.$str2;


        echo "<li><a href='javascript:void(0);'><div class='nameHolder' id='".$str."'>".$str1." ".$str2."</div></a></li>";
    
    echo "</ul>";

else
    echo 0;?>

将此 JavaScript(而不是 jQuery)添加到您的页面:

<script type="text/javascript">

$(document).ready(function()

    $(".nameHolder").click(function() //check if any of the names is clicked

    if ($(".showID")[0])
      
        $('.showID').remove(); //remove if an id was shown before
    

    var selectedID = $(this).attr('id'); //get the 'id' of the selected name

    $(".list").append("<b class='showID'>ID: "+selectedID+"</b>"); //append it to our HTML

    );

);

</script>

不过,这仅取决于您执行自动完成功能的方式,并且可以使用 jQuery 轻松操作。但是,这是一种实现您所想的方法!

【讨论】:

非常感谢您的回复。但我一直在寻找类似...当我在输入框中输入名称“Walter White...”时,自动完成将显示名称 Walter White,当我选择它时,它的 ID 号将放在文本中盒子而不是它的名字。 @WandaMaximoff,啊,我明白你的意思了。更新了我的答案。请告诉我。 嗨。我尝试了您提供的代码,但仍然无法正常工作:-( 怎么样?您能否请检查控制台,看看是否有任何错误?如果有,请贴在这里。 我正在使用记事本++。它没有显示任何错误。但是,这里有一个 script.js 文件。也许你想看看?

以上是关于如何在 PHP 的自动完成中根据其名字和姓氏返回 ID?的主要内容,如果未能解决你的问题,请参考以下文章

根据名字和姓氏值自动填写和匹配电子邮件输入

如何将电子邮件地址中名字和姓氏的第一个字母大写?

如何在单个数据表数组列中组合姓氏,名字中间名? -PHP

Python函数返回名字和姓氏中的常用字母列表

PHP显示登录用户的名字和姓氏[重复]

根据先前在同一表单上输入的值自动完成表单字段