例としては、芸能イベントの一覧表をCMS化する際に対象の客層をマスターデータとして持ちたいのですが、
客層の種類が「一般」「ファミリー」「成年」「高齢者」と4つあったとして、
一つのエントリー内で「一般」と「ファミリー」といった様に複数の客層選択をしたい場合があります。
そして、表示時にはプルダウンメニューとフォームのSubmitから絞り込み検索を行いたい(Tipsの不動産検索システムの様な絞り込みです)のですが、そのようなスキーマ定義は可能でしょうか?
1エントリーに対し、客層の種類が1つの選択であれば、
<data name="client" type="menu" caption="客層" group="True">
<menuitem id="1">一般</menuitem>
<menuitem id="2">ファミリー</menuitem>
<menuitem id="3">成年</menuitem>
<menuitem id="4">高齢者</menuitem>
</data>
とプルダウン項目にして、グループキーを設定すれば、表示の際に絞り込み検索もOKだと思うのですが、
絞り込み表示の際に、「一般」でも「ファミリー」でもHITするエントリーデータを持ちたいのです。
良い解決策はありますでしょうか?
また質問の意味は伝わりますでしょうか?
【スキーマー】一つのデータ項目で複数選択をさせたいとき
Re: 【スキーマー】一つのデータ項目で複数選択をさせたいとき
shigeさん、いつもご質問ありがとうございます。
今回のご質問ですが、申し訳ありません、現状は対応する機能はございません。
他の方からのご要望で「複数選択可能なチェックボックス」の実装を予定して
おりますが、時期は未定となっております。
ご不便をおかけして申し訳有りません。
現状では、「一般」というcaptionのメニュー項目で選択肢が「はい」「いいえ」、
同じく「ファミリー」というcaptionのメニュー項目でも選択肢が「はい」「いいえ」、
・・・のようなスキーマを作り、絞込みの際には「一般=はい」のような指定で
絞込みをかける、という方法ぐらいしか思いつきません。
ただ、あまりスマートとはいえないと思います。m(__;)m
今回のご質問ですが、申し訳ありません、現状は対応する機能はございません。
他の方からのご要望で「複数選択可能なチェックボックス」の実装を予定して
おりますが、時期は未定となっております。
ご不便をおかけして申し訳有りません。
現状では、「一般」というcaptionのメニュー項目で選択肢が「はい」「いいえ」、
同じく「ファミリー」というcaptionのメニュー項目でも選択肢が「はい」「いいえ」、
・・・のようなスキーマを作り、絞込みの際には「一般=はい」のような指定で
絞込みをかける、という方法ぐらいしか思いつきません。
ただ、あまりスマートとはいえないと思います。m(__;)m
Re: 【スキーマー】一つのデータ項目で複数選択をさせたいとき
webmasterさま
ご返答ありがとうございました。
いただきましたアドバイスにしたがって、、、
▼スキーマー
--------------------------------------------------------------------------------------
<data name="client1" type="menu" caption="一般" group="True" >
<menuitem id="">×</menuitem>
<menuitem id="1">○</menuitem>
</data>
<data name="client2" type="menu" caption="ファミリー" group="True" >
<menuitem id="">×</menuitem>
<menuitem id="1">○</menuitem>
</data>
<data name="client3" type="menu" caption="幼稚園・保育所" group="True" >
<menuitem id="">×</menuitem>
<menuitem id="1">○</menuitem>
</data>
・
・
・
--------------------------------------------------------------------------------------
・・としておき、
▼抽出フォーム
--------------------------------------------------------------------------------------
<form method="get" action="list.php">
<input name="client1" type="checkbox" value="1">一般
<input name="client2" type="checkbox" value="1">ファミリー
<input name="client3" type="checkbox" value="1">幼稚園・保育所
・
・
・
<input type="submit" name="Submit" value="検索">
</form>
--------------------------------------------------------------------------------------
という感じで、狙いの処理を実現できました。
代替え手段があって助かりました。
ありがとうございました。
ご返答ありがとうございました。
なるほど!これは思いつきませんでした。webmaster さんが書きました:現状では、「一般」というcaptionのメニュー項目で選択肢が「はい」「いいえ」、
同じく「ファミリー」というcaptionのメニュー項目でも選択肢が「はい」「いいえ」、
・・・のようなスキーマを作り、絞込みの際には「一般=はい」のような指定で
絞込みをかける、という方法ぐらいしか思いつきません。
いただきましたアドバイスにしたがって、、、
▼スキーマー
--------------------------------------------------------------------------------------
<data name="client1" type="menu" caption="一般" group="True" >
<menuitem id="">×</menuitem>
<menuitem id="1">○</menuitem>
</data>
<data name="client2" type="menu" caption="ファミリー" group="True" >
<menuitem id="">×</menuitem>
<menuitem id="1">○</menuitem>
</data>
<data name="client3" type="menu" caption="幼稚園・保育所" group="True" >
<menuitem id="">×</menuitem>
<menuitem id="1">○</menuitem>
</data>
・
・
・
--------------------------------------------------------------------------------------
・・としておき、
▼抽出フォーム
--------------------------------------------------------------------------------------
<form method="get" action="list.php">
<input name="client1" type="checkbox" value="1">一般
<input name="client2" type="checkbox" value="1">ファミリー
<input name="client3" type="checkbox" value="1">幼稚園・保育所
・
・
・
<input type="submit" name="Submit" value="検索">
</form>
--------------------------------------------------------------------------------------
という感じで、狙いの処理を実現できました。
代替え手段があって助かりました。
ありがとうございました。
Re: 【スキーマー】一つのデータ項目で複数選択をさせたいとき
webmasterです。
すいません、1点、見落としがありました。(-_-;
その入力フォームですと、例えば「一般」と「ファミリー」のチェックを同時に
つけることができてしまうと思います。そうすると、CMSDでは与えられた全ての
条件をAND条件で絞込みしますので、意図する結果にならないかと思います。m(__)m
いい解決方法を思いつかないのですが、最も簡単な方法は、onsubmitにて
複数チェックが入っているかjavascriptでチェックし、alertを出す、という方法です。
(ユーザーインタフェース的にはあまりよくありませんが…)
もう一つは、以下のようにhiddenパラメータを用意し、
<input type="hidden" name="client1" value="" />
<input type="hidden" name="client2" value="" />
<input type="hidden" name="client3" value="" />
これとは別に項目選択用のselectメニューをダミーで用意します。
そして、javascriptを使って、onsubmit時に、selectの値を
適切なhidden項目のvalueに書き込んでからsubmitするという方法です。
ダミーのselectのnameは"dammy1"などにしておけば、CMSD側で
無視されます。
2番目の方法はかなり説明を省略しているので、ご不明な点がありましたらまた
ご質問頂ければと思います。
スマートな解決方法を提示できず申し訳ありません。
すいません、1点、見落としがありました。(-_-;
その入力フォームですと、例えば「一般」と「ファミリー」のチェックを同時に
つけることができてしまうと思います。そうすると、CMSDでは与えられた全ての
条件をAND条件で絞込みしますので、意図する結果にならないかと思います。m(__)m
いい解決方法を思いつかないのですが、最も簡単な方法は、onsubmitにて
複数チェックが入っているかjavascriptでチェックし、alertを出す、という方法です。
(ユーザーインタフェース的にはあまりよくありませんが…)
もう一つは、以下のようにhiddenパラメータを用意し、
<input type="hidden" name="client1" value="" />
<input type="hidden" name="client2" value="" />
<input type="hidden" name="client3" value="" />
これとは別に項目選択用のselectメニューをダミーで用意します。
そして、javascriptを使って、onsubmit時に、selectの値を
適切なhidden項目のvalueに書き込んでからsubmitするという方法です。
ダミーのselectのnameは"dammy1"などにしておけば、CMSD側で
無視されます。
2番目の方法はかなり説明を省略しているので、ご不明な点がありましたらまた
ご質問頂ければと思います。
スマートな解決方法を提示できず申し訳ありません。
補足説明をお願いいたします。
私もshige様と同様のサイトを構築することになりました。
※私の場合は不動産物件検索サイトで、
・ ○○小学校
・ △△中学校
・ □□高校
といった具合に学区毎に物件を検索できるものです、
そこで、webmaster様の回答の方法を試してみたいと思うのですが、
2番目の方法の内容が理解できません…すいません。
できましてら、もう少し詳しく解説していただけますでしょうか?
よろしくお願いいたします。
※7/26に質問しました「textやtextareaにあらかじめ文字を入力したい」
の件もよろしくお願いいたします。
※私の場合は不動産物件検索サイトで、
・ ○○小学校
・ △△中学校
・ □□高校
といった具合に学区毎に物件を検索できるものです、
そこで、webmaster様の回答の方法を試してみたいと思うのですが、
2番目の方法の内容が理解できません…すいません。
できましてら、もう少し詳しく解説していただけますでしょうか?
よろしくお願いいたします。
※7/26に質問しました「textやtextareaにあらかじめ文字を入力したい」
の件もよろしくお願いいたします。
Re: 補足説明をお願いいたします。
bcacsatoさん、いつもご質問ありがとうございます。
説明よりもソースを書いた方が早いかもということで、2番目の例を試しに
書いて見ました。
ご不明な点はまたご質問頂ければ幸いです。
説明よりもソースを書いた方が早いかもということで、2番目の例を試しに
書いて見ました。
ご不明な点はまたご質問頂ければ幸いです。
コード: 全て選択
<html>
<head>
<script language="javascript">
<!--
function setHidden()
{
var menu = document.getElementById( 'client_dammy' );
var client1 = document.getElementById( 'client1' );
var client2 = document.getElementById( 'client2' );
var client3 = document.getElementById( 'client3' );
client1.value = '';
client2.value = '';
client3.value = '';
switch ( menu.value )
{
case 'client1':
client1.value = '1';
break;
case 'client2':
client2.value = '1';
break;
case 'client3':
client3.value = '1';
break;
}
}
-->
</script>
</head>
<body>
<input type="hidden" name="client1" id="client1" value="" />
<input type="hidden" name="client2" id="client1" value="" />
<input type="hidden" name="client3" id="client1" value="" />
<select name="client_dammy" id="client_dammy" onchange="setHidden();">
<option value="">選択なし</option>
<option value="client1">一般</option>
<option value="client2">ファミリー</option>
<option value="client3">幼稚園・保育所</option>
</select>
</body>
</html>