サポート

フォームやコメントにチェックボックスを使いたい。

井亜 (2016/05/11 10:23)

設置URL : http://xxx.jp/

フォームに項目を増やし、チェックボックスを設置したのですが、上手く動作しません。
また、コメントフォームで本文をフォーム入力ではなくチェックボックスにしたのですが、こちらもうまく動作しません。
2つ以上選択すると一番最初の項目のみが反映されて、複数選択しても意味がない状態です。

チェックボックスは、下記サイトを元にタグを作りました。
http://www.tagindex.com/html_tag/form/input_checkbox.html

<p>デフォルト<br>
<input type="checkbox" name="q1" value="その1"> その1
<input type="checkbox" name="q1" value="その2"> その2
<input type="checkbox" name="q1" value="その3"> その3
<input type="checkbox" name="q1" value="その4"> その4
<input type="checkbox" name="q1" value="その5"> その5
</p>

このような形です。
どうすれば複数選択した項目を送信することが出来るのでしょうか?

ミツ (2016/05/11 11:36)

URL : http://32877.xii.jp

こんにちは。

フォームプラグインで入力項目(チェックボックス)を増やす際は、
<input type=checkbox>のnameをplugin_form[interest][]のように[]をつける必要があります。
詳しくは

http://freo.jp/plugin/form.html#function_add

を参考にしてください。

上記URLにも注釈がついていますが、複数選択したチェックボックスの値はすべて連結されて送信されますが、連結する際の文字を指定するには下記URLを参考にしてください。

http://freo.jp/plugin/form.html#function_implode

また、コメントの本文をチェックボックスで複数選択可能にする場合は、

[freo/templates/internals/view/default.html]のコメント本文入力部分を

<dt>コメント</dt>
	<dd>
		<input type="checkbox" name="comment[text][]" value="test1">test1
		<input type="checkbox" name="comment[text][]" value="test2">test2
		<input type="checkbox" name="comment[text][]" value="test3">test3
		<input type="checkbox" name="comment[text][]" value="test4">test4
	</dd>

のように変更し、
[freo/libs/freo/internals/view/default.php]の86行目に

//コメントを配列で取得する場合の処理
if (isset($_POST['comment']['text'])) {
	if (isset($_POST['comment']['text'])) {
		if (is_array($_POST['comment']['text'])) {
			$_POST['comment']['text'] = implode("\n", $_POST['comment']['text']);
		}
	}
}

を挿入してください。

井亜 (2016/05/11 11:48)

URL : http://xxx.jp/

ミツさん。
ご回答ありがとうございます。複数の項目が反映されました。

ですが、管理人画面で内容を確認する際と、内容をメールで受け取る際、複数選択項目が改行なしに表示されます。
半角「,」などで区切る方法は見つけましたが、改行することは難しいでしょうか?

ミツ (2016/05/11 14:43)

URL : http://32877.xii.jp

こんにちは。

下記にまとめておきましたのでお試し下さい。

フォーム管理プラグインで複数の項目を改行で連結する方法
http://32877.xii.jp/index.php/view/300

井亜 (2016/05/12 15:20)

ミツさん、ご回答ありがとうございました。
無事にフォームで複数回答の送信と改行ができました。

コメントの方なのですが、ページのコメント登録を試したところ、送信されたコメントが「Array」になってしまい、コメントを送ることができませんでした。

ミツ (2016/05/12 16:33)

URL : http://32877.xii.jp

こんにちは。

ページでもコメントの本文をチェックボックスで複数選択可能にする場合は、[freo/libs/freo/internals/page/default.php]の78行目に

//コメントを配列で取得する場合の処理
if (isset($_POST['comment']['text'])) {
	if (isset($_POST['comment']['text'])) {
		if (is_array($_POST['comment']['text'])) {
			$_POST['comment']['text'] = implode("\n", $_POST['comment']['text']);
		}
	}
}

(以前お知らせしたソースと同じです)

を追加して下さい。

井亜 (2016/05/13 15:26)

お答えいただきありがとうございます。
ページのコメントで複数選択することができるようになりました!
ありがとうございました。

返信

  • この記事に返信します。
  • 返信の際は、設置URL以外の項目は入力必須です。
投稿フォーム
名前
設置URL
本文(本文の装飾について
編集キー(投稿した記事を編集する際に使用します。)
投稿キー(スパム対策に、投稿キー を半角で入力してください。)