PHP: если нет имени

Поэтому у меня есть эта система PM.

В поле получателя вы можете ввести полное имя того, с кем хотите писать.

Поэтому я хочу помочь пользователю, если он не помнит имя.

Поэтому, если вы хотите написать полное имя «Megan Fox» и знать только:

Megan Megan F Megan Fo Meg Fo M Fox etc.. 

Он вернется. «Вы имели в виду Меган Фокс?» Это уже отлично работает.

Теперь мне нужно, чтобы в этом было то, что если вы пишете только Fox, без первого имени, я хочу, чтобы он эхо «Вы имели в виду Меган Фокс?»

Вот где я застрял, поскольку он создает $ lastname после пробела. И я действительно не хочу использовать два поля для первого и последнего.

Как я могу это сделать?

Вот мой код:

 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%') ORDER BY (firstname = '$firstname' AND lastname='$lastname') DESC"); $get = mysql_fetch_array($qur); if($get["full"] == 1){ echo $get["id"]; }else{ echo "Did you mean: ".$get["firstname"]." ".$get["lastname"]." ?"; } 

Solutions Collecting From Web of "PHP: если нет имени"

Это должно сработать.

 $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 ('$lastname' = '' AND lastname LIKE '$firstname%') ORDER BY (firstname = '$firstname' AND lastname='$lastname') DESC"); 
 OR ('$lastname'='' AND lastname LIKE '$firstname%') 

Я думаю, что лучше сопоставлять одно значение вместо двух. Например, трудно догадаться, где первое имя и где последний, поскольку пользователь может ввести Magan Fox или Fox Megan.

поэтому запрос будет выглядеть так:

 SELECT id, firstname, lastname, CONCAT (firstname, ' ', lastname) AS fullname FROM `users` WHERE firstname LIKE '{$string}%' OR lastname LIKE '{$string}%' GROUP BY firstname, lastname ORDER BY firstname ASC, lastname ASC