【スキーマー】一つのデータ項目で複数選択をさせたいとき

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
shige
パワーユーザー
記事: 40
登録日時: 2006年4月04日(火) 14:25

【スキーマー】一つのデータ項目で複数選択をさせたいとき

投稿記事 by shige » 2006年7月11日(火) 14:58

例としては、芸能イベントの一覧表を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するエントリーデータを持ちたいのです。

良い解決策はありますでしょうか?
また質問の意味は伝わりますでしょうか?

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: 【スキーマー】一つのデータ項目で複数選択をさせたいとき

投稿記事 by webmaster » 2006年7月12日(水) 21:22

 shigeさん、いつもご質問ありがとうございます。

 今回のご質問ですが、申し訳ありません、現状は対応する機能はございません。
 他の方からのご要望で「複数選択可能なチェックボックス」の実装を予定して
おりますが、時期は未定となっております。

 ご不便をおかけして申し訳有りません。

 現状では、「一般」というcaptionのメニュー項目で選択肢が「はい」「いいえ」、
同じく「ファミリー」というcaptionのメニュー項目でも選択肢が「はい」「いいえ」、
・・・のようなスキーマを作り、絞込みの際には「一般=はい」のような指定で
絞込みをかける、という方法ぐらいしか思いつきません。

 ただ、あまりスマートとはいえないと思います。m(__;)m

shige
パワーユーザー
記事: 40
登録日時: 2006年4月04日(火) 14:25

Re: 【スキーマー】一つのデータ項目で複数選択をさせたいとき

投稿記事 by shige » 2006年7月13日(木) 19:03

webmasterさま

ご返答ありがとうございました。
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>
--------------------------------------------------------------------------------------

という感じで、狙いの処理を実現できました。
代替え手段があって助かりました。

ありがとうございました。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: 【スキーマー】一つのデータ項目で複数選択をさせたいとき

投稿記事 by webmaster » 2006年7月13日(木) 19:55

 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番目の方法はかなり説明を省略しているので、ご不明な点がありましたらまた
ご質問頂ければと思います。

 スマートな解決方法を提示できず申し訳ありません。

bcacsato
パワーユーザー
記事: 233
登録日時: 2005年11月27日(日) 14:05

補足説明をお願いいたします。

投稿記事 by bcacsato » 2006年8月14日(月) 17:23

私もshige様と同様のサイトを構築することになりました。

 ※私の場合は不動産物件検索サイトで、
  ・ ○○小学校
  ・ △△中学校
  ・ □□高校
  といった具合に学区毎に物件を検索できるものです、

そこで、webmaster様の回答の方法を試してみたいと思うのですが、
2番目の方法の内容が理解できません…すいません。

できましてら、もう少し詳しく解説していただけますでしょうか?
よろしくお願いいたします。


※7/26に質問しました「textやtextareaにあらかじめ文字を入力したい」
 の件もよろしくお願いいたします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: 補足説明をお願いいたします。

投稿記事 by webmaster » 2006年8月15日(火) 11:31

 bcacsatoさん、いつもご質問ありがとうございます。
 説明よりもソースを書いた方が早いかもということで、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>

返信