多分あなたのデータベース構造はあなたを助けるために変えられました。たとえば、都市とクライアントの関係があるとします。ビジネスは「Tech」や「Search」のようなものですが、その場合、同じビジネスを持つ複数のクライアントを持つことができますか?ビジネスを別のテーブルに移植し、それらを参照する価値があります。そして、次のような単純なクエリ持つことができます。
SELECT *
FROM clients
WHERE clients.city = {form result: cities.id}
AND clients.business = {form result: businesses.id}
ORDER BY clients.name
LIMIT 0, 30
は今、次の2つの選択肢を持っている(例えば都市)、ユーザいずれかのフィールドに記入していないと仮定すると:ユーザーの入力または使用することを検証することにより、それを埋めるためにそれらを強制しますこれをワイルドカードとして使用すると、クエリからWHERE clients.city
句を削除できます。あなたの<select>
オプションの値がid
からCitiesのものであると仮定します。
プログラムで、私はこのケースでクエリを作成したい:フィルタは、フィルタリング方法のあなたの選択である
$queryStr = 'SELECT * FROM clients';
if (!empty($_POST['city']) && !empty($_POST['business'])) {
$queryStr .= ' WHERE city = ' . filter($_POST['city']) . ' AND business = ' . filter($_POST['business']);
} elseif (!empty($_POST['city'])) {
$queryStr .= ' WHERE city = ' . filter($_POST['city']);
} elseif (!empty($_POST['business'])) {
$queryStr .= ' WHERE business = ' . filter($_POST['business']);
} else {
// pass
}
$queryStr .= ' ORDER BY name LIMIT 0, 30';
を。
ビジネステーブルは既に作成されていますが、クライアントテーブルには接続されていません。私のクライアントは、使用するアクセスデータベースを私に与えましたが、非常に古くてよく作られていません。クライアントのテーブルには、ビジネスのフィールドもあります。 500の企業があります。ビジネスの名前をIDに変換するにはどうすればよいですか?優秀な人を作って改宗をするのですか?私はひとつずつやる必要がありますか? – dutraveller
私はAccessで多くの作業をしていません。(私はmysql/pgsqlを使って作業します。テーブルをcsvとしてダンプしてインポートする方が簡単かもしれません)。それぞれのビジネスの名前をIDとして使用するのではなく、私はID番号(アクセス番号のオートナンバー)を各自に与え、それらを参照します。 – Ross