CGI-BBS > SO−HO > ショッピングバスケット > バスケットv6:特定商品合計により送料無料に


カレッヂ
カレッヂ


質問者 片山  投稿日 7/17(木) 16:00:58
 以前(2月3日)呑兵衛さんにご丁寧にお答えしていただいた同様の質問ですが、
その後、順調に行っていたのですが、最近になって狙い通りに作動していないケー
スがございましたので、あらためて質問する次第です。

狙い:特定商品が合計4000円以上なら送料無料に
解決策:特定商品"_gname"に判別文字「_S」をつけ、
 sub mado で
  $SHOKEI += $fee; # 累計
  $name =~ s/_S//g;
  #表示だけなので

  sub cfmで
  $SHOKEI += $fee; # 累計
  if ($name =~ /_S/) { $name =~ s/_S//g; $FEE_SPECIAL .= $fee; }
  #_S のついたものに限定するため ラベル=if が必要

  if ($in{'_area'} =~ /(.*):(\d+)$/) { $area = $1; $soryo = $2; }
  if ($FEE_SPECIAL >= 4000) { $soryo = 0; }

問題症状:
1)1000円の商品をまとめて3つ注文すると、送料有料のままだが、
  2回か3回に分けて注文すると、3000円なのに送料無料になってしまう
2)同様に、2000円未満の商品をそれぞれ注文すると、やはり4000円未満なのに
  送料無料になってしまう

どうやら複数回注文すれば、合計金額にかかわらず、送料無料になってしまうよ
うなんですが、どこかで二重に加算しているのでしょうか?
たまたまウチの商品が2000円前後のものが多く、大体4000円超えていて上記のような
症状があまり出ていなかったので、最近気付いた次第です。

ご多忙のおり、恐縮ですが、なにかヒントがいただけないかと思う次第です。
宜しくお願いします。

プロバイダ参照:
サーバのOS:不明
パソコンのOS:Mac9
エディタ:simpletext
FTPソフト:fetch
サーバ移転:していない
改造:している
CGI習熟度:middle

回答者 呑兵衛@大阪  [削除]  投稿日 7/20(日) 17:45:11
よくこんな大嘘を教えたもんです。大謝!
◆商品.html で
<input type=hidden name="_gname" value="商品名_S">
を
<input type=hidden name="_gname" value="S_商品名">
に変更
◆sub mado で
$name =~ s/_S//g;
を
$name =~ s/^S_//g;
に変更
◆sub cfm の
if ($name =~ /_S/) { $name =~ s/_S//g; $FEE_SPECIAL .= $fee; }
を
if ($name =~ /^S_/) { $name =~ s/^S_//g; $FEE_SPECIAL += $fee; }
に変更
原因は $FEE_SPECIAL .= $fee; にあり、加算ではなく単に文字列連結していたことによる
ものでした。
質問者 かたやま  [削除]  投稿日 7/22(火) 14:05:07
無事動いております。
こちらこそ、.= と += 基本的な所を見落としてしまいすみません。
ご教示のとおり、判別文字を文字頭につけてますが、文字末尾だとなにか
トラブルのでしょうか?

いろいろと有り難うございます。

返信(回答)する

 


Web裏技