バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 商品詳細URLを商品コードに置き換えたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
atsu
投稿日時: 2013/12/4 0:46
対応状況: −−−
一人前
登録日: 2008/5/29
居住地:
投稿: 83
商品詳細URLを商品コードに置き換えたい
商品詳細ページのURLを商品コードに置き換えて運用していたのですが、このたび2.13に変更を加えていて行き詰ってしまいました。
2.12まではうまくいっていたのですが、
LC_Page_Products_Detail.phpのpublic function action()で、
if ( $_GET[ "product_code" ] )
{
$_REQUEST[ "product_id" ] = $this->lfGetProductId( $_GET[ "product_code" ] );
}

を呼び出し、

public function lfGetProductId( $product_code )
{
$q = new SC_Query();

// 大文字に変換
$product_code = strtoupper( $product_code );

$sql = <<< EOD
select
c.product_id
from
dtb_products_class c
inner join dtb_products p on c.product_id = p.product_id and p.del_flg = 0
where
c.product_code = ?
group by
c.product_id
EOD;
return $q->getone( $sql, array( $product_code ) );
}

を設定していました。
調べたところ、2.13からはテーブルを直接参照できないようなのですが、どのように書き換えればいいのでしょうか?

お分かりになる方がいらしたらよろしくお願いします。



バージョン2.13
atsu
投稿日時: 2013/12/5 15:03
対応状況: −−−
一人前
登録日: 2008/5/29
居住地:
投稿: 83
Re: 商品詳細URLを商品コードに置き換えたい
自己レスです。
その後いろいろ試してみているのですが、

SC_Product.phpに下記関数をつくり、

public function lfGetProductId( $product_code )
{

//インスタンス生成
$objQuery = new SC_Query();
$col = "product_id"; //カラム
$table="dtb_products_class";
$where = "product_code = ?AND del_flg = 0 ";
$res = $objQuery->select($col,$table, $from, $where);

return $res;

}

LC_Page_Products_Detail.phpで、とりあえず呼び出して、取得したproduct_codeからproduct_idを取り出したいのですが、どうにもうまくいきません。

$objURLs = new SC_Product_Ex();

$this->ppcode = $objURLs->lfGetProductId( $_GET[ "product_code" ] );

if ( $_GET[ "product_code" ] )
{


$abcd=lfGetProductId( $_GET[ "product_code" ] );
echo $abcd;

}


知識不足で、分かる方がいらっしゃれば教えてください。
namahage
投稿日時: 2013/12/5 15:23
対応状況: −−−
長老
登録日: 2013/2/28
居住地: 大阪
投稿: 198
Re: 商品詳細URLを商品コードに置き換えたい
ども

具体的な情報がないとレスがつきにくいです。
うまくいきませんというのは、どのようにでしょうか?
エラーが出るとか、エラーは出ないが取得出来ないとか。


そもそも$_GET[ "product_code" ]で商品コードは取得できていますでしょうか?
DELIGHT
投稿日時: 2013/12/5 15:33
対応状況: −−−
仙人
登録日: 2010/2/3
居住地: 熊本県・九州・長野県・関東甲信越
投稿: 572
Re: 商品詳細URLを商品コードに置き換えたい
$where = "product_code = ?AND del_flg = 0 "; 

?とANDの間にスペースがないですね?
これだと多分SQLエラーが発生すると思います。

あとSC_Queryのインスタンスは、
$objQuery = SC_Query_Ex::getSingletonInstance();

が慣例となっています。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

atsu
投稿日時: 2013/12/5 15:54
対応状況: −−−
一人前
登録日: 2008/5/29
居住地:
投稿: 83
Re: 商品詳細URLを商品コードに置き換えたい
DELIGHTさん
教えていただいた2点修正してみました。
ありがとうございます。


namahageさん

>そもそも$_GET[ "product_code" ]で商品コードは取得できていますでしょうか?

$_GET[ "product_code" ]では、商品コードの取得はできています。
商品コードが取得できた場合に、商品コードを用いてproduct_idを返したいのですが、それができなくて行き詰っています。

bratech
投稿日時: 2013/12/5 16:04
対応状況: −−−
長老
登録日: 2008/11/28
居住地: 福岡
投稿: 223
Re: 商品詳細URLを商品コードに置き換えたい
引用:

$col = "product_id"; //カラム
$table="dtb_products_class";
$where = "product_code = ?AND del_flg = 0 ";
$res = $objQuery->select($col,$table, $from, $where);


この部分ですが

$res = $objQuery->select($col,$table, $from, $where);

上記の記述ですと返値が配列になりますので
ご希望されている処理の流れに合わせるのであれば


$res = $objQuery->get($col,$table, $from, $where);

こちらを使用された方が良いかもしれません。

ご参考まで。


----------------
★売れる通販サイト作ります! ========================
(株)ブラテック EC-CUBEカスタマイズサービス
http://www.bratech.co.jp/lpo/eccube.html
==============================================

namahage
投稿日時: 2013/12/5 16:07
対応状況: −−−
長老
登録日: 2013/2/28
居住地: 大阪
投稿: 198
Re: 商品詳細URLを商品コードに置き換えたい
product_codeを引数に渡していますが、selectに渡してませんね

$col = "product_id"; //カラム
$table="dtb_products_class";
$where = "product_code = ? AND del_flg = 0 ";
$arrWhereVal = array($product_code);
$objQuery->select($col, $table, $where, $arrWhereVal);

と変更してみてください。
atsu
投稿日時: 2013/12/5 19:28
対応状況: −−−
一人前
登録日: 2008/5/29
居住地:
投稿: 83
Re: 商品詳細URLを商品コードに置き換えたい
いろいろありがとうございます!

結局、
$col = "product_id"; //カラム
$table="dtb_products_class";
$where = "product_code = ? AND del_flg = 0 ";
$arrWhereVal = array($product_code);
$res = $objQuery->get($col,$table, $from, $where,$arrWhereVal);

echo $res;

として、やってみたら、数値は取得できたものの、どのページでも「8」という番号が出力されてしまい、dtb_products_classの中身をみたら、先頭のproduct_idが8だったのでどうもそれが出力されているようなのです。

$from = "dtb_products_class INNER JOIN dtb_products ON dtb_products_class.product_id = dtb_products.product_id";

が必要なのかと思い、書いてみたのですがエラーがでてしまいます。

記述の間違いがあるのでしょうか??
namahage
投稿日時: 2013/12/5 20:58
対応状況: −−−
長老
登録日: 2013/2/28
居住地: 大阪
投稿: 198
Re: 商品詳細URLを商品コードに置き換えたい

$col = "product_id"; //カラム
$table="dtb_products_class";
$where = "product_code = ? AND del_flg = 0 "; 
$arrWhereVal = array($product_code);
$res = $objQuery->get($col,$table, $from, $where,$arrWhereVal);

echo $res;


としても取得はできないはずです。

もう少し正確な情報ください。
$fromと$tableって意味一緒だと思うんですけど、勝手に増やすとエラー出ますよ。



$col = "dtb_products_class.product_id"; //カラム
$from = "dtb_products_class INNER JOIN dtb_products ON dtb_products_class.product_id = dtb_products.product_id";
$where = "dtb_products_class.product_code = ? AND dtb_products_class.del_flg = 0 "; 
$arrWhereVal = array($product_code);
$res = $objQuery->get($col, $from, $where,$arrWhereVal);

echo $res;

でやってみてください。

これで$resの値が毎回同じ数字がでるのであれば、$product_codeの値がちゃんと変わっているか?を疑う、または同一の商品コードが複数の商品に設定されているから複数件取得されてしまう。

のどちらかの可能性があります。

この部分だけのソースではなくてもう少し前後の情報があれば回答しやすいです。


atsu
投稿日時: 2013/12/5 21:56
対応状況: −−−
一人前
登録日: 2008/5/29
居住地:
投稿: 83
Re: 商品詳細URLを商品コードに置き換えたい
namahageさんありがとうございます!!
教えていただいた通りで、$resにproduct_idを取得できる関数ができました。


namahageさんやみなさんのおかげで行き詰っていたところから前進できたようです。本当に助かりました。ありがとうございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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.