【发布时间】:2010-11-04 22:08:47
【问题描述】:
嘿,我的表单中有一个收件人字段,您可以在其中输入用户的全名,例如“john derek”。
现在我将它分解为 $firstname 和 $lastname
list($firstname, $lastname) = array_map('ucfirst', explode(' ', $recipient, 2));
如果有任何完全匹配,我如何检查数据库,获取 id。
表用户有“名字”和“姓氏”列
如果有一半匹配,如果只存在 firstname (john) 或 lastname(derek) 而不是两者,则 echo "Did you mean: John Derek?";
$qur = mysql_query('
SELECT id, firstname, lastname,
(firstname = "$firstname" AND lastname = "$lastname") AS full FROM users
WHERE (firstname = "$firstname" AND lastname="$lastname")
OR (firstname LIKE "$firstname%" AND lastname LIKE "$lastname%")
ORDER BY (firstname = "$firstname" AND lastname="$lastname") DESC');
$get = mysql_fetch_array($qur);
echo $get["full"] ."<br>";
我没有得到任何东西,即使 $firstname 是“John”而 $lastname 是“Derek”
也试过了:
echo $get["id"];
echo $get["lastname"]
echo $get["firstname"]
好像什么都没找到?怎么了?
【问题讨论】:
-
如果您的收件人有三个或更多姓名怎么办?无论哪种方式,我认为您应该添加更多细节。是否有现成的收件人列表,用户只能在其中查找?或者“你的意思是”机制是如何发挥作用的?你的数据库表是什么样的?当用户输入“John D”时找到“John Derek”的 LIKE 搜索是否也是可行的,或者您是否需要分别匹配名字和姓氏?
-
假设收件人没有。
-
在收件人字段,我有一个自动提示,所以你不必写全名。回声“你的意思是”只是给我的,稍后再编辑,因为我想问用户他是否输入了这个名字(显示全名) - 如果它不是完全匹配。
-
@Johnson 但自动建议从何而来?是否有现有的收件人列表?您的数据库结构是什么样的?
-
如果您输入“John Der”,它应该首先检查 John Der 上是否有任何完全匹配,如果没有则检查姓氏中的 John 和 LIKE 'Der',如果是,请显示您的意思是 John derek 吗?