0

私はコミュニティの周りの何人かの農民のために(PHPとMySQLを使用して)データ駆動型のウェブサイトを構築しています(まあ、そうだった-すぐにわかるでしょう)。彼らは自分たちの製品をリストアップして、人々にそれらの製品を検索してもらいたいと思っていました。彼らの名前は、すべての製品の詳細を示すページへのリンクとともに表示されます。

長いリストになることはわかっていましたが、「mysqlデータベースへの検索はすべて、大文字と小文字を区別するものも含めて扱いにくいため、アルファベット順にリストを作成するだけで、ドロップダウンボックスから必要なものを選択できます。検索してください。問題ありません。」

さて、今それは問題です。彼はサイトのパラメータを拡張しました。彼は今、手作りと自家製の製品を含めたいと思っています。言うまでもなく、数十から数百の潜在的な製品に移行したため、ドロップダウンリストは実行できなくなりました。ただし、訪問者がサイトを検索するためにテキストフィールドを使用する場合、スペルミスなしで入力し、同じ大文字と小文字を使用しない限り、検索から正確な結果を得ることができません。

誰かが別の方法をお勧めできますか?私は「LIKE」検索を知っていますが、それは私の問題を実際には解決しません。特に、検索で誤検知が発生する可能性があるためです。助けていただければ幸いです、ありがとう!

4

2 に答える 2

0

2つのテーブルを使用します。

  • 可能なすべての検索用語を含むもの
  • 適用可能な用語の同義語を持つもの(例:「手作り」および「自家製」)

テキストボックスに文字が入力されているときに、AJAXを使用して最初のテーブルから値を検索します。以下を使用して、可能な用語のリストを返します。

search_tableから用語を選択します。ここで、「%<入力文字列>%」のような用語

ヒット数が10未満の場合にのみ、値の戻りを開始します。(つまり、2文字を入力しても入力されません)。次に、特定の用語が入力されたら、2番目のテーブルで同義語を検索し、それらを検索に含めます。結果ページで、同義語を含めたことを示し、それぞれに「X」を付けて、除外したものを使用して再検索することを選択します。

'like'は大文字と小文字を区別しないことに注意してください。

于 2013-03-12T17:46:10.940 に答える
0

複数の検索パラメータについて話しているので、質問はややあいまいです。

それはデザインの選択です。たとえば、次のことを考慮してください。

  • 「自家製」や「手作り」などのアイテムの場合、おそらく入力フィールドの下に、人々が検索に追加のフラグを追加できるチェックボックスが必要です
  • たとえば、「John Smith」という名前で検索し、「handmade」と「homemade」にチェックを入れます
  • データベースの「handmade」と「homemade」フィールドは常に同じになります (オン/オフのいずれか)

したがって、SQL クエリは次のようになります。

SELECT * FROM products WHERE farmername LIKE '%$search%' AND handmade = 'handmade'

または、データを入力するときに、手作りがチェックされている場合は、手作りに整数を挿入します。1 は手作りがチェックされたことを意味し、0 は手作りがチェックされなかったことを意味します。

したがって、クエリは AND 手作り = 1 (または 0) になり、手作りではありません

これらはあなたを動かすためのほんの一部のアイデアですが、これはデータベースの決定というよりも設計上の決定です。フラグを使用するテーブルをどのように作成しますか?

于 2013-03-12T14:45:03.217 に答える