• 締切済み

チェックボックスからの複数検索条件での抽出

phpとpsqlを使っています。 配列で受け渡されたチェックボックスで複数選択された値$param[]を、別テーブル(t_sample)のフィールド(data)で保存されているカンマ区切りのデータと参照して$paramのデータが1つでもあれば、そのテーブルの行を抽出したいのですが…。 $param[]の数によって、SQL文が変わるので、悩んでいます。 どなたか解決の糸口をご指南ください。

みんなの回答

noname#45976
noname#45976
回答No.2

こんにちは。 概ね下の方の方法でいいとは思いますが、質問文の中の >フィールド(data)で保存されているカンマ区切りのデータ というのが気になります。^^; dataフィールドに、「param1,param2,param3,・・・」な感じでデータが入ってるのかな? だとすると、検索にはイコールではなくてlikeを使った方がいいかも。 $sql = "select * from t_sample where "; for ($i = 0; $i < count($param) ; $i++){ $sql .= "data like '%" . $param[$i] . "%'"; if ($i != count($param)){ $sql .= " or "; } } おもいっきり下の方のソース流用ですみません^^; あ、ちなみに、他にwhere句に指定する条件がもしあるなら、上記のlike文はカッコで囲うように変更してくださいね。^^ (or条件が他と交じってしまいますから、、、)

全文を見る
すると、全ての回答が全文表示されます。
  • kirin_f
  • ベストアンサー率51% (44/85)
回答No.1

普段mySQLを使っていて、psqlは全くわからないのですが、 SQL文は一緒だと思うので、参考までに。 $sql = "select * from t_sample where "; For ($i = 0; $i < count($param) ; $i++){ $sql .= "data = '" . $param[$i] . "'"; If ($i != count($param)){ $sql .= " Or "; } } というのはどうでしょうか? 的外れでしたらすいません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • チェックボックスを使っての検索で

    PHP5とMySQL4.0.24を使用しています。 フィールド内にカンマ区切りでテキストが格納されてます。 +----+----------------------+ | ID | text | +----+----------------------+ |id01| 101,001,201,300 | |id02| 001,201,105 | |id03| 101,401,300,201,003 | | : | : | +----+----------------------+ これをチェックボックスで □001 □003 □101 □105 □201 … でOR検索をしたいのですが。 検索側のHTMLで <input type=checkbox name=chk[] value=001>001         : と書いて 処理側のPHPに $arraival = is_array(@$_POST['chk'])? implode(',',$_POST['chk']):'empty case'; $sql = "select * from shop_data where arraival like '%$arraival%'"; としてもうまく結果が得られません。 どの様に書けばよいのでしょうか?

    • ベストアンサー
    • MySQL
  • Access 複数フィールドにまたがる抽出条件

    Access2016で、クエリの抽出条件の設定に悩んでいます。解決策をご存知の方はご教示いただきますようお願い致します。 ★やりたいこと★ 【テーブル1】に以下のようなフィールドがあります。 [フィールドA] "製品a" "製品b" "製品c ..." のようなデータ群 [フィールドB] "00 "01" の2種類のデータ群 [フィールドC] "98" "99" の2種類のデータ群 フィールドBが "00" で、かつフィールドCが "98" に該当するデータのみを除外する抽出条件を設定したい。 ※フィールドBが "00" でフィールドCが "99" のようなデータは除外したくない SQLとかは使わず、初心者でも後から解読・編集できるような方法があればありがたいです。

  • オートナンバー型を抽出条件にするとき

    いつもお世話になります。 VB.NET2003+Access2000環境です。 あるテーブルにはオートナンバー型を使って新規発生データの管理番号を振っていますが、別のテーブルでその番号を見て手入力しているフィールドがあります。 SQLの抽出条件でこのオートナンバーと手入力したデータと一致したデータを抽出しようとやっているのですがうまくいきません。 オートナンバーのデータを参照して入力するほうのフィールドを数値型にしてもテキストにしてもいずれも「型が一致しない」というエラーが起こります。 こういう場合はどういう風な処理をするのが一般的なのでしょうか? よろしくお願いいたします。

  • Access2003 複雑な条件のデータ抽出

    ☆1つのテーブルで、フィールド[A]~[C]があり、文字および英数字のデータが混在しています。 (ただし、フィールド[C]には、空欄(Null)になっている場合があります) =========================================================== (テーブル(1)) No  [A]      [B]    [C]     [D]      [E]      [F] 1   111      X    あ       2   222      X     か   3   333      X     さ  4   111      Y    た 5   222      Y   (Null)  6   333      Y     は 7   222      Z     ま   8   333      Z     や  9   111      Z    ら    =========================================================== [課題] (1) テーブル(1)のフィールド[A]の値を参照し、「111」の場合は、   フィールド[C]の値を[D]へ抽出する([B]でグループ化) (2) 同様に、フィールド[A]の値を参照し、「222」の場合は、   フィールド[C]の値を[E]へ抽出する([B]でグループ化) (3) 同様に、フィールド[A]の値を参照し、「333」の場合は、   フィールド[C]の値を[F]へ抽出する([B]でグループ化) (4) 新規クエリにて、上記課題(1)~(3)の条件を指定して実行すると    以下の抽出結果が表示される =========================================================== [抽出結果] (テーブル(2)) No  [B]    [D]    [E]      [F] 1   X     あ    か      さ     2   Y     た   (Null)    は   3   Z     ら    ま     や =========================================================== 別々のレコードにあるフィールド[C]の値を、条件に従い テーブル(2)のように1つのレコードにまとめたいのです。  大変恐縮ですが、私はSQLが書けないので、フィールド欄へ関数式を 入力して条件を指定しております。 できましたら、各フィールドへ入力する関数式を教えていただけると助かります。 また、関数だけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、何とぞ宜しくお願い致します。

  • リストボックスで複数データを選択、入力(Access97)

    Access97で初めて入力フォーム作成にチャレンジしています。 リストボックスやコンボボックスで複数データを選択し、1つのフィールドに入力したいのですが、可能でしょうか? よろしくご教示ください。 例:”趣味”というフィールドに   リストからの選択で   ”読書,映画,テニス”のように入力したい。   (カンマ区切り、スペース区切り、区切りなし   など何でも結構です。)   *ベストはカンマ区切り。  

  • Access リストボックス複数選択を抽出条件に

    Access リストボックスで複数選択した値をクエリの抽出条件にしたいです。 ※PC環境:Win7 Access2007 Excel2007 リストボックスで複数選択した値を取得する事はできるのですが、 クエリ実行をすると結果が0件になってしまいます。 他の方のQAなどを参考に以下を作成しましたが、ほしい結果が得られず困っています。 おわかりになる方、ご教示いただけますようお願い致します。 <動作概要> 「画面」の「リストボックス」で複数選択し、 [実行]ボタンを押して、「リストボックス」で選択した値を、「テキストボックス」にセットし、 クエリの抽出条件に、in(テキストボックス)をセットし、テーブルから合致するデータを抽出したい <リストボックス> ※年区分テーブル参照 区分,区分名 1,1年 2,2~3年 3,4~5年 「2,2~3年」「3,4~5年」を選択 ※「区分」は数値型 <VBA> Private Sub 実行_Click()  Dim i As Variant  Me.テキストボックス = Null  For Each i In Me.リストボックス.ItemsSelected Me.テキストボックス = Me.テキストボックス & Me.リストボックス.Column(0, i) & "," Next If Me.テキストボックス <> "" Then  Me.テキストボックス = Left(Me.テキストボックス, Len(Me.テキストボックス) - 1) End If   'ここで画面を確認すると「テキストボックス」には、「2,3」 がセットされている DoCmd.OpenQuery "クエリ"   'テーブルには抽出条件に該当するデータがあるが、クエリ実行結果は0件 End Sub <クエリ SQL> SELECT テーブル FROM テーブル WHERE (((テーブル.区分) in([Forms]![画面]![テキストボックス]))); ※「テーブル.区分」は、数値型 どうぞよろしくお願い致します。

  • クエリの検索条件をフォームで指定したいのです

    OS winXP Access2003です よろしくご指南お願いいたします。 フォームのコンボボックスの選択で あり なしを選択してクエリの抽出条件のフィールドのデーターのある物無い物を分けて表示させたいのですがうまくいきません   フォームのコンボボックスの選択で あり の時  フィールドの抽出条件 値  ‹› ""   フォームのコンボボックスの選択で なし の時  フィールドの抽出条件 値  Is Null をそれぞれ入れたいのですが どのようにすれば良いのか ご指南ください

  • 除外抽出条件

    こんにちは、SQLの抽出条件でわからないところが在るのでよろしくお願いします。 テキスト型でメールアドレスの入ったフィールドに対して抽出をしたいのですが、"@" の含まれていないフィールドの抽出の仕方がわかりません。含まれる場合は select * from テーブル where メールアドレス like '%@%' で出来ます。含まれない場合、 select * from テーブル where メールアドレス <> の後にどう記述すれば言いのでしょうか?

  • 重複しないデータの抽出について

    MYSQL5.0.77で DBをつくり テーブル1のAフィールドのデータから テーブル2のAフィールドのデータ、 テーブル3のAフィールドのデータ、 テーブル3のAフィールドのデータ、 のいずれにも重複しないデータのみ 抽出したいと思っています。 どのようなSQL文を書けばよいでしょうか? じぶんでいろいろ試しましたがどうしても出来ません。 どなたかご教授願います。

    • ベストアンサー
    • MySQL
  • 配列に指定した値が含まれているものを抽出する方法

    こんにちは。 いつもお世話になっております。 SQLにて、配列のフィールドに指定した値が含まれているものを抽出する方法を質問致します。 SQLのテーブル(テーブル名:data)に配列のフィールド(フィールド名:array[])があるとします。 Array[]フィールドの中に、1, 2, 6のいずれかが含まれている場合表示対象となるSQL文を書くには、どのように書けばよいですか。PostgreでSQL文を書くとします。 実現したい動作は以下の通りです。 array[] の値 {1,3,5} 表示対象になる {3,8,9,10}  表示対象にならない {2,6} 表示対象になる 以上よろしくお願い致します。 ちなみに、array[]フィールドの中に、2(指定した数値が1つだけ)を探すとき、 select * from data where 2=any (array); とすればいいことは確認できました。

このQ&Aのポイント
  • ZOOM中マイクの入力できるそうですが、向こうが聞こえない問題について調べました。
  • ZOOM中にマイクを使っても向こうの声が聞こえない問題について説明します。
  • ZOOM中のマイクの設定で相手の声が聞こえない場合の解決方法についてまとめました。
回答を見る