バージョン選択

フォーラム

メニュー

オンライン状況

65 人のユーザが現在オンラインです。 (56 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 65
もっと...

サイト内検索

質問 > フロント機能 > 商品コードで送料を操作するには?

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
popo
投稿日時: 2009/8/17 20:11
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 商品コードで送料を操作するには?
ご回答ありがとうございます。

引用:

for($i = 0; $i <= $total_quantity; $i++)
{
if($objPage->arrProductsClass[$i]['product_code'] == "ab" or $objPage->arrProductsClass[$i]['product_code'] == "cd"
){
$cdcount += 1;
}
}
if($cdcount > 0)
{
$cdfee = 1000;
}else{
$cdfee= 0;
}


教えて頂いた方法だと、商品コード「ab」もしくは「cd」が1つ以上があれば送料に1000円をプラスすると言った感じですよね。
カートの中に、商品コード「ab」が1つあれば1000円プラス。「cd」があれば1000円プラス。
「ab」と「cd」の両方が含まれていれば、2000円プラスになります。

簡単に言えば、カートに入っている商品の中の商品コードの種類の数だけ、1000円をプラスしていくことになります。
1種類であれば、1000円。2種類であれば2000円。5種類であれば5000円を送料にプラスする事になります。

アドバイスをお願い致します。
ecbg
投稿日時: 2009/8/17 19:28
対応状況: −−−
仙人
登録日: 2009/2/25
居住地: 東京
投稿: 387
Re: 商品コードで送料を操作するには?
条件によって行うことが同じなら、まとめることができるかと。


for($i = 0; $i <= $total_quantity; $i++)
{
if($objPage->arrProductsClass[$i]['product_code'] == "ab" or $objPage->arrProductsClass[$i]['product_code'] == "cd"
){
$cdcount += 1;
}
}
if($cdcount > 0)
{
$cdfee = 1000;
}else{
$cdfee= 0;
}
popo
投稿日時: 2009/8/17 18:55
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 商品コードで送料を操作するには?
ご回答ありがとうございます。

悪戦苦闘した結果、何とかできたような気がします(^-^;
小学生6年生が中学3年生の数学の問題を解いたような感じです。
公式も分からないレベルだと、ちょっとした応用問題を解くのも一苦労と言う感じですね(苦笑)

私がやってみた方法についてですが、アドバイスを頂いたようにfor文を使ってみました。
商品コードの数だけ、このfor文とif分を書き加えて行かなければならないのですが、もっとスマートな記述方法はあるでしょうか?
一応答えがでたので、後はもっとスマートな解き方があれば、ご教授頂けると助かります。
引用:

for($i = 0; $i <= $total_quantity; $i++)
{
if($objPage->arrProductsClass[$i]['product_code'] == "ab"){
$abcount += 1;
}
}
if($abcount > 0)
{
$abfee = 1000;
}else{
$abfee= 0;
}

for($i = 0; $i <= $total_quantity; $i++)
{
if($objPage->arrProductsClass[$i]['product_code'] == "cd"){
$cdcount += 1;
}
}
if($cdcount > 0)
{
$cdfee = 1000;
}else{
$cdfee= 0;
}

$arrData['deliv_fee'] += $abfee;
$arrData['deliv_fee'] += $cdfee;

seasoft
投稿日時: 2009/8/17 16:54
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 商品コードで送料を操作するには?
他で同様の変数を処理している所を参考にすると良いと思います。

たしか for 文を使っていたと思います。
(個人的には foreach を使うほうがスマートな気はしますが、まずは既存の真似をするのが確実だと思います。)


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

popo
投稿日時: 2009/8/17 16:44
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 商品コードで送料を操作するには?
ご回答ありがとうございます。

下記の通りにしたら、1つ目の商品を判別して送料を追加する事ができるようになりました。
一歩前進しました(^-^)

if($objPage->arrProductsClass[0]['product_code'] == "ab") {
$arrData['deliv_fee']+= 1000;
} else {
$arrData['deliv_fee']+= 0;
}

次に、カートの中に入っている商品の中から、商品コードが「ab」の商品がいくつあるのかカウントしなければなりません。
「count()」と言う関数があるみたいですが、何だかこれだけではダメなようで、その他のカウント方法が必要な気がします。

カートの中に複数入っている商品の中で、商品コード「ab」が1つ以上あれば送料に1000円を追加。
同じく「cd」が1つ以上あれば1000円追加。などのように、商品コードの種類の数だけカウントして爽涼に追加したいと思っています。

「arrProductsClass[0]['product_code'] == "ab"」の中の[0]を[1],[2],[3]などと1つ1つ数を増やして書いていくのも、またスマートではなく複雑になってしないますので、何か良いアイディアはないでしょうか。

御教授をお願い一足します。
toshi-t
投稿日時: 2009/8/17 0:45
対応状況: −−−
新米
登録日: 2009/8/6
居住地:
投稿: 6
Re: 商品コードで送料を操作するには?
sfTotalConfirm内なら、
$objPage->arrProductsClass[0]['product_code']で商品コード
$objPage->arrProductsClass[0]['quantity']で数量が取得できます。[0]の部分は、1つ目の商品ということです。
複数ある時は、$objPage->arrProductsClass[1](2つ目の商品),$objPage->arrProductsClass[2](3つ目の商品)となります。
seasoft
投稿日時: 2009/8/17 0:19
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 商品コードで送料を操作するには?
perl ですと「eq」だったと思います。

当該箇所(スコープ)において、変数がどのような内容を保持しているかを調査するには、var_dump 関数が有効です。
http://www.php.net/manual/ja/function.var-dump.php

もしも、当該箇所で必要な情報を保持していない場合、保持している別のスコープから内容を引き継ぐか、DBに問い合わせるなどが必要になるかと思います。

組み合わせパターンにも依存するので、常にとは断言はできませんが、基本的に if 文での対応は可能です。ただし、商品コードの判定と、送料の加算の2段階の判定(if文)が最低限必要かと思います。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

popo
投稿日時: 2009/8/16 18:28
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 商品コードで送料を操作するには?
アドバイスありがとうございます。

VB系の言語の知識は皆無です。
perlのif分をちょっと触れる程度しか知識がありません。

今度は、商品詳細ページを参考にして、「$arrData['product_code']」ではなく「$arrProductCode["product_code"]」にしてみましたが、やはりダメでした。
その他にも「$arrProducts[cnt].product_code」「$arrProducts.product_code」や「$arrProductsClass[cnt].product_code」「$arrProductsClass.product_code」も試して見ましたが、ダメでした。
どうやって商品コードを取得するのか、さっぱり分からない状態です。


商品コードの種類の数により送料を加算するには、if文を加えるだけ実現できるレベルではないと言う事でしょうか。

もう数時間も格闘していて、お手上げ状態になっています。

助け舟を頂けると嬉しく思います。

よろしくお願い致します。
seasoft
投稿日時: 2009/8/16 10:11
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7367
Re: 商品コードで送料を操作するには?
VB 系の言語のご経験がおありですかね?

if($arrData['product_code'] = "ab") {


PHP での等価の比較は「==」です。
http://www.php.net/manual/ja/language.operators.comparison.php


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

popo
投稿日時: 2009/8/16 8:49
対応状況: −−−
長老
登録日: 2008/10/1
居住地:
投稿: 189
Re: 商品コードで送料を操作するには?
いろいろと試しては見たのですが、上手く動作しませんでした。
商品コードはメールテンプレートのファイルを見て「product_code」だと分かりました。
そこで、下記のような記述を送料計算をしているあたりに、SC_Helper_DB.phpに記述してみました。

引用:

if($arrData['product_code'] = "ab") {
$arrData['deliv_fee']+= 1000;
} else {
$arrData['deliv_fee']+= 0;
}


結果は、商品コードは「ab」であってもなくても、送料に1000円が加算されてしまいました。

ここでもう1つ問題が発生してしまいました。
それは、お客さんが商品コード「ab」の商品を複数購入した場合でも、加算する送料は1000円だけにしなければならない事。
また商品コード「ab」や「cd」の商品を複数購入した場合は、2種類の商品コードを購入しているので、2000円を送料に加算するようにしなければなりません。

と言う事は、まずはカートに入っている商品コードの種類と商品数をカウントしなければならない気がします。
カート内の商品に「ab」が1個以上含まれていれば「ab_fee = 1000」、1つも含まれていなければ「ab_fee = 0」。
同じく「cd」が1つ以上含まれていれば「cd_fee = 1000」、「cd_fee = 0」。
そして、送料の計算は「deliv_fee = ab_free + cd_fee」と言う感じになると思います。

理論的には上記のような感じになると思いますが、これを実際に機能させようとすると、どのような記述をして良いのか分かりません。
if文を利用する事は分かるのですが、商品コードの有無を判別するのにも「 if($arrData['product_code'] = "ab") 」ではダメでした。

ご教授を頂けると助かります。

何卒、よろしくお願い致します。
« 1 (2) 3 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,890名です
総投稿数は110,001件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.