- ベストアンサー
IF文の初歩的質問
フリーのショッピングカートに送料を足したいのですが、 合計額5,000円以上なら無料,そうでなければ500円と表示できません。perlはほとんど使っていないのでここでつまづいています。 if ($goukei2 > 5000 ) { print "無料\n"; } else { print "500円\n"; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
$zeibetsu_goukei2は3桁ごとにカンマで区切った 文字列です。 文字列は数値と比較する事はできません。 $zeibetsu_goukei2を$zeibetsu_goukeiとすれば、上手く行くと思いますよ。
その他の回答 (1)
- burn
- ベストアンサー率65% (25/38)
この構文については、問題ないと思いますよ。 この構文だけでは何とも言えませんが、$goukei2という変数は合計値に","カンマを入れたものではないですか? $goukei2を検索してみて、 $goukei2 = $goukei; 1 while $goukei2=~ s/(.*\d)(\d\d\d)/$1,$2/g; といった構文がないか確認してみて下さい。 もし、該当する場合は大元の$goukeiを使って、比較させて見て下さい。 それでも上手く行かない場合は、この構文自体を通っていない可能性があります。 Perlの場合、VBのような便利なツールがあまり無いため、 if ($goukei2 > 5000 ) { print "無料\n"; } else { print "500円\n"; } の前あたりに、例えば$test="pass";でも付けて、 HTMLで書き出してみて、"pass"と表示されたら、通過している、表示されなかったら通過していないと言う形で プログラムの通過状況をチェックしてみてください。 もし、通過していない場合は、その前の構文に問題があります。
補足
回答ありがとうございました。まだ解決していなくて、合計が10,000円以上でも送料が表示されてしまいます。 長いのですが、ソースを提示します。御助言いただけると助かります。 1 while $zeibetsu_goukei2 =~ s/(.*\d)(\d\d\d)/$1,$2/g; if ($taxrate != 0) {$tax = int($zeibetsu_goukei * ($taxrate / 100)); $sougoukei = $zeibetsu_goukei + $tax;1 while $sougoukei =~ s/(.*\d)(\d\d\d)/$1,$2/g; $zei = '税別'; } else { $zei = ''; } print "<tr><th bgcolor=\"azure\" colspan=4>$zei合計</th><th bgcolor=\"azure\">$zeibetsu_goukei2円</th><th></th></tr>\n"; if ($zeibetsu_goukei2 >= 5000 ) { print "<tr><th bgcolor=\"azure\" colspan=4>送料</th><th bgcolor=\"azure\">0円</th><th></th></tr>\n"; } else { print "<tr><th bgcolor=\"azure\" colspan=4>300円</th><th bgcolor=\"azure\">300円</th><th></th></tr>\n"; } if ($taxrate != 0) { print "<tr><th bgcolor=\"azure\" colspan=4>消費税$taxrate\%($tax円)込み総合計</th><th bgcolor=\"azure\">$sougoukei円</th><th></th></tr>\n"; } print "</table><p>\n";
お礼
お手数をおかけしました。文字列だったわけですね、どうりで何の反応もしなかったわけでした。CGIというだけでビビッってしまって、「解読」しようというエネルギーがわいて来ない現状です。ありがとうございました。これを機会に少し勉強させていただきます。