KENT-WEB サポートコーナー 過去ログ [ 0336 ]


記事No: 12654
投稿日: 2014/01/31(Fri) 17:13:25
タイトルpostmailでのテキスト連結について
ID情報: marebi
投稿者: さあ
URLhttp://asmaltest.s501.xrea.com/postmail/

こんにちは。
Postmailの最新バージョン(Ver: 7.0)をダウンロードさせていただきました。使いやすいプログラムを配布いただき感謝いたします。

フォームで入力された生年月日(できれば住所も)を確認画面とメールでは連結させたいと思います。
生年月日は年、月、日も表示して
「2000年1月1日」となるように表示させたいです。

過去ログなどにもいくつか同様の質問があったのですが、
http://www.kent-web.com/support/oldlog/0004/0253.html
バージョンが違うため説明中の該当箇所が見当たらなかったり、リンク切れ等になっており、現バージョンでの解決法を自力で調べる事ができず…

大変お手数お掛けしますが、ご教示の程よろしくお願いいたします。


記事No: 12664
投稿日: 2014/02/02(Sun) 09:19:53
タイトルRe: postmailでのテキスト連結について
ID情報: s_sara
投稿者: 沙羅
URLhttp://sara.holy.jp/sample/postmail/postmail.html

もともと、このpostmailに関してはHTMLに項目を追加するだけで、自由に項目を増やせるものです。
ですので、postmail.htmlを以下のとおりに改造してください。

97行目、行目(上記追加後は214行目)、行目(上記追加後は465行目)
----------------------------------------
my ($date,$addr);
----------------------------------------

163行目
----------------------------------------
my $tmp = $loop;
if ($key eq "生年月日(年)") {
$date = $$in{$key}."年";
} elsif ($key eq "生年月日(月)") {
$date .= $$in{$key}."月";
} elsif ($key eq "生年月日(日)") {
$date .= $$in{$key}."日";
$tmp =~ s/!key!/生年月日/;
$tmp =~ s/!val!/$date/;
$item .= $tmp;
} elsif ($key eq "郵便番号") {
$addr = $$in{$key}."<br>";
} elsif ($key eq "住所1(都道府県)") {
$addr .= $$in{$key}."<br>";
} elsif ($key eq "住所2(市区町村郡、番地)") {
$addr .= $$in{$key}."<br>";
} elsif ($key eq "住所3(建物名、部屋番号)") {
$addr .= $$in{$key}."<br>";
$tmp =~ s/!key!/住所/;
$tmp =~ s/!val!/$addr/;
$item .= $tmp;
} else {
if (defined($cf{replace}->{$key})) {
$tmp =~ s/!key!/$cf{replace}->{$key}/;
} else {
$tmp =~ s/!key!/$key/;
}
$tmp =~ s/!val!/$$in{$key}/;
$item .= $tmp;
}
----------------------------------------

306行目(上記追加後は332行目)
----------------------------------------
# 本文内容
my $tmp;
if ($_ eq "生年月日(年)") {
$date = $$in{$_}."年";
} elsif ($_ eq "生年月日(月)") {
$date .= $$in{$_}."月";
} elsif ($_ eq "生年月日(日)") {
$date .= $$in{$_}."日";
$tmp = "生年月日 = $date\n";
$mbody .= $tmp;
} elsif ($_ eq "郵便番号") {
$addr = $$in{$_}."\n";
} elsif ($_ eq "住所1(都道府県)") {
$addr .= $$in{$_}."\n";
} elsif ($_ eq "住所2(市区町村郡、番地)") {
$addr .= $$in{$_}."\n";
} elsif ($_ eq "住所3(建物名、部屋番号)") {
$addr .= $$in{$_}."\n";
$tmp = "住所 = $addr\n";
$mbody .= $tmp;
} else {
if ($$in{$_} =~ /\n/) {
$tmp = "$key_name = \n$$in{$_}\n";
} else {
$tmp = "$key_name = $$in{$_}\n";
}
$mbody .= $tmp;
}
----------------------------------------

460行目(上記追加後は508行目)
----------------------------------------
my $tmp = $loop;

my $erflg;
foreach my $err (@err) {
if ($err eq $key) {
$erflg++;
last;
}
}

if ($key eq "生年月日(年)") {
$date = $$in{$key}."年";
} elsif ($key eq "生年月日(月)") {
$date .= $$in{$key}."月";
} elsif ($key eq "生年月日(日)") {
$date .= $$in{$key}."日";
$tmp =~ s/!key!/生年月日/;
$tmp =~ s/!val!/$date/;
print $tmp;
} elsif ($key eq "郵便番号") {
$addr = $$in{$key}."<br>";
} elsif ($key eq "住所1(都道府県)") {
# 入力なし
if ($erflg) {
$addr .= qq|<span class="msg">$key_nameは入力必須です.</span><br>|;
# 正常
} else {
$addr .= $$in{$key}."<br>";
}
$tmp =~ "住所 = $addr\n";
} elsif ($key eq "住所2(市区町村郡、番地)") {
# 入力なし
if ($erflg) {
$addr .= qq|<span class="msg">$key_nameは入力必須です.</span><br>|;
# 正常
} else {
$addr .= $$in{$key}."<br>";
}
$tmp =~ "住所 = $addr\n";
} elsif ($key eq "住所3(建物名、部屋番号)") {
$addr .= $$in{$key}."<br>";
$tmp =~ s/!key!/住所/;
$tmp =~ s/!val!/$addr/;
print $tmp;
} else {
$tmp =~ s/!key!/$key_name/;
# 入力なし
if ($erflg) {
$tmp =~ s/!val!/<span class="msg">$key_nameは入力必須です.<\/span>/;

# 正常
} else {
$$in{$key} =~ s/\t/<br \/>/g;
$tmp =~ s/!val!/$$in{$key}/;
}
print $tmp;
}
----------------------------------------

PS.
さあさんのホームを参考に項目名を追加していますので、
別の人が参考にするのなら項目名に合わせてください。


記事No: 12669
投稿日: 2014/02/03(Mon) 13:34:04
タイトルRe^2: postmailでのテキスト連結について
ID情報: marebi
投稿者: さあ
URLhttp://asmaltest.s501.xrea.com/postmail/

沙羅さま

ご丁寧にご指示いただきありがとうございました。
行番号を見ながら書かれている通りに直したつもりなのですが
エラーが起こってしまいます。
基本的なミスをしているのかもしれませんが、まったくわからないため、本当にお手数なのですが、こちらで合ってるか教えていただいても宜しいでしょうか。
念のため書き換えたデータの内容はこちらのURLにアップしています。
http://asmaltest.s501.xrea.com/postmail/postmail.html

↓ここからご確認です。
手順としましては下記の(1)〜(4)の順番で作業しました。
(1)163行目の差し替え(内容は下記です)
(2)306行目の差し替え(内容は下記です)
(3)460行目の差し替え(内容は下記です)
(4)「my ($date,$addr);」を3箇所追加(内容は下記です)

↓(4)97行目、214行目、465行目に以下の一行を追加
※「上記追加後」は「下記追加後」かと思い、そうしています。
> 97行目、行目(上記追加後は214行目)、行目(上記追加後は465行目)
> ----------------------------------------
> my ($date,$addr);
> ----------------------------------------

↓(1)163行目から173行目までと以下を差し替え
> 163行目
> ----------------------------------------
> my $tmp = $loop;
> if ($key eq "生年月日(年)") {
> $date = $$in{$key}."年";
> } elsif ($key eq "生年月日(月)") {
> $date .= $$in{$key}."月";
> } elsif ($key eq "生年月日(日)") {
> $date .= $$in{$key}."日";
> $tmp =~ s/!key!/生年月日/;
> $tmp =~ s/!val!/$date/;
> $item .= $tmp;
> } elsif ($key eq "郵便番号") {
> $addr = $$in{$key}."<br>";
> } elsif ($key eq "住所1(都道府県)") {
> $addr .= $$in{$key}."<br>";
> } elsif ($key eq "住所2(市区町村郡、番地)") {
> $addr .= $$in{$key}."<br>";
> } elsif ($key eq "住所3(建物名、部屋番号)") {
> $addr .= $$in{$key}."<br>";
> $tmp =~ s/!key!/住所/;
> $tmp =~ s/!val!/$addr/;
> $item .= $tmp;
> } else {
> if (defined($cf{replace}->{$key})) {
> $tmp =~ s/!key!/$cf{replace}->{$key}/;
> } else {
> $tmp =~ s/!key!/$key/;
> }
> $tmp =~ s/!val!/$$in{$key}/;
> $item .= $tmp;
> }
> ----------------------------------------

↓(2)306行目から316行目までと以下を差し替え
> 306行目(上記追加後は332行目)
> ----------------------------------------
> # 本文内容
> my $tmp;
> if ($_ eq "生年月日(年)") {
> $date = $$in{$_}."年";
> } elsif ($_ eq "生年月日(月)") {
> $date .= $$in{$_}."月";
> } elsif ($_ eq "生年月日(日)") {
> $date .= $$in{$_}."日";
> $tmp = "生年月日 = $date\n";
> $mbody .= $tmp;
> } elsif ($_ eq "郵便番号") {
> $addr = $$in{$_}."\n";
> } elsif ($_ eq "住所1(都道府県)") {
> $addr .= $$in{$_}."\n";
> } elsif ($_ eq "住所2(市区町村郡、番地)") {
> $addr .= $$in{$_}."\n";
> } elsif ($_ eq "住所3(建物名、部屋番号)") {
> $addr .= $$in{$_}."\n";
> $tmp = "住所 = $addr\n";
> $mbody .= $tmp;
> } else {
> if ($$in{$_} =~ /\n/) {
> $tmp = "$key_name = \n$$in{$_}\n";
> } else {
> $tmp = "$key_name = $$in{$_}\n";
> }
> $mbody .= $tmp;
> }
> ----------------------------------------

↓(3)460行目から482行目までと以下を差し替え
> 460行目(上記追加後は508行目)
> ----------------------------------------
> my $tmp = $loop;
>
> my $erflg;
> foreach my $err (@err) {
> if ($err eq $key) {
> $erflg++;
> last;
> }
> }
>
> if ($key eq "生年月日(年)") {
> $date = $$in{$key}."年";
> } elsif ($key eq "生年月日(月)") {
> $date .= $$in{$key}."月";
> } elsif ($key eq "生年月日(日)") {
> $date .= $$in{$key}."日";
> $tmp =~ s/!key!/生年月日/;
> $tmp =~ s/!val!/$date/;
> print $tmp;
> } elsif ($key eq "郵便番号") {
> $addr = $$in{$key}."<br>";
> } elsif ($key eq "住所1(都道府県)") {
> # 入力なし
> if ($erflg) {
> $addr .= qq|<span class="msg">$key_nameは入力必須です.</span><br>|;
> # 正常
> } else {
> $addr .= $$in{$key}."<br>";
> }
> $tmp =~ "住所 = $addr\n";
> } elsif ($key eq "住所2(市区町村郡、番地)") {
> # 入力なし
> if ($erflg) {
> $addr .= qq|<span class="msg">$key_nameは入力必須です.</span><br>|;
> # 正常
> } else {
> $addr .= $$in{$key}."<br>";
> }
> $tmp =~ "住所 = $addr\n";
> } elsif ($key eq "住所3(建物名、部屋番号)") {
> $addr .= $$in{$key}."<br>";
> $tmp =~ s/!key!/住所/;
> $tmp =~ s/!val!/$addr/;
> print $tmp;
> } else {
> $tmp =~ s/!key!/$key_name/;
> # 入力なし
> if ($erflg) {
> $tmp =~ s/!val!/<span class="msg">$key_nameは入力必須です.<\/span>/;
>
> # 正常
> } else {
> $$in{$key} =~ s/\t/<br \/>/g;
> $tmp =~ s/!val!/$$in{$key}/;
> }
> print $tmp;
> }
> ----------------------------------------
>
> PS.
> さあさんのホームを参考に項目名を追加していますので、
> 別の人が参考にするのなら項目名に合わせてください。


記事No: 12670
投稿日: 2014/02/03(Mon) 14:01:27
タイトルRe^3: postmailでのテキスト連結について
ID情報: marebi
投稿者: さあ
URLhttp://asmaltest.s501.xrea.com/postmail/

追記です。
(1)〜(3)の行番号は、追記/変更を加える前の大元のデータの行番号になります。


記事No: 12684
投稿日: 2014/02/06(Thu) 15:21:52
タイトルRe^4: postmailでのテキスト連結について
ID情報: marebi
投稿者: さあ
URLhttp://asmaltest.s501.xrea.com/postmail/

何度が試みたのですが、一度も成功しません…
本当にすみませんが、どなたがお教えいただけませんでしょうか。
よろしくお願いいたします。


記事No: 12686
投稿日: 2014/02/06(Thu) 21:34:17
タイトルRe^5: postmailでのテキスト連結について
ID情報: s_sara
投稿者: 沙羅
URLhttp://sara.holy.jp/sample/postmail/postmail.txt

ソースを確認しました。
いくつか、間違えて消してしまっている部分があるために、動作がしないようです。

http://sara.holy.jp/sample/postmail/postmail.txt

ソースをこちらにおいておきますので、これを使ってください。

拡張子txtをcgiに変えてサーバーにアップしてください。


記事No: 12688
投稿日: 2014/02/07(Fri) 10:03:18
タイトルRe^6: postmailでのテキスト連結について
ID情報: marebi
投稿者: さあ
URLhttp://asmaltest.s501.xrea.com/postmail/

沙羅さま

アップしていただいたものを使いましたら無事に動作いたしました。
本当に有り難うございます。
どこを間違えていたのかこれから検証いたします。
お手数お掛けして申し訳ございませんでした。
ご親切にご回答頂いたこと心から感謝いたします。
どうも有り難うございました。


[検索ページ] [掲示板]