From pirate_ship @ livedoor.com Wed May 28 07:04:08 2008 From: pirate_ship @ livedoor.com (=?ISO-2022-JP?B?GyRCQmdGNjUxQCRCJBsoQg==?=) Date: Wed, 28 May 2008 07:04:08 +0900 Subject: [Tep-j-general] =?iso-2022-jp?b?GyRCO1IkTiUrJUYlNCVqJE48aEZAGyhC?= =?iso-2022-jp?b?GyRCSn1LIRsoQg==?= Message-ID: <45bb6f4b0805271504i1990313dy59724eeaee5b9b97@mail.gmail.com> 初めてメールします。 現在、バージョンosCommerce 2.2 MS1j-R8で下記のようなことをやろうとしているのですがうまくいかないためお知恵を借りたくメールしました。 やりたいこと カテゴリの親をクリックするとそこ子がすべて一覧表示される 例 カテゴリのハードウェアをクリックするとハードウェアの子、CD-ROMドライブ、キーボード、グラフィックカード、スピーカー、 プリンター、マウス、メモリ、モニターのすべての商品が一覧表示される 以上です。 製作工程 例 ハードウェアをクリックした場合 工程 1. ハードウェアをクリックしたらデーターベースにアクセスして、ハードウェアのカテゴリIDを取得。 工程 2. 取得したハードウェアのカテゴリIDからデーターベースにアクセスしてハードウェアの子のカテゴリIDを取得 工程 3. 取得した子のカテゴリIDからデーターベースにアクセスして子の商品IDを取得 工程 4. 取得した子の商品IDからデーターベースにアクセスして子の商品名、商品画像、価格を取得 工程 5. 取得した子の商品名、商品画像、価格をテーブルにて一覧表示 と計画を立て、実行して とりあえず、工程 4まではもっていけたのですが、ひとつ問題が発生しまして、それをどうクリアすれば良いのかを解決に困っています。 というのも、工程 2で子のカテゴリーIDの取得がなぜか、親の最初に登録された子一つのカテゴリIDしか取得できないのです。(ハードウェアをクリックするとマトロックス G200 MMSのカテゴリIDのみ、ソフトウェアをクリックするとSWAT 3のカテゴリIDのみ、DVDをクリックするとリプレイスメント・キラーのカテゴリIDのみしか取得できないのです。) 以下に工程1と工程2まで作成した構文を記載します。 ハードウェアの場合 工程1 クリックしたカテゴリID、子カテゴリIDを取得 $first_categories_query = tep_db_query("select categories_id, parent_id from " . TABLE_CATEGORIES . " where categories_id = '". (int)$cPath . "'"); if (tep_not_null($first_categories_query)){ $first_categories_id = tep_db_fetch_array($first_categories_query); } // $first_categories_id[categories_id]= 1 // $first_categories_id[ parent_id ]= 0 工程2 クリックしたカテゴリIDから子カテゴリIDを取得 *問題の箇所 if($first_categories_id[parent_id]==0){ $parent_id[i] = $first_categories_id[categories_id]; } $parent_categories_query= tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id=' $parent_id[i] '"); if (tep_not_null($parent_categories_query)){ $parent_categories_id= tep_db_fetch_array($parent_categories_query); } // $parent_categories_id[ categories_id ]= 4 データーベース上では parent_id = 1 に相当する categories_id が 4 だけではないのですが 4 だけしか取得できないのです。 $parent_categories_query の SQL構文に何か問題があると思うのですが、何をどうしたら良いのか分りません。 ちなみに $parent_categories_query= tep_db_query("select * from " . TABLE_CATEGORIES . " where parent_id=' $parent_id[i] '"); しても categories_id が 4 の行文しか得られませんでした。 また、 $parent_categories_query= tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id !=' $parent_id[i] '"); // $parent_categories_id[ categories_id ]= 1でした。 参考までに PHP Version 4.4.2、 MySQL version 4.0.26 のレンタルサーバーを使用しています。 どうか、お知恵をお貸し下さい。 もし、本家のモジュールで同じ様なモジュールを知っている方がございましたら、教えてください。 kiyoteru -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/tep-j-general/attachments/20080528/37c4f799/attachment.htm From bunguya @ leo.e-catv.ne.jp Wed May 28 09:06:45 2008 From: bunguya @ leo.e-catv.ne.jp (hamada) Date: Wed, 28 May 2008 09:06:45 +0900 Subject: [Tep-j-general] =?iso-2022-jp?b?GyRCO1IkTiUrJUYlNCVqJE48aEZAGyhC?= =?iso-2022-jp?b?GyRCSn1LIRsoQg==?= In-Reply-To: <45bb6f4b0805271504i1990313dy59724eeaee5b9b97@mail.gmail.com> References: <45bb6f4b0805271504i1990313dy59724eeaee5b9b97@mail.gmail.com> Message-ID: <20080528090247.B1C3.16353605@leo.e-catv.ne.jp> こんにちわ。 On Wed, 28 May 2008 07:04:08 +0900 "大洞輝世造" wrote: > データーベース上では parent_id = 1 に相当する categories_id が 4 だけではないのですが 4 だけしか取得できないのです。 え〜っと、他にもツっ込みたいところはあるんですが、とりあえず上記は 「ループしてないから」 ではないかと思います(^_^;) osCで「DBから値を抜く処理」はフツー > while ($data = tep_db_fetch_array($result)) { > > 処理する内容 > > } みたく書くと思うんすが、このループが無いのでそのまま過ぎ去り、最初の値し か取得出来ないように見えるのではないかと。 > もし、本家のモジュールで同じ様なモジュールを知っている方がございましたら、教えてください。 Show All Products in Category & Subcategories V1.0 http://addons.oscommerce.com/info/5351 かな? はまだ From pelulurapa @ xrh.biglobe.ne.jp Wed May 28 12:54:36 2008 From: pelulurapa @ xrh.biglobe.ne.jp (JM) Date: Wed, 28 May 2008 12:54:36 +0900 Subject: [Tep-j-general] =?iso-2022-jp?b?cGF5cGFsGyRCJEtDMTJBJCxIPzFHGyhC?= =?iso-2022-jp?b?GyRCJDUkbCRKJCQbKEI=?= Message-ID: <006e01c8c077$7037b780$0500a8c0@FM3FD6C3797708> ご無沙汰しています。三宅です。 paypal決済時、checkout_confirmation.php から「次へ」をクリックすると paypalサイトに飛ぶのですが、paypalサイトに行った時、単価が空欄になってしまいます。 (お客様からの指摘で分かりました) これまでは正常に動いていた(単価もpaypalに反映されていた)ので、前回、 注文メールが届かないという相談をした以降はファイルを触っておらず、 ファイルの上書きも試みましたが、直りません。。。 単価の所を手入力すると決済手続きを進める事ができるのですが、 これではoscommerceと連動させている意味が全くなく、困っています。 宜しくお願いします。 From bunguya @ leo.e-catv.ne.jp Wed May 28 14:19:19 2008 From: bunguya @ leo.e-catv.ne.jp (hamada) Date: Wed, 28 May 2008 14:19:19 +0900 Subject: [Tep-j-general] =?iso-2022-jp?b?cGF5cGFsGyRCJEtDMTJBJCxIPzFHGyhC?= =?iso-2022-jp?b?GyRCJDUkbCRKJCQbKEI=?= In-Reply-To: <006e01c8c077$7037b780$0500a8c0@FM3FD6C3797708> References: <006e01c8c077$7037b780$0500a8c0@FM3FD6C3797708> Message-ID: <20080528141806.B1E7.16353605@leo.e-catv.ne.jp> こんにちわ。 On Wed, 28 May 2008 12:54:36 +0900 "JM" wrote: > paypal決済時、checkout_confirmation.php から「次へ」をクリックすると > paypalサイトに飛ぶのですが、paypalサイトに行った時、単価が空欄になってしまいます。 「単価」ってのはどの値の事なんでしょ? 件のモジュールはhiddenフィールドに値を列記して遷移するタイプのモジュール で、 catalog/includes/modules/payment/paypal.php ・cmd ・business ・item_name ・amount ・shipping ・currency_code ・return ・cancel_return といった値を列記するようですが、貴君の言われてる「単価」ってのはamountの ことで宜しいんでしょか? # コードで見ると小計とかっぽいんですが とりあえず、遷移ページのhiddenフィールドに正しい値が記入されてる事を確認 してから相手方(PayPal)に問い合わせるべきではないかと。 はまだ From pirate_ship @ livedoor.com Wed May 28 21:10:05 2008 From: pirate_ship @ livedoor.com (=?ISO-2022-JP?B?GyRCQmdGNhsoQg==?=) Date: Wed, 28 May 2008 21:10:05 +0900 Subject: [Tep-j-general] =?iso-2022-jp?b?GyRCO1IkTiUrJUYlNCVqJE48aEZAGyhC?= =?iso-2022-jp?b?GyRCSn1LIRsoQg==?= In-Reply-To: <20080528090247.B1C3.16353605@leo.e-catv.ne.jp> References: <45bb6f4b0805271504i1990313dy59724eeaee5b9b97@mail.gmail.com> <20080528090247.B1C3.16353605@leo.e-catv.ne.jp> Message-ID: <45bb6f4b0805280510v45adbea9r9435d1234a00a2a@mail.gmail.com> はまだ様 早速お返事をいただきまして、ありがとうございます。 データーベースにアクセスするにも決まりごとがあるんですね。 ************************************************************** 「ループしてないから」 ではないかと思います(^_^;) osCで「DBから値を抜く処理」はフツー > while ($data = tep_db_fetch_array($result)) { > > 処理する内容 > > } みたく書くと思うんすが、このループが無いのでそのまま過ぎ去り、最初の値し か取得出来ないように見えるのではないかと。 ************************************************************** 早速ループ処理をしたところ、すべての値を取得することができました。 まさにそのとおりでした。 大変、参考になりました。 それとご紹介いただきましたモジュールを早速インソールしてテストしたところ、まさに私が望んでいたモジュールでしたので ************************************************************** Show All Products in Category & Subcategories V1.0 http://addons.oscommerce.com/info/5351 ************************************************************** 今回はこれを活用しようと思います。 わたしと同じ事を望んでいる方にはお勧めですね。 ここまで、悩んでテストして作成した時間が無駄に思えるくらい簡単に導入する事ができました。 日本語版とはページ等や弱間の構文エラー等があったので、下記に今後の方のために記載しておきますね。 はまだ様のようにoScに精通していらしゃる方がメーリングリストに見えますと私のような初心者にはとても助かります。 今後ともよろしくお願いします。 本当にありがとうございました。 *注 インソールする前にデーターのバックアップを忘れずに。 変更ファイル catalog/default.php、catalog/includes/modules/product_listing.php バージョンosCommerce 2.2 MS1j-R8の場合 catalog/default.phpの変更点 1 P20 変更箇所 if ($cateqories_products['total'] > 0) { $category_depth = 'products'; // display products } else { 変更後 if (tep_count_products_in_category($cPath) > 0) { $category_depth = 'products'; // display products } else { ******************* catalog/default.phpの変更点 2 P189 変更箇所 // We show them all $listing_sql = "select " . $select_column_list . " p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'"; } 変更後 // We show them all $cPathA = explode("_", $cPath); $size = sizeof($cPathA)-1; $subcategories_array = array(); tep_get_subcategories($subcategories_array, $cPathA[$size]); $size_sc = sizeof($subcategories_array); //Subcat count $cat_Search = "("; for($i = 0; $i < $size_sc; $i++){ $cat_Search .= "p2c.categories_id = '" . $subcategories_array[$i] . "' or "; } $cat_Search .= "p2c.categories_id = '" . $cPathA[$size] . "'" . ")"; $listing_sql = "select distinct " . $select_column_list . " p.products_image, pd.products_name, p.products_id, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and " . $cat_Search . ""; } ******************* 以上 catalog/default.php //////////////////////////////////////////////////////////////////////////// catalog/includes/modules/product_listing.phpの変更点 1 P114 変更箇所 case 'PRODUCT_LIST_NAME': $lc_align = ''; if (isset($HTTP_GET_VARS['manufacturers_id'])) { $lc_text = '' . $listing['products_name'] . ''; } else { $lc_text = ' ' . $listing['products_name'] . ' '; } 変更後 case 'PRODUCT_LIST_NAME': $lc_align = ''; if (isset($HTTP_GET_VARS['manufacturers_id'])) { $lc_text = '' . $listing['products_name'] . ''; } else { $lc_text = ' ' . $listing['products_name'] . ' '; } ******************* catalog/includes/modules/product_listing.phpの変更点 2 P142 変更箇所 case 'PRODUCT_LIST_IMAGE': $lc_align = 'center'; if (isset($HTTP_GET_VARS['manufacturers_id'])) { $lc_text = '' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . ''; } else { $lc_text = ' ' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . ' '; } 変更後 case 'PRODUCT_LIST_IMAGE': $lc_align = 'center'; if (isset($HTTP_GET_VARS['manufacturers_id'])) { $lc_text = '' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . ''; } else { $lc_text = ' ' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . ' '; } ******************* 以上 catalog/includes/modules/product_listing.php //////////////////////////////////////////////////////////////////////////// 終了 > > > > > -------------- next part -------------- HTMLの添付ファイルを保管しました... URL: http://lists.sourceforge.jp/mailman/archives/tep-j-general/attachments/20080528/60cf8052/attachment.htm From takatakumimi @ gmail.com Fri May 30 16:46:42 2008 From: takatakumimi @ gmail.com (kouchan) Date: Fri, 30 May 2008 16:46:42 +0900 Subject: [Tep-j-general] =?iso-2022-jp?b?GyRCJUchPCU/ITwlWSE8JTkkTiVhGyhC?= =?iso-2022-jp?b?GyRCJXMlRiVKJXMlORsoQg==?= Message-ID: <000301c8c229$5062d080$0b0ba8c0@takanew> お世話になります。 2005年よりOSCで運用しておりまして オーバーヘッドの最適化以外、 一度もデーターベースのメンテナンスをしていないのですが、 どのように皆さんはメンテナンスをしておるのかお聞かせいただけたらなと思います。 宜しくお願いいたします。 From bunguya @ leo.e-catv.ne.jp Sat May 31 08:38:42 2008 From: bunguya @ leo.e-catv.ne.jp (hamada) Date: Sat, 31 May 2008 08:38:42 +0900 Subject: [Tep-j-general] =?iso-2022-jp?b?GyRCJUchPCU/ITwlWSE8JTkkTiVhGyhC?= =?iso-2022-jp?b?GyRCJXMlRiVKJXMlORsoQg==?= In-Reply-To: <000301c8c229$5062d080$0b0ba8c0@takanew> References: <000301c8c229$5062d080$0b0ba8c0@takanew> Message-ID: <20080531083621.AA8C.16353605@leo.e-catv.ne.jp> こんにちわ。 On Fri, 30 May 2008 16:46:42 +0900 "kouchan" wrote: > どのように皆さんはメンテナンスをしておるのかお聞かせいただけたらなと思います。 mysqlcheckとか、myisamchkとか。 まぁ、テーブル壊れてない&(オーバーヘッド云々から)OPTIMIZEしてるなら、 それで充分なんじゃないでしょかね? むしろテーブルチェック&バックアップのほうが必要度高いような。 はまだ