|
このフォーラムに新しいトピックを立てることはできません
こんにちわ。
イベント案内のeguide_confirm.htmlにphpを記述して、 入力された値を計算しechoで計算結果を出せるようにしました。 (例:予約人数 x 料金 = 合計)
この計算結果を、確認メールの申込みデータ欄にも 反映されるようにしたいのですが、知識不足で どうすればいいのか検討がつきません。
eguide_confirm.htmlで、 <{php}><{/php}> 内で定義した変数($goukei)などの計算結果の値を イベント案内で入力したフォームの値として 他の入力値と同じようにhiddenで記述しようにも、 うまくいきません。
よろしければ、フォームの自動計算結果を 予約受付メールにも記載する方法を教えてください。
お手軽な方法だと、JavaScript で計算させて入力域にセットしてしまう方法でしょうか。 例えば、追加項目を次のような設定にするとか。 参加人数,select,1,2,3,4,5,6,7,8,9,prop=onchange="o=xoopsGetElementById('myprice'); o.value = this.value*o.defaultValue;",#人
料金,1000,size=6,prop=id="myprice" readonly,#円
ありがとうございます。 そんなことができるんですね。勉強になりました。
ただ、javascript利用では携帯では、無理ですよね?
集計のPHPは、確認画面のテンプレートに埋め込んで 計算と表示だけはさせれたんですけど、 どうにか他の項目データと一緒にデータとして送れないかと、 思案中です。
難しいですね^^;
テンプレートに PHP 書いてしまうなら、計算用の領域を普通のテキスト入力で定義しておき、確認画面に渡ってくるテンプレート変数を文字列置換で書き換えちゃえば良いんじゃないかな。 テンプレート変数をうまく使えば、smarty の組み込み機能だけでも扱えるかも。
安富様いろいろなヒントありがとうございます。
もうちょっと勉強しないと、せっかくヒントいただいても やっぱりいじれないようです(汗
>確認画面に渡ってくるテンプレート変数を文字列置換
ちょっと理解ができず。。。
となみにテンプレートのphp部分にsmarty変数を定義 してみようとしたのですが、画面が表示されなくなってだめなようです。
$goukei
みたいに定義したのをsmartyにしちゃって、それをHTMLのフォームに 入れてしまえばいいのかな?とか思ったのですけども。
頭の体操がてらやってみました。 追加項目を次のようにして 参加人数,select,1,2,3,4,5,6,7,8,9,#人
料金,1000,size=6,prop=readonly,#円/人
eguide_confirm.html のテンプレートで計算させてみました。 置換のための文字列生成がかなりトリッキーですが、smarty のみで実現できました。 @@ -26,9 +26,17 @@
<{if !empty($form_continue)}>
<{$fm.value}></td></tr>
<{assign var=form_continue value=0}>
<{else}>
- <tr class="<{cycle values="even,odd"}>"><td class="head"><{$fm.label}></td><td><{$fm.value}></td></tr>
+ <{assign var=val value=$fm.value}>
+ <{if $fm.label == "参加人数"}>
+ <{assign var=persons value=$val}>
+ <{elseif $fm.label == "料金"}>
+ <{assign var=pattern value=$smarty.foreach.item.iteration|regex_replace:"/^(\d+)$/":"/( name='opt\$1' value=)'\d+'/"}>
+ <{assign var=val value=$fm.value*$persons}>
+ <{assign var=price value=$val|regex_replace:"/^(\d+)$/":'\$1"$1"'}>
+ <{/if}>
+ <tr class="<{cycle values="even,odd"}>"><td class="head"><{$fm.label}></td><td><{$val}></td></tr>
<{/if}>
<{/if}>
<{/foreach}>
</table>
@@ -42,11 +50,11 @@
</table>
<{/if}>
<{if $cancel}>
<table align="center">
- <tr><td><{$submit}></td><td><{$cancel}></td></tr>
+ <tr><td><{$submit|regex_replace:$pattern:$price}></td><td><{$cancel}></td></tr>
</table>
<{else}>
<{$submit}>
<{/if}>
</div>
</div>
頭の体操がてらやってみました。 追加項目を次のようにして 参加人数,select,1,2,3,4,5,6,7,8,9,#人
料金,1000,size=6,prop=readonly,#円/人
eguide_confirm.html のテンプレートで計算させてみました。 置換のための文字列生成がかなりトリッキーですが、smarty のみで実現できました。 @@ -26,9 +26,17 @@
<{if !empty($form_continue)}>
<{$fm.value}></td></tr>
<{assign var=form_continue value=0}>
<{else}>
- <tr class="<{cycle values="even,odd"}>"><td class="head"><{$fm.label}></td><td><{$fm.value}></td></tr>
+ <{assign var=val value=$fm.value}>
+ <{if $fm.label == "参加人数"}>
+ <{assign var=persons value=$val}>
+ <{elseif $fm.label == "料金"}>
+ <{assign var=pattern value=$smarty.foreach.item.iteration|regex_replace:"/^(\d+)$/":"/( name='opt\$1' value=)'\d+'/"}>
+ <{assign var=val value=$fm.value*$persons}>
+ <{assign var=price value=$val|regex_replace:"/^(\d+)$/":'\$1"$1"'}>
+ <{/if}>
+ <tr class="<{cycle values="even,odd"}>"><td class="head"><{$fm.label}></td><td><{$val}></td></tr>
<{/if}>
<{/if}>
<{/foreach}>
</table>
@@ -42,11 +50,11 @@
</table>
<{/if}>
<{if $cancel}>
<table align="center">
- <tr><td><{$submit}></td><td><{$cancel}></td></tr>
+ <tr><td><{$submit|regex_replace:$pattern:$price}></td><td><{$cancel}></td></tr>
</table>
<{else}>
<{$submit}>
<{/if}>
</div>
</div>
-
イベント案内フォームの自動...
catm, 2011/9/1 3:25
-
Re:...
nobu, 2011/9/3 12:57
-
Re:...
catm, 2011/9/10 23:44
-
Re:...
nobu, 2011/9/11 16:04
-
Re:...
catm, 2011/9/21 0:28
-
Re:...
nobu, 2011/9/21 4:45
-
Re:...
nobu, 2011/9/21 4:47
|