検索できるフィールドを生成するために、mySQL で連結しました。これには、クライアント データベースの所有者の名前とアドレスだけでなく、動物も含まれています。動物の名前、飼い主の名前、郵便番号で任意の順序で検索できるようにする必要があります。したがって、私の名前が john smith で、Fido という犬を飼っていて、郵便番号が AB1 2CD に住んでいる場合、次のいずれかを入力すると、検索結果が得られるようになります。
「john fido AB1」「john AB1」「AB1 john」「AB1 fido」「fido 2CD」「2CD」「fido」など... つまり、フィールドのいずれかを任意の順序で入力し、完全な単語でもないので、「john fido AB1" は、"jo fi AB1" と同じ結果になるはずです。
私は現在、この PHP コードを持っています。検索ページで単一のテキスト フィールドを取得し、それを分解してから内破して、検索用語の間に % を追加します。
$list = explode(' ',$_GET["q"]);
$q = implode('%%', $list);
if (!$q) return;
$sql = "SELECT DISTINCT owner.AddressPrim, owner.PostcodePrim,
owner.OwnerSurnamePrim,owner.OwnerForenamesPrim,owner.OwnerID
FROM owner
Inner Join patient ON owner.OwnerID = patient.OwnerID
WHERE CONCAT_WS(' ',owner.AddressPrim, owner.PostcodePrim,
owner.OwnerForenamesPrim,owner.OwnerSurnamePrim,patient.AnimalName) LIKE '%$q%'";
これは "AB1 john" と "john fido" では機能しますが、"fido john" では機能しません。
どんな助けでも大歓迎です