KENT-WEBのClipMailでのチェックボックスについての質問

このQ&Aのポイント
  • KENT-WEBのClipMailでチェックボックスを使用してメールフォームを設置している際に、チェックボックスのvalue値が半角スペースで表示されることについて、改行表示にする方法について教えてください。
  • チェックボックスにチェックを複数入れ確認画面へ遷移・送信すると、チェックを入れた分のvalue値が、半角スペースを入れた横並び状態で羅列されます。しかし、見やすさを考慮して、value値ごとに改行されるように表示させたいと思っています。
  • KENT-WEBのClipMailでのチェックボックスの表示を改善する方法について教えてください。
回答を見る
  • ベストアンサー

KENT-WEBのClipMailでのチェックボックスについて質問です

KENT-WEBのClipMailでのチェックボックスについて質問です。 KENT-WEBで無料配布されているClipMailのVer1.1を使用してメールフォームを設置しているものです。チェックボックスについて教えてください。 チェックボックスにチェックを複数入れ確認画面へ遷移・送信すると、チェックを入れた分のvalue値が、半角スペースを入れた横並び状態で羅列されます。(以下イメージ) チェック項目 | イベントA イベントB イベントC しかし、これだと見づらいので、半角スペースではなく、value値ごとに改行されるように表示させたいと思っています(以下イメージ)        | イベントA チェック項目 | イベントB        | イベントC どこを、どういじればよいのでしょうか?

  • CGI
  • 回答数5
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.5

$hidden_key =~ s/\0/\|/g; ↑これは\0を\|に変更するという正規表現ですので$hidden_keyにしたところは縦棒になるはずです。 $in{$key} =~ s/\0/<br>/g; ↑これは\0を<br>に変更するという正規表現ですので$in{$key}にしたところは改行になるはずです。 縦棒にしたいのは登録&メール送信データですので、$hidden_keyに(メールの改行は<br>ではありません)、 ブラウザ上で改行したいのは、テンプレートに入るほうですので、テンプレートに入るほうを$in{$key}にします。 メールは<br>では改行になりませんので、$hidden_keyで縦棒にしたデータをいったん送り、 sendmail.plの145行目で↓を追加して縦棒を\n\tに変換しています。 $in{$_} =~ s/\|/\n\t/g; ※\nはテキストの改行コードで、\tはインデント用のタブです。 送信メールで<br>が送られるということはhiddenに$in{$key}を入れている場合ですので、 修正部分の記述ミスか古いデータを上書きしないで使っている可能性があります。 FTP上のファイルをもう一度確認してみましょう。 (1)sendmail.plの145行目前後が、 # 本文内容 my $tmp; if ($in{$_} =~ /\n/) { $tmp = "$_ = \n$in{$_}\n"; } elsif($in{$_} =~ /\|/) { $in{$_} =~ s/\|/\n\t/g; $tmp = "$_ = $in{$_}\n"; } else { $tmp = "$_ = $in{$_}\n"; } になっているかどうか。 (2)preview.plの111行目前後が、 $hidden_key = $in{$key}; $hidden_key =~ s/\0/\|/g; $in{$key} =~ s/\0/<br>/g; $hidden .= qq|<input type="hidden" name="$key" value="$hidden_key" />\n|; になっているかどうか。 一見まったく同じように見えても、実は微妙に違っていたということは、 スクリプトに慣れていても、よくありますので、 エディターソフトの検索機能で検索して、 まったく同じかどうかを再確認してみるのも一つの手です。 スクリプトに慣れるまでは気長に触っていくしかないですが、 くじけずがんばってみましょう。

mausan
質問者

お礼

なるほど、なるほど~。 kuzumiHKさん、わかりやすいご説明ありがとうございます。 ようやく念願叶いました~!!確認画面でも受信メールでも希望通りに改行されてました! 本当に何度も何度もありがとうございました! このあと教えてもらった事を復習したいと思います。 くじけずに頑張ってみますね♪本当にどうもありがとうございました! また、よろしくお願いします。

その他の回答 (4)

  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.4

おそらく、<br>のままになる理由は、preview.plの $hidden .= qq|<input type="hidden" name="$key" value="$in{$key}" />\n|; 部分が、 $hidden .= qq|<input type="hidden" name="$key" value="$hidden_key" />\n|;  に変更されていないからだと思います。 最初の投稿でこの部分の変更をつけ忘れていたからかもしれません。。 $in{$key}は、\0を<br>に変更していますから、こちらを使えば<br>になります。 $hidden_keyは\0を\|に変更していますから、縦棒になるはずです。

mausan
質問者

お礼

どうもありがとうございました!縦棒「|」区切りで表示することができました。 何度もお答えいただいて恐縮です。 >$in{$key}は、\0を<br>に変更していますから、こちらを使えば<br>になります。 >$hidden_keyは\0を\|に変更していますから、縦棒になるはずです。 これはどういう意味でしょうか?value="$in{$key}"を使えば改行表示で、value="$hidden_key"を使うと縦棒区切り表示という意味なのでしょうか? value="$in{$key}"を使えば、たしかに縦棒区切り表示になるのですが、value="$hidden_key"を使うと、「改行」ではなく「<br>」(←ローマ字としての<br>表示という意味)となってしまうのですが・・・ できれば、受信メールのほうも、確認画面と同様改行されるようにしたいと思っています。

  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.3

送信メールに<br>が反映されてしまうのを直すには、 preview.plを下記のように修正する必要があります。 $in{$key} =~ s/\0/ /g; $hidden .= qq|<input type="hidden" name="$key" value="$in{$key}" />\n|; ↓ $hidden_key = $in{$key}; $hidden_key =~ s/\0/\|/g; $in{$key} =~ s/\0/<br>/g; $hidden .= qq|<input type="hidden" name="$key" value="$hidden_key" />\n|; また、送信メールの結果も改行したい場合ですが、 sendmail.plの145行目を # 本文内容 my $tmp; if ($in{$_} =~ /\n/) { $tmp = "$_ = \n$in{$_}\n"; } else { $tmp = "$_ = $in{$_}\n"; } ↓ # 本文内容 my $tmp; if ($in{$_} =~ /\n/) { $tmp = "$_ = \n$in{$_}\n"; } elsif($in{$_} =~ /\|/) { $in{$_} =~ s/\|/\n\t/g; $tmp = "$_ = $in{$_}\n"; } else { $tmp = "$_ = $in{$_}\n"; } とすれば、希望の状態に近くなると思います。 チェックボックスの登録データを半角スペースで登録してしまうと、 メッセージなどと区別がつかなくなってしまうため「|」縦棒で区切る形で保存されるように変更しました。 そのことで別の表示画面に影響が出る可能性もあります。 細かいカスタマイズについては、他への影響がいろいろと出てきますので、 スクリプトの内容をある程度は把握する必要が出てくると思います。 その辺は自己責任のうえで変更していただくしかないと思っています。

mausan
質問者

お礼

お返事が遅くなり申し訳有りません。 該当する箇所を修正しましたが、表示に反映されません・・・ ちなみに「|」縦棒で区切る形にもなりません。 以前と同じ、確認画面では思う通りの改行表示になっているんですが、受信メールにはやはり「<br>」が表示されます。 スクリプトの内容もわからず、何度もお手間をおかけして申し訳ありません。

  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.2

>$in{$key} =~ s/\t/<br>/g; たしかにこの部分も記述が似てますね。。 では、$in{$key} =~ s/\t/の部分は修正前に戻していただき、 再度、「$in{$key} =~ s/\0/」で検索してみてください。 微妙に違う\0になっている部分があると思います。 その部分を修正してみてください。

mausan
質問者

お礼

回答ありがとうございます。最初のデータから再び修正を行いました。 1.errcheck.plの71行目 $in{$key} =~ s/\0/ /g; の部分を以下の様に変更 $in{$key} =~ s/\0/<br>/g;//変更 2.preview.plの112行目 $in{$key} =~ s/\0/ /g; の部分を以下のように追加・変更 $hidden_key = $in{$key};//追加 $hidden_key =~ s/\0/ /g;//追加 $in{$key} =~ s/\0/<br>/g;//追加 しかし、やはり改行されません。プラス送信を行うと「二重送信のため処理を中止しました」 というエラーがでてしまいます。 私の修正している場所が違っているのでしょうか・・・

mausan
質問者

補足

お礼を書いた後に分かりました。 すみません!二重送信は私のミスでした。 私が何度も送信作業をしていたために起こった通常のエラーメッセージでした!!! しばらく時間をおいてやったら、キチンとできました!!!確認画面で思う通りに改行されていました~。kuzumiHKさん、ありがとうございます! ・・・しかし、また違う問題が・・・ 送信ボタンでデータを送信すると、管理人とユーザー双方に申し込み内容のメールがいくようになっているのですが、その表示に問題が。 参加希望 = イベント1<br>イベント2<br>イベント3<br>イベント4 となってしまいます。 メール文でも管理画面と同様改行させて表示させるにはどうしたらいいのでしょうか?? $messageの部分をどうにかするんだと思うのですが・・・ あと少しお力をお貸し下さい!!!

  • kuzumiHK
  • ベストアンサー率72% (132/183)
回答No.1

preview.pl(確認画面用)とerrcheck.pl(エラー確認画面用)に該当の記述(正規表現)があります。 preview.plのほうはhiddenにも同じ値を使っているようですので、新たに変数を作る必要がありそうです。 ▼preview.pl $hidden_key = $in{$key}; // 追加 $hidden_key =~ s/\0/ /g; // 追加 $in{$key} =~ s/\0/<br>/g; // 変更 $hidden .= qq|<input type="hidden" name="$key" value="$hidden_key" />\n|; // 変更 ▼errcheck.pl $in{$key} =~ s/\0/<br>/g; // 変更 ※動作確認はしていませんので、ご了承ください。

mausan
質問者

お礼

早速のご回答ありがとうございます。 教えていただいた箇所を以下のように変更・追加してみました。(変更箇所があってるか、ハッキリ分かりませんが、ご指摘いただいた箇所を推測) 1.previe.plの115行目あたり # 改行変換 $in{$key} =~ s/\t/<br>/g; の箇所を以下のように追加・変更 # 改行変換 $hidden_key = $in{$key}; // 追加 $hidden_key =~ s/\0/ /g; // 追加 $in{$key} =~ s/\0/<br>/g;// 変更 2.errcheck.plの67行目あたり # テキスト(添付以外) } else { $in{$key} =~ s/\t/<br>/g; の箇所を以下のように変更 # テキスト(添付以外) } else { $in{$key} =~ s/\0/<br>/g; // 変更 以上のように変更・追加してみましたが、確認画面ではValue値は改行されていないようです。プラス、送信ボタンを押すと「メールアドレスの書式が不正です」エラーになってしまします。変更箇所が間違っているのでしょうか??? 知識不足で申し訳有りませんが、もう少し詳しくご教授いただけますか??

関連するQ&A

  • KENT-WEBのClipMailでのチェックボックス機能について質問

    KENT-WEBのClipMailでのチェックボックス機能について質問です。 KENT-WEBで無料配布されているClipMailのVer1.1を使用してメールフォームを設置しているものです。チェックボックスについて教えてください。 同じ項目のなかで、いくつかの選択肢+チェックボックスをおき、当てはまるものにチェックしてもらうようにしています。この選択肢は最低1つチェックを入れないといけないものなので、何もチェックされない場合には「最低1つチェックをいれてください」のようなエラー表示をだしたいと思っています。 既にある機能として必須入力チェックを使い、名前欄や住所欄が空白のときはエラーメッセージが表示されるようになってはいるのですが、チェックボックスでどこかのチェックボックスにチェックが入ってないとエラーがでるようにする、という場合には対応できません。 チェックボックス項目で、最低1つはチェックが入らないといけないようにするためには、どうしたらいいのでしょうか??

    • ベストアンサー
    • CGI
  • サブフォームにチェックボックス・・・・

    accessにて・・・ サブフォームに表示させるレコードと連結したチェックボックスは付けられますか? たとえば・・・ (B→チェックボックスです) (サブフォームイメージ) |項目A |項目B |項目C |項目D B |Aデータ|Bデータ|Cデータ|Dデータ B |Aデータ|Bデータ|Cデータ|Dデータ みたいな感じで、レコードセレクタ代りにチェックボックスを付ける感じで・・・ やってみたんですが、すべてにチェックが入ってしまいます・・・やはり無理なのでしょうか?教えてください

  • チェックボックスでのvalue値のスペースについて

    HTMLのformからチェックボックスで選択された値をCGIに飛ばしデータファイル(cgiファイル)に保存したいのですが、 チェックボックスのvalueを複数選択するとvalue値の間にスペースが入ってしまいます。 正確にはデータファイルをterapadで開こうとすると、 「NULL文字を含むファイルです。NULL文字は半角スペースへ変換しました。」というアラートがでてvalue値の間に半角スペースが入ってしまいます。 <チェックボックスのHTML> <input type="checkbox" name="■" value="jpn" />日本 <input type="checkbox" name="■" value="usa" />米国 ■にはデータを保存する項目の番号が入っており、一つのチェックボックスでは同じ番号が入ります。 例えば■が1なら1番に保存されます。 日本と米国を選択し送信するとデータファイル上では「jpn usa」となってしまいます。 NULL文字とはデータの値がない場合に返される値だという認識なのですが、全てのチェックボックスを選択していれば、 「jpnusa」という形で送信されるものではないのでしょうか? データを送信する際、このNULL文字による半角スペースをなくしたいのですが、何か方法はありますでしょうか? やはりCGIファイルを編集しなければ不可能なのでしょうか? ご教授よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGI チェックボックス

    CGI チェックボックス kentさんのmsgenq v1.81でチェックボックスを使いたいと思っています。 プルダウン(初期)からチェックボックスに変更するため 以下の変更を行いました。 このQ&Aを参考に http://www.kent-web.com/support/old/61/0412.html 変更前スクリプト http://myangus.net/1.txt 変更後スクリプト http://myangus.net/2.txt 変更後ですが チェックボックスを表示することができましたが Q&Aと同じ状況(複数にチェックをした場合、先頭のチェック項目のみが結果に反映し、先頭以降のチェックは無視される状況)です。 Q&A通り修正したいのですが バージョンが異なることと自身の知識不足のため どこを修正すればよいのかわかりません。 kentさんのQ&Aにて質問させていただきましたが よい回答が得られなかったため こちらで質問させていただきました。 Q&Aの回答では、この辺りを修正しているようですが どうなのでしょうか・・・ http://myangus.net/3.txt どなたか教えていただけないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • JavaScriptにて、2つのチェックボックスのチェックができません

    お世話になっております。 お分かりになる方いらっしゃいましたら、ご教授願えますでしょうか? 現在採用に関する応募フォームを作成しています。 JavaScriptにてフォーム内のチェックボックスに チェックが入っているか、必須チェックをさせたいと思っています。 テキストボックスやコンボボックスなど、いくつか必須チェックがある中で、 チェックボックスの項目についての必須チェックがうまくいきません。 チェック完了後、cgiにてメールを送信するようにしているのですが、 チェックがされず、メールを送信してしまいます。 ローカルで行ってみたのですが、チェックをスルーして、 cgiに遷移してしまいます。 フォームイメージは以下の感じです。 <応募フォーム> --------------------------- 希望勤務地:□本社 □大阪 --------------------------- 2つのチェックボックスどちらにもチェックが入っていない場合は、 エラーメッセージを出し、処理を中止します。 どちらのチェックボックスにもチェックが入っていても、 エラーは出さずにcgiへ遷移します。 以下は現在のコードの内容です。 <HTMLコード> <form method="POST" action="send.cgi" name="応募フォーム" onSubmit="return check()"> <input type="checkbox" name="希望勤務地" value="本社" checked>本社 <input type="checkbox" name="希望勤務地" value="大阪">大阪 <input type="submit" value=" 送信 "> <input type="reset" value=" 取消 "> <Scriptコード> function check(){ if(!document.応募フォーム.希望勤務地.value.checked){ flag = 1; window.alert('必須項目[希望勤務地]にチェックがされていません'); } } 色々試してみたのですが、うまくいきませんでした。 チェックボックスのnameを同じ名前にしているのが原因でしょうか? お手数ですが、宜しくお願いいたします。

  • チェックボックス以外の文字を抽出

    入力用フォームAに複数のチェックボックスとひとつのテキストボックスを配置し、 チェックの入っている項目とテキストボックスに入力した文字を 表示用フォームBの「フィールド1」にまとめて表示させています。 以下のようなイメージです。 <入力用フォームA> ■A □B ■C 【あいうえお】 <表示用フォームB> フィールド1【A C あいうえお】 表示用フォームBのフィールド1から、 テキストボックスで入力させた文字だけ(”あいうえお”) 抽出するにはどうしたらいいでしょうか? 入力用フォームAのチェックボックスとテキストボックスを それぞれ別のフィールドにして、 表示用フォームBで&でつなげて表示させるような構造だったら簡単なのでしょうが チェックボックスもテキストボックスも ひとつのフィールドにまとめてしまっているので どうしたらいいか分かりません。 ご教授よろしくお願いいたします!

  • 複数のチェックボックス項目があり、そのチェック状態によって

    複数のチェックボックス項目があり、そのチェック状態によって 処理を分岐したいのですが、スマートなjavascriptの書き方が あれば教えてください! 【例】 <input type="checkbox" name="koumokuA" value="A1" /> <input type="checkbox" name="koumokuA" value="A2" /> <input type="checkbox" name="koumokuA" value="A3" /> <input type="checkbox" name="koumokuA" value="A4" /> <input type="checkbox" name="koumokuA" value="A5" /> <input type="checkbox" name="koumokuB" value="B1" /> <input type="checkbox" name="koumokuB" value="B2" /> <input type="checkbox" name="koumokuB" value="B3" /> <input type="checkbox" name="koumokuB" value="B4" /> <input type="checkbox" name="koumokuC" value="C1" /> <input type="checkbox" name="koumokuC" value="C2" /> <input type="checkbox" name="koumokuC" value="C3" /> <input type="checkbox" name="koumokuC" value="C4" /> もし【koumokuA】のA2とA3、【koumokuB】のB1とB4が選択された場合 同項目ではor条件、他項目ではand条件で処理したいので 考え方としては、 if(koumokuA=="A2" || koumokuA=="A3"){ if(koumokuB=="B1" || koumokuB=="B4"){ 実行内容 } } こんな感じなのですが、 実際にはチェックボックスの値は配列になるのでこのスクリプトでは動かない点と 効率よく複数のチェックボックスの選択結果を判定して、スクリプトを実行する 組み方があればご教授ください。 実行結果は、データが格納された配列の中から、選択項目に対応したデータを 表示するようにしたいのです。 よろしくお願いします。

  • XREAにKENT WEB[DreamCounter]の設置

    XREAにKENT WEB様のDream Counterの設置をしようと試みたのですが、画像の連結が正しくできず、困っています。 現在パーミッションは、XREAに合わせています。KENT WEB様の設定にも合わせましたが、共に同じ上記の結果になりました。 チェックモードでは、すべての項目(画像連結テストを抜かし)がOKでした。考えられる原因を教えていただけたらありがたいです。 どうぞよろしくお願いします。 P.Sプログラム本体には全く手を触れていません。管理用パスワード等の必要な項目のみで、'や"等は一切消していないことも確認しました。

    • 締切済み
    • CGI
  • Clipmail3.0 確認画面の非表示に関して

    KentWebさんのClipmail ver3.0を使用してwebformを作りたいと思っています。 http://www.kent-web.com/mail/clipmail.html ≪質問≫ 確認画面を出さずにフォーム 内容を送信することは可能でしょうか?デフォルトでは確認画面が必ず出ます。 ≪理由≫ form各項目の送信value値を数字にしてcsvファイルで出力したいのですが、質問項目数が増えると確認画面で数字で埋め尽くされてしまうのでこれを防ぎたいのです(数字を見せたくない)。 例: 質問1(name=Q1) = 満足(value=3) ⇒ Q1 = 3 http://q.hatena.ne.jp/1328250297 上記のリンクに似た質問があったので試してみましたが上記clipmailよりもversionが新しいためか、 上記リンクのcgi部分と送信ボタンのnameを変えて、送信ボタンを押すと「不正なアクセス」とエラーが表示されます。 フォーム記入後の送信ボタン(1)(<form action="clipmail.cgi method="post"">)と確認ページで表示される送信ボタン(2)(<form action="!mail_cgi!" method="post">)に違いがあるので送信ボタン(1)で(2)のアクションを呼び込めば良いのだと思いますが、どこを触ればいいのかが思考錯誤してもまだわかりません。 確認画面は入力ミス等を防ぐ重要なステップと認識していますが、form記入値を確認画面なしでダイレクトに送れないものか(もしくは確認画面で表示されるvalue値とcsv出力されるvalue値を変えることはできないのかどうか)と思い質問させていただいております。 私のcgi等に対する知識はど素人レベルです(webpageの知識としてはhtml/cssだけが少しわかる程度です。)どなたかわかる方がいらしたら、どこを変更すれば良いのかを教えて頂けると助かります。よろしくお願い致します。 P.S. Kentwebさんのサポートページで質問をしようとしたのですが問題のあるページのアドレスhttp://を入力しないと質問できませんでした。動作や不具合に関する質問ではなかったのでこちらで質問させてもらっています。

    • ベストアンサー
    • Perl
  • チェックに応じて違うチェックボックスをアクティブにしたい

    次のHTMLのように、大分類、小分類のような構成のチェックボックス グループがあります(初期設定は全部チェック無しです) 普段は[a][b][c][d]をdisableとしておき、(1) にチェックが入った 場合に[d]以外([a][b][c])アクティブ(?とにかくチェックを入れる ことができる)ようにするにはどうしたらいいでしょうか。 よろしくお願い致します。 <form id="Form1"> : <INPUT TYPE="CHECKBOX" NAME="food" value="果物">(1) 果物 <INPUT TYPE="CHECKBOX" NAME="food" value="野菜">(2) 野菜 <INPUT TYPE="CHECKBOX" NAME="food" value="肉魚">(3) 肉魚 <br> <INPUT TYPE="CHECKBOX" NAME="fruit" value="りんご">[a] りんご <INPUT TYPE="CHECKBOX" NAME="fruit" value="みかん">[b] みかん <INPUT TYPE="CHECKBOX" NAME="fruit" value="ぶどう">[c] ぶどう <INPUT TYPE="CHECKBOX" NAME="fruit" value="バナナ">[d] バナナ : </form>

専門家に質問してみよう