我正在爲我的用戶製作一個PM系統。顯示兩個以上的名稱和空間問題
在收件人字段中輸入完整名稱。當你提交我想確保它是他發送給他的正確用戶。
因此,如果他鍵入「梅根福克斯」,這是一個用戶的完整匹配。但如果他鍵入梅格F或梅根,福克斯將返回「你是指梅根福克斯?」
所以......
現在我已經想過,如果有就是不止一個名爲「梅根」還是姓「狐狸」。我爲此做了一段時間,如果超過1,它會回來,「你是誰的意思:馬特福克斯,梅根福克斯?」
現在我發現它出錯的地方,我得到了3行與姓氏「福克斯」,它只顯示其中兩個在「誰是你的意思?
我該如何解決這個問題?
如果我只在收件人字段中輸入空格,它將返回表中的所有用戶。我怎樣才能防止這個?
這裏是我的代碼如下所示:
$mot = mysql_real_escape_string($_POST['mottagare']);
list($firstname, $lastname) = array_map('ucfirst', explode(' ', $mot, 2));
$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%')
OR firstname LIKE '$firstname%' OR lastname LIKE '$firstname%'
ORDER BY (firstname = '$firstname' AND lastname='$lastname') DESC");
$get = mysql_fetch_array($qur);
if(mysql_num_rows($qur) == 1){
if($get["full"] == 1){
echo $get["id"];
}else{
echo "Did you mean ".$get["firstname"]." ".$get["lastname"]." ?";
}
}elseif(mysql_num_rows($qur) > 1){
while($get = mysql_fetch_array($qur)) {
$name[] = $get["firstname"]." ".$get["lastname"];
}
if(count($name) > 1) {
echo 'Who did you mean?<br>';
} else {
echo 'Did you mean: ';
}
echo implode('<br>', $name);
}
但是..線條在不同的if's ..雖然工作,這不是問題 – Johnson 2010-11-05 20:10:28
不,第一個是根本沒有「如果」,它總是執行。 – AndreKR 2010-11-05 20:12:01
@約翰遜:如果這段時間工作,你不會在這裏問我們爲什麼不這樣做。你的第一個mysql_fetch_array總是被執行,並從結果集中移除第一個元素,這就是爲什麼它甚至不會到達這個時間。 – 2010-11-05 20:13:26