如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章