[Tep-j-general] products_info.phpで商品情報が取得・表示できない

Back to archive index

gmail hikar****@gmail*****
2008年 4月 15日 (火) 20:23:16 JST


はまださま
いつもありがとうございます。

過去ログは見ました。
見た上で、以下のことも確認していましたが、
そのことを書くのが漏れていました。
すみませんでした。

> catalog/includes/configure.php
>>   define('DIR_WS_CATALOG', '/catalog/'); // absolute path required
> admin/includes/configure.php
>>   define('DIR_WS_CATALOG', '/catalog/');

の部分は、すでに確認済みでまったく問題ありませんでした。
catalog → shop となっていました。

以降の方で、私と同じ過ちをしてしまった方が読んで状況などもわかるように、
ここまでの経緯を書きたいと思います。

たぶん、一括でgrepしてしまったのがいけなかったと思うのですが
私では、どの部分の catalog が shop になったのが悪かったのかが分かりません。

ですので、頭を切り替えてみました。
なぜ他の画面(たとえば、default.phpとか)では商品の画像や価格はきちんと
表示されているのに、products_info.phpのときだけ
商品情報がDBから取得できないのか?

そこで、はまださまのレス

>> echo "select p.products_id, pd.products_name, pd.products_description, 
>> p.products_model, p.products_quantity, p.products_image, pd.products_url, 
>> p.products_price, p.products_tax_class_id, p.products_date_added, 
>> p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " 
>> p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' 
>> and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and 
>> pd.products_id = p.products_id and pd.language_id = '" . 
>> (int)$languages_id . "'";
>
> とか挿入し、実際に投げてるSQLを確認するとか。

を拝見して、
気付いたことがありました。
どの商品をクリックしたのかを判別する為の
(int)$HTTP_GET_VARS['products_id'] の部分が”0”となっていました。

どの商品をクリックしたのかを判別する為の $HTTP_GET_VARS['products_id'] に
パラメータが入っていない、もしくは正しく受け取れていないんだということに
気付いたので、調べてみると
商品画像がきちんと表示されているカタログ画面(今回は、default.php)の
商品画像の上にカーソルを当てると、

〜/catalog/products_info.php?products_id=20

というURLが生成されていたので、パラメータが入っていないということは考えられないので
パラメータを正しく受け取れていないということが分かりました。
実際、はまださまから書いていただいた echo 文を追加してみると

select p.products_id, pd.products_name, pd.products_description, 
p.products_model, p.products_quantity, p.products_image, pd.products_url, 
p.products_price, p.products_tax_class_id, p.products_date_added, 
p.products_date_available, p.manufacturers_id from products p, 
products_description pd where p.products_status = '1' and p.products_id = 
'0' and pd.products_id = p.products_id and pd.language_id = '4'

という表示がでました。
何度やっても、どの商品をクリックしても

p.products_id = '0'

となりました。
では、実際にDBに格納されている products_id を直接記述したらどうなるのか?
を試してみました。

$product_info_query = tep_db_query("select p.products_id, pd.products_name, 
pd.products_description, p.products_model, p.products_quantity, 
p.products_image, pd.products_url, p.products_price, 
p.products_tax_class_id, p.products_date_added, p.products_date_available, 
p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . 
TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and 
p.products_id = 32 and pd.products_id = p.products_id and pd.language_id = 
'" . (int)$languages_id . "'");

これで、実行すると商品情報を正しく取得して、
画面に正常に表示されました。

以上の検証から、不具合点としては $HTTP_GET_VARS['products_id'] で
正しくパラメータを受け取れていない。
さらに、現状分からないことは、
どうしたら正しくパラメータを正しく受け取れるのか?
という点です。

長くなってしまいましたが、
どのようにしたら、 $HTTP_GET_VARS['products_id'] で
パラメータを正しく受け取れるのでしょうか?
その受け取り部分のスクリプトをどう手直ししたら良いのか分からないので
教えていただけませんか?
よろしくお願いいたします。




Tep-j-general メーリングリストの案内
Back to archive index