KENT-WEBのClipMailでのチェックボックスについて質問です。
KENT-WEBで無料配布されているClipMailのVer1.1を使用してメールフォームを設置しているものです。チェックボックスについて教えてください。
チェックボックスにチェックを複数入れ確認画面へ遷移・送信すると、チェックを入れた分のvalue値が、半角スペースを入れた横並び状態で羅列されます。(以下イメージ)
チェック項目 | イベントA イベントB イベントC
しかし、これだと見づらいので、半角スペースではなく、value値ごとに改行されるように表示させたいと思っています(以下イメージ)
| イベントA
チェック項目 | イベントB
| イベントC
どこを、どういじればよいのでしょうか?
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|;
になっているかどうか。
一見まったく同じように見えても、実は微妙に違っていたということは、
スクリプトに慣れていても、よくありますので、
エディターソフトの検索機能で検索して、
まったく同じかどうかを再確認してみるのも一つの手です。
スクリプトに慣れるまでは気長に触っていくしかないですが、
くじけずがんばってみましょう。
なるほど、なるほど~。
kuzumiHKさん、わかりやすいご説明ありがとうございます。
ようやく念願叶いました~!!確認画面でも受信メールでも希望通りに改行されてました!
本当に何度も何度もありがとうございました!
このあと教えてもらった事を復習したいと思います。
くじけずに頑張ってみますね♪本当にどうもありがとうございました!
また、よろしくお願いします。
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を\|に変更していますから、縦棒になるはずです。
どうもありがとうございました!縦棒「|」区切りで表示することができました。
何度もお答えいただいて恐縮です。
>$in{$key}は、\0を<br>に変更していますから、こちらを使えば<br>になります。
>$hidden_keyは\0を\|に変更していますから、縦棒になるはずです。
これはどういう意味でしょうか?value="$in{$key}"を使えば改行表示で、value="$hidden_key"を使うと縦棒区切り表示という意味なのでしょうか?
value="$in{$key}"を使えば、たしかに縦棒区切り表示になるのですが、value="$hidden_key"を使うと、「改行」ではなく「<br>」(←ローマ字としての<br>表示という意味)となってしまうのですが・・・
できれば、受信メールのほうも、確認画面と同様改行されるようにしたいと思っています。
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";
}
とすれば、希望の状態に近くなると思います。
チェックボックスの登録データを半角スペースで登録してしまうと、
メッセージなどと区別がつかなくなってしまうため「|」縦棒で区切る形で保存されるように変更しました。
そのことで別の表示画面に影響が出る可能性もあります。
細かいカスタマイズについては、他への影響がいろいろと出てきますので、
スクリプトの内容をある程度は把握する必要が出てくると思います。
その辺は自己責任のうえで変更していただくしかないと思っています。
お返事が遅くなり申し訳有りません。
該当する箇所を修正しましたが、表示に反映されません・・・
ちなみに「|」縦棒で区切る形にもなりません。
以前と同じ、確認画面では思う通りの改行表示になっているんですが、受信メールにはやはり「<br>」が表示されます。
スクリプトの内容もわからず、何度もお手間をおかけして申し訳ありません。
No.2
- 回答日時:
>$in{$key} =~ s/\t/<br>/g;
たしかにこの部分も記述が似てますね。。
では、$in{$key} =~ s/\t/の部分は修正前に戻していただき、
再度、「$in{$key} =~ s/\0/」で検索してみてください。
微妙に違う\0になっている部分があると思います。
その部分を修正してみてください。
この回答への補足
お礼を書いた後に分かりました。
すみません!二重送信は私のミスでした。
私が何度も送信作業をしていたために起こった通常のエラーメッセージでした!!!
しばらく時間をおいてやったら、キチンとできました!!!確認画面で思う通りに改行されていました~。kuzumiHKさん、ありがとうございます!
・・・しかし、また違う問題が・・・
送信ボタンでデータを送信すると、管理人とユーザー双方に申し込み内容のメールがいくようになっているのですが、その表示に問題が。
参加希望 = イベント1<br>イベント2<br>イベント3<br>イベント4
となってしまいます。
メール文でも管理画面と同様改行させて表示させるにはどうしたらいいのでしょうか??
$messageの部分をどうにかするんだと思うのですが・・・
あと少しお力をお貸し下さい!!!
回答ありがとうございます。最初のデータから再び修正を行いました。
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;//追加
しかし、やはり改行されません。プラス送信を行うと「二重送信のため処理を中止しました」 というエラーがでてしまいます。
私の修正している場所が違っているのでしょうか・・・
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; // 変更
※動作確認はしていませんので、ご了承ください。
早速のご回答ありがとうございます。
教えていただいた箇所を以下のように変更・追加してみました。(変更箇所があってるか、ハッキリ分かりませんが、ご指摘いただいた箇所を推測)
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) スプレッドシートのチェックボックスとフィルタを連携させたい 2 2022/09/26 18:02
- Visual Basic(VBA) エクセルでフォームのチェックボックスを使用した日付表示切替を作りたい 3 2023/07/11 10:47
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- JavaScript 助けてください!スパムメールがとんでもなく大量に届きます。 3 2023/08/10 16:32
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) VBA チェックボックスで 5 2023/05/31 17:10
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Access(アクセス) アクセスで、androidのスマホサイズのフォームは作れますか?テキストとチェックボックスだけのフォ 1 2023/05/31 00:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Rstudioによるテキストマイニン...
-
MACの改行コード変更について教...
-
改行コードがそのまま表示され...
-
if文中で@***(配列変数)って...
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
ビットスワップとバイトスワッ...
-
stable diffusionのエラー
-
UTF-8で5~6バイトになる文字コ...
-
int型(2バイト)データの分割
-
Excel 1セル当りの文字数が2...
-
【Excel VBA】10進数を2進数に...
-
C#でのswitch文
-
utf-8でメールを送信すると件名...
-
char str[256]の256の意味は?
-
サブドメインでのクッキー認証
-
応募フォームなどの住所欄で最...
-
ピクセル,dpiから容量(バイト...
-
クッキーのデータ取得
-
バイナリデータからの値の取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA メール作成について ...
-
CGIを勉強しています。¥n(改...
-
改行コードがそのまま表示され...
-
Line Inputにて改行があっても...
-
Rstudioによるテキストマイニン...
-
Excelで、HTMLタグだけを削除す...
-
エクセルで「改行コード」を「...
-
MACの改行コード変更について教...
-
【HELP!!】Excelから保存したtx...
-
perlで、[ \\r\\n , \\n ]の意...
-
ホームページビルダーで行間を...
-
連想するもの教えてください
-
alertの警告文を2行にしたい
-
全文表示…の仕方。
-
テキストボックスに入力された...
-
メモ帳での改行
-
PHP <br /> <br> 結局どっち?
-
brタグについて質問です。
-
KENT-WEBのClipMailでのチェッ...
-
if文中で@***(配列変数)って...
おすすめ情報