【问题标题】:How can I return the ID based from its first name and last name in autocomplete in PHP?如何在 PHP 的自动完成中根据其名字和姓氏返回 ID?
【发布时间】: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.

【问题讨论】:

  • 添加 $row['id'] 怎么样?如果字段名当然是“id”。
  • “我在网上得到了这个,感谢所有者”。辩护的理由是,“你的荣誉,我确实相信了所有者......不是吗?” :-)
  • 我已经做到了:$str = ($row['idPerson']);它仍然不只显示 ID。
  • 标签: php jquery css ajax web


    【解决方案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 文件。也许你想看看?
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签