0

HTMLページに複数選択コンボボックスがあります。実際の国のリストは約60項目です。

<select name="country[]" multiple="multiple">
  <option value="UK">United Kingdom</option>
  <option value="FR">France</option>
  <option value="DE">Germany</option>
  <option value="JP">Japan</option>
</select>

データベースでは、国リストは、プロジェクト1(uk、deまたはfr、de、jpなど)などの行にコンマ区切りの文字列として格納されます。

コンボボックスで複数の項目を選択してプロジェクトをプルアップし、その国で選択された国のプロジェクトが表示されるようにしたいと思います。問題は、列の国にコンマ区切りの文字列値が格納されることです。

SELECT * FROM projects WHERE FIND_IN_SET("country","DE, UK")'

私の問題は、FIND_IN_SETが文字列全体にのみ一致することです。上記のコードは、DEまたはUKしかない国のプロジェクトを検索できますが、たとえば「FR、UK」のプロジェクトは検索できません。

列の国を解析し、コンボボックスで選択した国を表示するSQLクエリを作成するにはどうすればよいですか?

4

1 に答える 1

0

複数の値を 1 つのフィールド (セットの形式) に格納する場合は、後で簡単に解析できるようにする必要があります。

一般的な方法は、最初と最後の要素を含め、両側に区切り文字を配置することです。

,de,us,en,

区切り文字で囲むだけで、そのセット内の単一の値を検索できます (ここでは,)。

あなたの例では、Mysql btwでそれを行いません(技術的にも可能であるはずです)が、<SELECT>入力要素を出力するときに、それらの要素を選択済みとしてマークできるようにする必要があります。どの値がセット内にあります。

于 2013-01-19T16:19:56.847 に答える