バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

その他 > その他 > テストデータ生成スクリプトについて

その他

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tao_s
投稿日時: 2013/10/13 8:00
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 796
Re: テストデータ生成スクリプトについて
すいません、自己解決しました。
testに入ってました。

http://svn.ec-cube.net/open_trac/browser/branches/version-2_13_0/test/createEcCubeData-v25.php


----------------
EC-CUBEカスタマイズ相談してください。
緊急のEC-CUBEの障害対応
EC-CUBEカスタマイズブログ

tao_s
投稿日時: 2013/10/13 7:56
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 796
Re: テストデータ生成スクリプトについて
これの最新版ってどなたかお持ちでしょうか?
2.13.0(MySQL)で試したらそんなカラム無いって怒られました。


----------------
EC-CUBEカスタマイズ相談してください。
緊急のEC-CUBEの障害対応
EC-CUBEカスタマイズブログ

shutta
投稿日時: 2010/8/3 16:54
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: テストデータ生成スクリプトについて
ramrunさんのスクリプトを少し弄ってみました。

変更点
・EC-CUBE本体の設定値やクラスライブラリ等を参照するようにした。
・product_id等のシーケンス値をリセットする処理を追加。
・dtb_category_count等を更新する処理を追加。
・正式版とコミュニティ版用を切り替えられるようにした。(IS_COMU)

使用方法
テストデータを生成させたいEC-CUBEディレクトリ内のdata/script/以下に配置して実行して下さい。
また、配置場所を替えたい場合は、require部分を適宜変更して下さい。


#!/usr/bin/php -q
<?php
/*
 * EC-CUBE データ生成スクリプト
 *
 * Copyright(c) 2000-2008 LOCKON CO.,LTD. All Rights Reserved.
 *
 * http://www.lockon.co.jp/
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * @auther Kentaro Ohkouchi
 * @version $Id$
 */

// {{{ requires
//require_once realpath(dirname(__FILE__) . '/../require_base.php');
require_once realpath(dirname(__FILE__) . '/../../html/require.php');

// }}}
// {{{ constants

/** 大カテゴリ数 x 中カテゴリ数 x 小カテゴリ数 < 91 となるように */
/** 大カテゴリの生成数 */
define("TOP_CATEGORIES_VOLUME", 5);

/** 中カテゴリの生成数 */
define("MIDDLE_CATEGORIES_VOLUME", 2);

/** 小カテゴリの生成数 */
define("SMALL_CATEGORIES_VOLUME", 3);

/** 規格1の生成数 */
define("CLASSCATEGORY1_VOLUME", 3);

/** 規格2の生成数 */
define("CLASSCATEGORY2_VOLUME", 5);

/** 商品の生成数 */
define("PRODUCTS_VOLUME", 100);

/** 1つの商品を最大いくつのカテゴリに登録させるか */
define("MAX_PRODUCTS_CATEGORIES", 3);

/** コミュニティ版かどうか */
define("IS_COMU", false);

// }}}
// {{{ Logic -------------------------------------

$start = microtime(true);

$objData = new CreateEcCubeData();
$objData->process();

$end = microtime(true);
printf("所要時間 %f 秒\n", $end - $start);

// }}}
// {{{ classes -----------------------------------

/**
 * EC-CUBE のデータを生成する
 */
class CreateEcCubeData {

    /** SC_Query インスタンス */
    var $objQuery;

    /** 大カテゴリID の配列 */
    var $arrCategory1  = array();

    /** 中カテゴリID の配列 */
    var $arrCategory2  = array();

    /** 小カテゴリID の配列 */
    var $arrCategory3  = array();

    /** 規格1 */
    var $arrClassCategory_id1 = array();

    /** 規格2 */
    var $arrClassCategory_id2 = array();

    /**
     * コンストラクタ.
     */
    function CreateEcCubeData() {
        $this->objQuery = new SC_Query();
    }

    function process() {
        while(@ob_end_flush());

        $this->objQuery->begin();

        $this->deleteItems();                // 既存テーブルのデータ削除
        $this->resetSequence();              // シーケンス値のリセット
        $this->createCategories();           // カテゴリ生成
        $this->createClassData();            // 規格生成
        if (IS_COMU) {
            $this->createMaker();            // メーカー生成
            $this->updateMakerCount();       // メーカー登録数の更新
        }
        $this->createProducts();             // 商品生成
        $this->relateClass();                // 商品と規格の関連づけ
        $this->relateProductsCategories();   // 商品とカテゴリの関連づけ
        $this->updateCategoryCount();        // カテゴリ登録数の更新

        $this->objQuery->commit();

        print("データの生成が完了しました!\n");
    }

    function deleteItems() {

        print("既存の商品データを削除しています...\n");

        $this->objQuery->delete("dtb_category_total_count");
        $this->objQuery->delete("dtb_category_count");

        $this->objQuery->delete("dtb_category");              // カテゴリ
        $this->objQuery->delete("dtb_product_categories");    //  |
        $this->objQuery->delete("dtb_products");              // 商品
        $this->objQuery->delete("dtb_products_class");        //  |
        $this->objQuery->delete("dtb_classcategory");         //  |
        $this->objQuery->delete("dtb_class");                 // 規格

        if (IS_COMU) {
            $this->objQuery->delete("dtb_maker");
            $this->objQuery->delete("dtb_maker_count");
        }
    }

    function resetSequence() {
        if (DB_TYPE == 'mysql') {
            $arrTargets = array(
                'dtb_category',
                'dtb_class',
                'dtb_classcategory',
                'dtb_products',
                'dtb_products_class',
            );

            if (IS_COMU) {
                $arrTargets[] = 'dtb_maker';
            }

            foreach ($arrTargets as $target) {
                $sql = "ALTER TABLE $target AUTO_INCREMENT = 1";
                $this->objQuery->query($sql);
            }
        } else {
            $arrTargets = array(
                'dtb_category_category_id_seq',
                'dtb_class_class_id_seq',
                'dtb_classcategory_classcategory_id_seq',
                'dtb_products_product_id_seq',
                'dtb_products_class_product_class_id_seq',
            );

            if (IS_COMU) {
                $arrTargets[] = 'dtb_maker_maker_id_seq';
            }

            foreach ($arrTargets as $target) {
                $sql = "SELECT SETVAL('$target', 1, false)";
                $this->objQuery->query($sql);
            }
        }
    }

    /**
     * カテゴリを生成する.
     *
     * 以下のように, ツリー状のカテゴリを生成する
     *
     *  大カテゴリ -- 中カテゴリ -- 小カテゴリ
     *             |             |- 小カテゴリ
     *             |             |- 小カテゴリ
     *             |
     *             |- 中カテゴリ -- 小カテゴリ
     *                            |- 小カテゴリ
     *                            |- 小カテゴリ
     * @return void
     */
    function createCategories() {

        print("カテゴリを生成しています...\n");

        $count = TOP_CATEGORIES_VOLUME 
               + TOP_CATEGORIES_VOLUME * MIDDLE_CATEGORIES_VOLUME 
               + TOP_CATEGORIES_VOLUME * MIDDLE_CATEGORIES_VOLUME * SMALL_CATEGORIES_VOLUME;

        // 全カテゴリ共通の値
        $sqlval['creator_id'] = 2;
        $sqlval['create_date'] = "now()";
        $sqlval['update_date'] = "now()";
        $sqlval['del_flg'] = (string) "0";

        $m = 0;
        $n = 0;
        // 大カテゴリを生成
        for ($i = 0; $i < TOP_CATEGORIES_VOLUME; $i++) {
            $sqlval['category_name'] = $this->arrCategoryName[$i];
            $sqlval['parent_category_id'] = (string) "0";
            $sqlval['level'] = 1;
            $sqlval['rank'] = $count;

            $this->objQuery->insert("dtb_category", $sqlval);
            $category_id1 = $this->objQuery->currval("dtb_category", "category_id");
            $this->arrCategory1[] = $category_id1;
            $count--;
            print(".");

            // 中カテゴリを生成
            for ($j = 0; $j < mt_rand(1, MIDDLE_CATEGORIES_VOLUME); $j++) {
                $sqlval['category_name'] = $this->arrCategoryName[$m++ + TOP_CATEGORIES_VOLUME];
                $sqlval['parent_category_id'] = (string) $category_id1;
                $sqlval['level'] = 2;
                $sqlval['rank'] = $count;

                $this->objQuery->insert("dtb_category", $sqlval);
                $category_id2 = $this->objQuery->currval("dtb_category", "category_id");
                $this->arrCategory2[] = $category_id2;
                $count--;
                print(".");

                // 小カテゴリを生成
                for ($k = 0; $k < mt_rand(1, SMALL_CATEGORIES_VOLUME); $k++) {
                    $sqlval['category_name'] = $this->arrCategoryName[$n++ + TOP_CATEGORIES_VOLUME + MIDDLE_CATEGORIES_VOLUME];
                    $sqlval['parent_category_id'] = (string) $category_id2;
                    $sqlval['level'] = 3;
                    $sqlval['rank'] = $count;

                    $this->objQuery->insert("dtb_category", $sqlval);
                    $category_id3 = $this->objQuery->currval("dtb_category", "category_id");
                    $this->arrCategory3[] = $category_id3;
                    $count--;
                    print(".");
                }
            }
        }
        print("\n");
    }

    /**
     * 規格を生成する.
     *
     * @return void
     */
    function createClassData() {
        // 規格データ生成
        print("規格データを生成しています...\n");
        $this->createClass("Size");
        $this->createClass("Color");
        print("\n");

        // 規格分類データ生成
        print("規格分類データを生成しています...\n");

        // 規格1
        for ($i = 0; $i < CLASSCATEGORY1_VOLUME; $i++) {
            $this->createClassCategory($this->arrSize[$i], $this->arrclass_id[0], "size");
        }

        // 規格2
        for ($i = 0; $i < CLASSCATEGORY2_VOLUME; $i++) {
            $this->createClassCategory($this->arrColor[$i], $this->arrclass_id[1], "color");
        }
        print("\n");
    }

    /**
     * 商品と規格の関連づけを行う.
     *
     * @return void
     */
    function relateClass() {

        print("商品と規格の関連づけを行います...\n");

        foreach ($this->arrProduct_id as $product_id) {
            $this->createProductsClass($product_id);
        }
        print("\n");
    }

    /**
     * 商品を生成する.
     *
     * @return void
     */
    function createProducts() {

        print("商品を生成しています...\n");
        for ($i = 0; $i < PRODUCTS_VOLUME; $i++) {
            $sqlval['name'] = sprintf("商品%d", $i);
            //$sqlval['deliv_fee'];
            //$sqlval['sale_limit'] = 1;
            if (!IS_COMU) {
                $sqlval['sale_unlimited'] = 1;
            }
            //$sqlval['category_id'];
            if (IS_COMU) {
                $sqlval['maker_id'] = mt_rand(min($this->arrMakerId), max($this->arrMakerId));
            }
            //$sqlval['rank'];
            $sqlval['status'] = 1;
            $sqlval['product_flag'] = "10010";
            $sqlval['point_rate'] = (string) mt_rand(0, 3);
            //$sqlval['comment1'];
            //$sqlval['comment2'];
            $sqlval['comment3'] = "コメント";
            //$sqlval['comment4'];
            //$sqlval['comment5'];
            //$sqlval['comment6'];
            //$sqlval['note'];
            //$sqlval['file1'];
            //$sqlval['file2'];
            //$sqlval['file3'];
            //$sqlval['file4'];
            //$sqlval['file5'];
            //$sqlval['file6'];
            $sqlval['main_list_comment'] = "商品一覧コメント";
            $sqlval['main_list_image'] = "08311201_44f65122ee5fe.jpg";
            $sqlval['main_comment'] = "詳細メインコメント";
            $sqlval['main_image'] = "08311202_44f6515906a41.jpg";
            $sqlval['main_large_image'] = "08311203_44f651959bcb5.jpg";
            $sqlval['sub_title1'] = "詳細サブタイトル1";
            $sqlval['sub_comment1'] = "詳細サブコメント1";
            //$sqlval['sub_image1'];
            //$sqlval['sub_large_image1'];
            //$sqlval['sub_title2'];
            //$sqlval['sub_comment2'];
            //$sqlval['sub_image2'];
            //$sqlval['sub_large_image2'];
            //$sqlval['sub_title3'];
            //$sqlval['sub_comment3'];
            //$sqlval['sub_image3'];
            //$sqlval['sub_large_image3'];
            //$sqlval['sub_title4'];
            //$sqlval['sub_comment4'];
            //$sqlval['sub_image4'];
            //$sqlval['sub_large_image4'];
            //$sqlval['sub_title5'];
            //$sqlval['sub_comment5'];
            //$sqlval['sub_image5'];
            //$sqlval['sub_large_image5'];
            //$sqlval['sub_title6'];
            //$sqlval['sub_comment6'];
            //$sqlval['sub_image6'];
            //$sqlval['sub_large_image6'];
            $sqlval['del_flg'] = (string) "0";
            $sqlval['creator_id'] = 2;
            $sqlval['create_date'] = "now()";
            $sqlval['update_date'] = "now()";
            $sqlval['deliv_date_id'] = 2;

            $this->objQuery->insert("dtb_products", $sqlval);
            $this->arrProduct_id[] = $this->objQuery->currval("dtb_products", "product_id");
            print("*");
        }
    }

    /**
     * 規格を生成する.
     *
     * @param $class_name string 規格名
     * @return void
     */
    function createClass($class_name) {
        $sqlval['name'] = $class_name;
        $sqlval['status'] = null;
        $rank = $this->objQuery->getOne(
            "SELECT CASE
                     WHEN max(rank) + 1 IS NULL THEN 1
                     ELSE max(rank) + 1
                   END
              FROM dtb_class
             WHERE del_flg = 0");
        $sqlval['rank'] = $rank;
        $sqlval['creator_id'] = 2;
        $sqlval['update_date'] = "now()";
        $sqlval['del_flg'] = (string) "0";
        $sqlval['product_id'] = null;

        $this->objQuery->insert("dtb_class", $sqlval);

        // class_idを取得
        $this->arrclass_id[] = $this->objQuery->currval("dtb_class", "class_id");
        print("+");
    }

    /**
     * 規格分類を生成する.
     *
     * @param $classcategory_name string 規格名
     * @return void
     */
    function createClassCategory($classcategory_name, $class_id, $class_name) {
        $sqlval['name'] = $classcategory_name;
        $sqlval['class_id'] = $class_id;
        $sqlval['status'] = null;
        $rank = $this->objQuery->getOne(
            "SELECT CASE
                     WHEN max(rank) + 1 IS NULL THEN 1
                     ELSE max(rank) + 1
                   END
              FROM dtb_classcategory
             WHERE del_flg = 0
               AND class_id = " . $class_id);
        $sqlval['rank'] = $rank;
        $sqlval['creator_id'] = 2;
        $sqlval['create_date'] = "now()";
        $sqlval['update_date'] = "now()";
        $sqlval['del_flg'] = (string) "0";

        $this->objQuery->insert("dtb_classcategory", $sqlval);

        switch ($class_name) {
        case "size":
            $this->arrClassCategory_id1[] =
                $this->objQuery->currval("dtb_classcategory", "classcategory_id");
            break;

        case "color":
            $this->arrClassCategory_id2[] =
                $this->objQuery->currval("dtb_classcategory", "classcategory_id");
            break;
        default:
        }
        print("+");
    }

    /**
     * 商品規格を生成する.
     *
     * @param integer $product_id 商品ID
     * @return void
     */
    function createProductsClass($product_id) {

        printf("商品ID %d の商品規格を生成しています...\n", $product_id);

        $sqlval['product_id'] = $product_id;
        $sqlval['classcategory_id1'] = (string) "0";
        $sqlval['classcategory_id2'] = (string) "0";
        $sqlval['stock_unlimited'] = 1;
        $sqlval['price01'] = mt_rand(10, 10000);
        $sqlval['price02'] = mt_rand($sqlval['price01'], $sqlval['price01'] * 2);
        $sqlval['creator_id'] = 2;
        $sqlval['create_date'] = "now()";
        $sqlval['update_date'] = "now()";

        $hasClassCategory_id1 = mt_rand(0, 1);
        $hasClassCategory_id2 = mt_rand(0, 2);

        if (!$hasClassCategory_id1) {
            $sqlval['product_code'] = sprintf("商品コード%d-%d", $product_id, $count);
            $this->objQuery->insert("dtb_products_class", $sqlval);
            print("#");
        } else {
            $count = 0;
            foreach ($this->arrClassCategory_id1 as $classCategory_id1) {
                $sqlval['classcategory_id1'] = $classCategory_id1;

                if (!$hasClassCategory_id2) {
                    $sqlval['product_code'] = sprintf("商品コード%d-%d", $product_id, $count);

                    $this->objQuery->insert("dtb_products_class", $sqlval);
                    $count++;
                    print("#");
                } else {
                    foreach ($this->arrClassCategory_id2 as $classCategory_id2) {
                        $sqlval['classcategory_id2'] = $classCategory_id2;
                        $sqlval['product_code'] = sprintf("商品コード%d-%d", $product_id, $count);

                        $this->objQuery->insert("dtb_products_class", $sqlval);
                        $count++;
                        print("#");
                    }
                }
            }
        }
        print("\n");
    }

    /**
     * 商品とカテゴリの関連づけを行う.
     *
     * @return void
     */
    function relateProductsCategories() {

        print("商品とカテゴリの関連づけを行います...\n");
        $this->createProductsCategories(
            array_merge(
                $this->arrCategory1
               ,$this->arrCategory2
               ,$this->arrCategory3));
    }

    /**
     * 商品カテゴリを生成する.
     *
     * @param array $arrCategory_id カテゴリID の配列
     * @return void
     */
    function createProductsCategories($arrCategory_id) {

        print("商品カテゴリを生成しています...\n");

        $arrRank = array();

        foreach ($this->arrProduct_id as $product_id) {
            $sqlval['product_id'] = $product_id;

            shuffle($arrCategory_id);
            $esta = mt_rand(1, MAX_PRODUCTS_CATEGORIES);

            for ($i = 0; $i < $esta; $i++) {
                $sqlval['category_id'] = $arrCategory_id[$i];
                $arrRank[$sqlval['category_id']]++;
                $sqlval['rank'] = $arrRank[$sqlval['category_id']];

                $this->objQuery->insert("dtb_product_categories", $sqlval);
                print("$");
            }
        }
        print("\n");
    }

    /**
     * メーカーを生成する.
     *
     * @return void
     */
    function createMaker() {

        print("メーカーを生成しています...\n");

        $sqlval['creator_id'] = 2;
        $sqlval['create_date'] = "now()";
        $sqlval['update_date'] = "now()";
        $sqlval['del_flg'] = (string) "0";

        $count = 1;
        foreach ($this->arrMakerName as $makerName) {
            $sqlval['name'] = $makerName;
            $sqlval['rank'] = $count;
            $this->objQuery->insert("dtb_maker", $sqlval);
            $maker_id = $this->objQuery->currval("dtb_maker", "maker_id");
            $this->arrMakerId[] = $maker_id;
            $count++;
            print("$");
        }
        print("\n");
    }

    function updateCategoryCount() {
        $objDb = new SC_Helper_DB_Ex();
        $objDb->sfCategory_Count($this->objQuery);
    }

    function updateMakerCount() {
        $objDb = new SC_Helper_DB_Ex();
        $objDb->sfMaker_Count($this->objQuery);
    }

    /** カテゴリ名 91個 */
    var $arrCategoryName = array("Sun"
                         ,"Sirius"
                         ,"Canopus"
                         ,"Arcturus"
                         ,"Alpha Centauri A"
                         ,"Vega"
                         ,"Rigel"
                         ,"Procyon"
                         ,"Achemar"
                         ,"Betelgeuse"
                         ,"Hadar"
                         ,"Capella A"
                         ,"Altair"
                         ,"Aldebaran"
                         ,"Capela B"
                         ,"Spica"
                         ,"Antares"
                         ,"Pollux"
                         ,"Fomalhaut"
                         ,"Deneb"
                         ,"Mimosa"
                         ,"Alpha Centauri B"
                         ,"Regulus"
                         ,"Acrux A"
                         ,"Adara"
                         ,"Shaula"
                         ,"Gacrux"
                         ,"Bellatrix"
                         ,"El Nath"
                         ,"Miaplacidus"
                         ,"Alnilam"
                         ,"Alnitak A"
                         ,"Al Na'ir"
                         ,"Alioth"
                         ,"Gamma2 Velorum A"
                         ,"Kaus Australis"
                         ,"Mirfak"
                         ,"Wezen"
                         ,"Benetnasch"
                         ,"Sargas"
                         ,"Dubhe A"
                         ,"Alhena"
                         ,"Peacock"
                         ,"Atria"
                         ,"Castor A"
                         ,"Murzim"
                         ,"Alphard"
                         ,"Hamal"
                         ,"Polaris"
                         ,"Delta Velorum A"
                         ,"Deneb Kaitos"
                         ,"Saiph"
                         ,"Nunki"
                         ,"Menkent"
                         ,"Alpheratz"
                         ,"Mirach"
                         ,"Kochab"
                         ,"Acrux B"
                         ,"Ras Alhague"
                         ,"Algol"
                         ,"Beta Gruis"
                         ,"Denebola"
                         ,"Naos"
                         ,"Lambda Velorum"
                         ,"Etamin"
                         ,"Gemma A"
                         ,"Sadr"
                         ,"Schedar"
                         ,"Aspidiske"
                         ,"Almach A"
                         ,"Mizar A"
                         ,"Caph"
                         ,"Epsilon Centauri"
                         ,"Algieba A"
                         ,"Alpha Lupi"
                         ,"Dschubba"
                         ,"Wei"
                         ,"Eta Centauri"
                         ,"Merak"
                         ,"Ankaa"
                         ,"Girtab"
                         ,"Gamma Cassiopeiae"
                         ,"Enif"
                         ,"Aludra"
                         ,"Avior A"
                         ,"Scheat"
                         ,"Phecda"
                         ,"Alderamin"
                         ,"Kappa Velorum"
                         ,"Markab"
                         ,"Gienah"
                     );

    /** 規格1 */
    var $arrSize = array("m11(29cm)"
                         ,"m10 1/2(28.5cm)"
                         ,"m10(28cm)"
                         ,"m9 1/2(27.5cm)"
                         ,"m9(27cm)"
                         ,"m8 1/2(26.5cm)"
                         ,"m8(26cm)"
                         ,"43"
                         ,"42"
                         ,"41"
                         ,"43(27.0cm?27.5cm)"
                         ,"42(26.5cm?27.0cm)"
                         ,"37(ladies 23.5?24cm)"
                         ,"42(約27.5cm)"
                         ,"41(約26.5cm)"
                         ,"W36"
                         ,"W34"
                         ,"W32"
                         ,"43"
                         ,"42"
                         ,"41"
                         ,"m11"
                         ,"m10"
                         ,"m9.5"
                         ,"m9"
                         ,"m8"
                         ,"FREE"
                         ,"XS"
                         ,"S"
                         ,"M"
                         ,"L"
                         ,"XL"
                         ,"25-27"
                         ,"27-29"
                         ,"W28"
                         ,"W29"
                         ,"W30"
                         ,"W31"
                         ,"W32"
                         ,"W33"
                         ,"W34"
                         ,"W35"
                         ,"W36"
                         ,"4"
                         ,"6"
                         ,"8"
                         ,"10"
                         ,"12"
                         ,"10cm"
                         ,"12cm"
                         ,"14cm"
                         ,"16cm"
                         ,"18cm"
                         ,"20cm"
                         ,"22cm"
                         ,"24cm"
                         ,"26cm"
                         ,"28cm"
                         ,"30cm"
                         ,"32cm"
                         ,"34cm"
                         ,"36cm"
                         ,"38cm"
                         ,"40cm"
                         ,"10g"
                         ,"20g"
                         ,"30g"
                         ,"40g"
                         ,"50g"
                         ,"60g"
                         ,"70g"
                         ,"80g"
                         ,"90g"
                         ,"100g"
                         ,"110g"
                         ,"120g"
                         ,"130g"
                         ,"140g"
                         ,"150g"
                         ,"160g"
                         ,"170g"
                         ,"180g"
                         ,"190g"
                         ,"200g"
                         ,"8inch"
                         ,"10inch"
                         ,"12inch"
                         ,"14inch"
                         ,"16inch"
                         ,"18inch"
                         ,"20inch"
                         ,"22inch"
                         ,"24inch"
                         ,"26inch"
                         ,"28inch"
                         ,"30inch"
                         ,"32inch"
                         ,"34inch"
                         ,"36inch"
                         ,"38inch"
                    );

    /** 規格2 */
    var $arrColor = array("white"
                         ,"whitesmoke"
                         ,"snow"
                         ,"ghostwhite"
                         ,"mintcream"
                         ,"azure"
                         ,"ivory"
                         ,"floralwhite"
                         ,"aliceblue"
                         ,"lavenderblush"
                         ,"seashell"
                         ,"honeydew"
                         ,"lightyellow"
                         ,"oldlace"
                         ,"cornsilk"
                         ,"linen"
                         ,"lemonchiffon"
                         ,"lavender"
                         ,"beige"
                         ,"lightgoldenrodyellow"
                         ,"mistyrose"
                         ,"papayawhip"
                         ,"antiquewhite"
                         ,"lightcyan"
                         ,"cyan"
                         ,"aqua"
                         ,"darkcyan"
                         ,"teal"
                         ,"darkslategray"
                         ,"turquoise"
                         ,"paleturquoise"
                         ,"mediumturquoise"
                         ,"aquamarine"
                         ,"gainsboro"
                         ,"lightgray"
                         ,"silver"
                         ,"darkgray"
                         ,"gray"
                         ,"dimgray"
                         ,"black"
                         ,"powderblue"
                         ,"lightblue"
                         ,"lightskyblue"
                         ,"skyblue"
                         ,"darkturquoise"
                         ,"deepskyblue"
                         ,"dodgerblue"
                         ,"royalblue"
                         ,"cornflowerblue"
                         ,"cadetblue"
                         ,"lightsteelblue"
                         ,"steelblue"
                         ,"lightslategray"
                         ,"slategray"
                         ,"blue"
                         ,"mediumblue"
                         ,"darkblue"
                         ,"navy"
                         ,"midnightblue"
                         ,"lightsalmon"
                         ,"darksalmon"
                         ,"salmon"
                         ,"tomato"
                         ,"lightcoral"
                         ,"coral"
                         ,"crimson"
                         ,"red"
                         ,"mediumorchid"
                         ,"mediumpurple"
                         ,"mediumslateblue"
                         ,"slateblue"
                         ,"blueviolet"
                         ,"darkviolet"
                         ,"darkorchid"
                         ,"darkslateblue"
                         ,"darkorchid"
                         ,"thistle"
                         ,"plum"
                         ,"violet"
                         ,"magenta"
                         ,"fuchsia"
                         ,"darkmagenta"
                         ,"purple"
                         ,"palegreen"
                         ,"lightgreen"
                         ,"lime"
                         ,"limegreen"
                         ,"forestgreen"
                         ,"green"
                         ,"darkgreen"
                         ,"greenyellow"
                         ,"chartreuse"
                         ,"lawngreen"
                         ,"yellowgreen"
                         ,"olivedrab"
                         ,"darkolivegreen"
                         ,"mediumaquamarine"
                         ,"mediumspringgreen"
                         ,"springgreen"
                         ,"darkseagreen"
                     );

    /** メーカー */
    var $arrMakerName = array("日水"
                         ,"マルハニチロ"
                         ,"サカタのタネ"
                         ,"キリン"
                         ,"アサヒ"
                         ,"味の素"
                         ,"日本ハム"
                         ,"サッポロ"
                         ,"山崎パン"
                         ,"ニチレイ"
                         ,"日清"
                         ,"キューピー"
                         ,"キッコーマン"
                         ,"森永"
                         ,"ヤクルト"
                         ,"ダイワボウ"
                         ,"日清紡"
                         ,"ワコール"
                         ,"レナウン"
                         ,"武田薬品"
                         ,"資生堂"
                         ,"花王"
                         ,"塩野義薬"
                         ,"ブリヂストン"
                         ,"横浜ゴム"
                         ,"三洋電機"
                         ,"NEC"
                         ,"東芝"
                         ,"日立"
                         ,"富士通"
                         ,"シャープ"
                         ,"パイオニア"
                         ,"パナソニック"
                         ,"ソニー"
                         ,"マツダ"
                         ,"いすゞ"
                         ,"日産"
                         ,"ホンダ"
                         ,"トヨタ"
                         ,"ヤマハ"
                         ,"スズキ"
                         ,"ダイハツ"
                         ,"ニコン"
                         ,"シチズン"
                         ,"オリンパス"
                         ,"セイコー"
                         ,"任天堂"
                         ,"河合楽器"
                         ,"タカラ"
                         ,"富士フイルム"
                     );

}

// }}}
?>


----------------

リゾート会員権(エクシブ等)の売買・仲介

ramrun
投稿日時: 2010/2/10 16:45
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: テストデータ生成スクリプトについて
できたようで良かったです。

変更すべきあたりに色を付けておきました。
あとPostgreSQLで試したらエラーになっているところがあったので修正(汗)。
forthety
投稿日時: 2010/2/10 14:38
対応状況: −−−
半人前
登録日: 2010/1/19
居住地:
投稿: 14
Re: テストデータ生成スクリプトについて
ramrun様

 すみません。本当に初歩的なミスでした。
 DBへのログインID及びパスワードを変更しておりませんでした。
 正常に動作し、サンプルを作成することができました。

 色々お手数をお掛けいたしましたこと、心よりお詫び申し上げます。
 これに懲りられることなく、また分からないことが出てまいりましたら、よろしくご教授くださいますよう、お願い申し上げます。
forthety
投稿日時: 2010/2/10 13:08
対応状況: −−−
半人前
登録日: 2010/1/19
居住地:
投稿: 14
Re: テストデータ生成スクリプトについて
ramrun様
大変ご丁寧にご教授くださり、誠にありがとうございます。

当方ではxampp1.7.1をDドライブ直下にインストールしておりますので、ご指摘のCドライブの部分をDドライブに変更して実行してみたところ、コマンドプロンプトには「DB Error : connect failed」と表示されます。

どこか他に設定を変更しなければならないのでしょうか?
本当に基本的な質問ばかりで恐縮ですが、何卒よろしくお願い申し上げます。
ramrun
投稿日時: 2010/2/9 22:56
対応状況: −−−
仙人
登録日: 2006/11/3
居住地:
投稿: 789
Re: テストデータ生成スクリプトについて
昔、作ったような気がしたので探してみました。

たしかPostgreSQL用でMySQLだとエラーがでていたので、そのあたりをいじっていたと思います。
それと、コミュ版で試すのにメーカーを追加したりとか、ちょこちょこといじってますので、気になる人は差分を取ってください。

下記はメーカーの部分を///でコメントアウトしているので、コミュ版で試す際は///を検索して外してください(4ヵ所)。

#!/usr/bin/php -q
<?php
/*
 * EC-CUBE データ生成スクリプト
 *
 * Copyright(c) 2000-2008 LOCKON CO.,LTD. All Rights Reserved.
 *
 * http://www.lockon.co.jp/
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * @auther Kentaro Ohkouchi
 * @version $Id$
 */

// {{{ requires
require_once("./data/module/DB.php");

// }}}
// {{{ constants

/** データベース種別 */
define("DB_TYPE", "mysql");
/** DBホスト */
define("DB_SERVER", "localhost");
/** DBポート */
define("DB_PORT", "");
/** DB名 */
define("DB_NAME", "eccube_db");
/** DBユーザー */
define("DB_USER", "eccube_db_user");
/** DBパスワード */
define("DB_PASSWORD", "password");

/** データソース名 */
define ("DEFAULT_DSN",
        DB_TYPE . "://" . DB_USER . ":" . DB_PASSWORD . "@"
                    . DB_SERVER . ":" .DB_PORT . "/" . DB_NAME);

/** 大カテゴリ数 x 中カテゴリ数 x 小カテゴリ数 < 91 となるように */
/** 大カテゴリの生成数 */
define("TOP_CATEGORIES_VOLUME", 10);

/** 中カテゴリの生成数 */
define("MIDDLE_CATEGORIES_VOLUME", 2);

/** 小カテゴリの生成数 */
define("SMALL_CATEGORIES_VOLUME", 3);

/** 規格1の生成数 */
define("CLASSCATEGORY1_VOLUME", 3);

/** 規格2の生成数 */
define("CLASSCATEGORY2_VOLUME", 5);

/** 商品の生成数 */
define("PRODUCTS_VOLUME", 200);

/** 1つの商品を最大いくつのカテゴリに登録させるか */
define("MAX_PRODUCTS_CATEGORIES", 3);

// }}}
// {{{ Logic -------------------------------------

$objData = new CreateEcCubeData();
$start = microtime(true);

$objData->objQuery->begin();
$objData->deleteItems();               // 既存テーブルのデータ削除
$objData->createCategories();          // カテゴリ生成
$objData->createClassData();           // 規格生成
///$objData->createMaker();             // メーカー生成
$objData->createProducts();            // 商品生成
$objData->relateClass();               // 商品と規格の関連づけ
$objData->relateProductsCategories();  // 商品とカテゴリの関連づけ
$objData->objQuery->commit();

$end = microtime(true);
print("データの生成が完了しました!\n");
printf("所要時間 %f 秒\n", $end - $start);

// }}}
// {{{ classes -----------------------------------

/**
 * EC-CUBE のデータを生成する
 */
class CreateEcCubeData {

    /** SC_Query インスタンス */
    var $objQuery;

    /** 大カテゴリID の配列 */
    var $arrCategory1  = array();

    /** 中カテゴリID の配列 */
    var $arrCategory2  = array();

    /** 小カテゴリID の配列 */
    var $arrCategory3  = array();

    /** 規格1 */
    var $arrClassCategory_id1 = array();

    /** 規格2 */
    var $arrClassCategory_id2 = array();

    /**
     * コンストラクタ.
     */
    function CreateEcCubeData() {
        $this->objQuery = new SC_Query();
    }

    function deleteItems() {
        print("既存の商品データを削除しています...\n");

        $this->objQuery->delete("dtb_category_total_count");
        $this->objQuery->delete("dtb_category_count");

        $this->objQuery->delete("dtb_category");              // カテゴリ
        $this->objQuery->delete("dtb_product_categories");    //  |
        $this->objQuery->delete("dtb_products");              // 商品
        $this->objQuery->delete("dtb_products_class");        //  |
        $this->objQuery->delete("dtb_classcategory");         //  |
        $this->objQuery->delete("dtb_class");                 // 規格

///      $this->objQuery->delete("dtb_maker");
///      $this->objQuery->delete("dtb_maker_count");
    }

    /**
     * カテゴリを生成する.
     *
     * 以下のように, ツリー状のカテゴリを生成する
     *
     *  大カテゴリ -- 中カテゴリ -- 小カテゴリ
     *             |             |- 小カテゴリ
     *             |             |- 小カテゴリ
     *             |
     *             |- 中カテゴリ -- 小カテゴリ
     *                            |- 小カテゴリ
     *                            |- 小カテゴリ
     * @return void
     */
    function createCategories() {

        print("カテゴリを生成しています...\n");

        $count = TOP_CATEGORIES_VOLUME 
               + TOP_CATEGORIES_VOLUME * MIDDLE_CATEGORIES_VOLUME 
               + TOP_CATEGORIES_VOLUME * MIDDLE_CATEGORIES_VOLUME * SMALL_CATEGORIES_VOLUME;

        // 全カテゴリ共通の値
        $sqlval['creator_id'] = 2;
        $sqlval['create_date'] = "now()";
        $sqlval['update_date'] = "now()";
        $sqlval['del_flg'] = (string) "0";

        $m = 0;
        $n = 0;
        // 大カテゴリを生成
        for ($i = 0; $i < TOP_CATEGORIES_VOLUME; $i++) {
            $sqlval['category_name'] = $this->arrCategoryName[$i];
            $sqlval['parent_category_id'] = (string) "0";
            $sqlval['level'] = 1;
            $sqlval['rank'] = $count;

            $this->objQuery->insert("dtb_category", $sqlval);
            $category_id1 = $this->objQuery->currval("dtb_category", "category_id");
            $this->arrCategory1[] = $category_id1;
            $count--;
            print(".");

            // 中カテゴリを生成
            for ($j = 0; $j < mt_rand(1, MIDDLE_CATEGORIES_VOLUME); $j++) {
                $sqlval['category_name'] = $this->arrCategoryName[$m++ + TOP_CATEGORIES_VOLUME];
                $sqlval['parent_category_id'] = (string) $category_id1;
                $sqlval['level'] = 2;
                $sqlval['rank'] = $count;

                $this->objQuery->insert("dtb_category", $sqlval);
                $category_id2 = $this->objQuery->currval("dtb_category", "category_id");
                $this->arrCategory2[] = $category_id2;
                $count--;
                print(".");

                // 小カテゴリを生成
                for ($k = 0; $k < mt_rand(1, SMALL_CATEGORIES_VOLUME); $k++) {
                    $sqlval['category_name'] = $this->arrCategoryName[$n++ + TOP_CATEGORIES_VOLUME + MIDDLE_CATEGORIES_VOLUME];
                    $sqlval['parent_category_id'] = (string) $category_id2;
                    $sqlval['level'] = 3;
                    $sqlval['rank'] = $count;

                    $this->objQuery->insert("dtb_category", $sqlval);
                    $category_id3 = $this->objQuery->currval("dtb_category", "category_id");
                    $this->arrCategory3[] = $category_id3;
                    $count--;
                    print(".");
                }
            }
        }
        print("\n");
    }

    /**
     * 規格を生成する.
     *
     * @return void
     */
    function createClassData() {
        // 規格データ生成
        print("規格データを生成しています...\n");
        $this->createClass("Size");
        $this->createClass("Color");
        print("\n");

        // 規格分類データ生成
        print("規格分類データを生成しています...\n");

        // 規格1
        for ($i = 0; $i < CLASSCATEGORY1_VOLUME; $i++) {
            $this->createClassCategory($this->arrSize[$i], $this->arrclass_id[0], "size");
        }

        // 規格2
        for ($i = 0; $i < CLASSCATEGORY2_VOLUME; $i++) {
            $this->createClassCategory($this->arrColor[$i], $this->arrclass_id[1], "color");
        }
        print("\n");
    }

    /**
     * 商品と規格の関連づけを行う.
     *
     * @return void
     */
    function relateClass() {

        print("商品と規格の関連づけを行います...\n");

        foreach ($this->arrProduct_id as $product_id) {
            $this->createProductsClass($product_id);
        }
        print("\n");
    }

    /**
     * 商品を生成する.
     *
     * @return void
     */
    function createProducts() {

        print("商品を生成しています...\n");
        for ($i = 0; $i < PRODUCTS_VOLUME; $i++) {
            $sqlval['name'] = sprintf("商品%d", $i);
            //$sqlval['deliv_fee'];
            //$sqlval['sale_limit'] = 1;
            $sqlval['sale_unlimited'] = 1;
            //$sqlval['category_id'];
///         $sqlval['maker_id'] = mt_rand(min($this->arrMakerId), max($this->arrMakerId));
            //$sqlval['rank'];
            $sqlval['status'] = 1;
            $sqlval['product_flag'] = "10010";
            $sqlval['point_rate'] = (string) mt_rand(0, 3);
            //$sqlval['comment1'];
            //$sqlval['comment2'];
            $sqlval['comment3'] = "コメント";
            //$sqlval['comment4'];
            //$sqlval['comment5'];
            //$sqlval['comment6'];
            //$sqlval['note'];
            //$sqlval['file1'];
            //$sqlval['file2'];
            //$sqlval['file3'];
            //$sqlval['file4'];
            //$sqlval['file5'];
            //$sqlval['file6'];
            $sqlval['main_list_comment'] = "商品一覧コメント";
            $sqlval['main_list_image'] = "08311201_44f65122ee5fe.jpg";
            $sqlval['main_comment'] = "詳細メインコメント";
            $sqlval['main_image'] = "08311202_44f6515906a41.jpg";
            $sqlval['main_large_image'] = "08311203_44f651959bcb5.jpg";
            $sqlval['sub_title1'] = "詳細サブタイトル1";
            $sqlval['sub_comment1'] = "詳細サブコメント1";
            //$sqlval['sub_image1'];
            //$sqlval['sub_large_image1'];
            //$sqlval['sub_title2'];
            //$sqlval['sub_comment2'];
            //$sqlval['sub_image2'];
            //$sqlval['sub_large_image2'];
            //$sqlval['sub_title3'];
            //$sqlval['sub_comment3'];
            //$sqlval['sub_image3'];
            //$sqlval['sub_large_image3'];
            //$sqlval['sub_title4'];
            //$sqlval['sub_comment4'];
            //$sqlval['sub_image4'];
            //$sqlval['sub_large_image4'];
            //$sqlval['sub_title5'];
            //$sqlval['sub_comment5'];
            //$sqlval['sub_image5'];
            //$sqlval['sub_large_image5'];
            //$sqlval['sub_title6'];
            //$sqlval['sub_comment6'];
            //$sqlval['sub_image6'];
            //$sqlval['sub_large_image6'];
            $sqlval['del_flg'] = (string) "0";
            $sqlval['creator_id'] = 2;
            $sqlval['create_date'] = "now()";
            $sqlval['update_date'] = "now()";
            $sqlval['deliv_date_id'] = 2;

            $this->objQuery->insert("dtb_products", $sqlval);
            $this->arrProduct_id[] = $this->objQuery->currval("dtb_products", "product_id");
            print("*");
        }
    }

    /**
     * 規格を生成する.
     *
     * @param $class_name string 規格名
     * @return void
     */
    function createClass($class_name) {
        $sqlval['name'] = $class_name;
        $sqlval['status'] = null;
        $rank = $this->objQuery->getOne(
            "SELECT CASE
                     WHEN max(rank) + 1 IS NULL THEN 1
                     ELSE max(rank) + 1
                   END
              FROM dtb_class
             WHERE del_flg = 0");
        $sqlval['rank'] = $rank;
        $sqlval['creator_id'] = 2;
        $sqlval['update_date'] = "now()";
        $sqlval['del_flg'] = (string) "0";
        $sqlval['product_id'] = null;

        $this->objQuery->insert("dtb_class", $sqlval);

        // class_idを取得
        $this->arrclass_id[] = $this->objQuery->currval("dtb_class", "class_id");
        print("+");
    }

    /**
     * 規格分類を生成する.
     *
     * @param $classcategory_name string 規格名
     * @return void
     */
    function createClassCategory($classcategory_name, $class_id, $class_name) {
        $sqlval['name'] = $classcategory_name;
        $sqlval['class_id'] = $class_id;
        $sqlval['status'] = null;
        $rank = $this->objQuery->getOne(
            "SELECT CASE
                     WHEN max(rank) + 1 IS NULL THEN 1
                     ELSE max(rank) + 1
                   END
              FROM dtb_classcategory
             WHERE del_flg = 0
               AND class_id = " . $class_id);
        $sqlval['rank'] = $rank;
        $sqlval['creator_id'] = 2;
        $sqlval['create_date'] = "now()";
        $sqlval['update_date'] = "now()";
        $sqlval['del_flg'] = (string) "0";

        $this->objQuery->insert("dtb_classcategory", $sqlval);

        switch ($class_name) {
        case "size":
            $this->arrClassCategory_id1[] =
                $this->objQuery->currval("dtb_classcategory", "classcategory_id");
            break;

        case "color":
            $this->arrClassCategory_id2[] =
                $this->objQuery->currval("dtb_classcategory", "classcategory_id");
            break;
        default:
        }
        print("+");
    }

    /**
     * 商品規格を生成する.
     *
     * @param integer $product_id 商品ID
     * @return void
     */
    function createProductsClass($product_id) {

        printf("商品ID %d の商品規格を生成しています...\n", $product_id);

        $sqlval['product_id'] = $product_id;
        $sqlval['classcategory_id1'] = (string) "0";
        $sqlval['classcategory_id2'] = (string) "0";
        $sqlval['stock_unlimited'] = 1;
        $sqlval['price01'] = mt_rand(10, 10000);
        $sqlval['price02'] = mt_rand($sqlval['price01'], $sqlval['price01'] * 2);
        $sqlval['creator_id'] = 2;
        $sqlval['create_date'] = "now()";
        $sqlval['update_date'] = "now()";

        $hasClassCategory_id1 = mt_rand(0, 1);
        $hasClassCategory_id2 = mt_rand(0, 2);

        if (!$hasClassCategory_id1) {
            $sqlval['product_code'] = sprintf("商品コード%d-%d", $product_id, $count);
            $this->objQuery->insert("dtb_products_class", $sqlval);
            print("#");
        } else {
            $count = 0;
            foreach ($this->arrClassCategory_id1 as $classCategory_id1) {
                $sqlval['classcategory_id1'] = $classCategory_id1;

                if (!$hasClassCategory_id2) {
                    $sqlval['product_code'] = sprintf("商品コード%d-%d", $product_id, $count);

                    $this->objQuery->insert("dtb_products_class", $sqlval);
                    $count++;
                    print("#");
                } else {
                    foreach ($this->arrClassCategory_id2 as $classCategory_id2) {
                        $sqlval['classcategory_id2'] = $classCategory_id2;
                        $sqlval['product_code'] = sprintf("商品コード%d-%d", $product_id, $count);

                        $this->objQuery->insert("dtb_products_class", $sqlval);
                        $count++;
                        print("#");
                    }
                }
            }
        }
        print("\n");
    }

    /**
     * 商品とカテゴリの関連づけを行う.
     *
     * @return void
     */
    function relateProductsCategories() {

        print("商品とカテゴリの関連づけを行います...\n");
        $this->createProductsCategories(
            array_merge(
                $this->arrCategory1
               ,$this->arrCategory2
               ,$this->arrCategory3));
    }

    /**
     * 商品カテゴリを生成する.
     *
     * @param array $arrCategory_id カテゴリID の配列
     * @return void
     */
    function createProductsCategories($arrCategory_id) {

        printf("%s の商品カテゴリを生成しています...\n");

        $arrRank = array();

        foreach ($this->arrProduct_id as $product_id) {
            $sqlval['product_id'] = $product_id;

            shuffle($arrCategory_id);
            $esta = mt_rand(1, MAX_PRODUCTS_CATEGORIES);

            for ($i = 0; $i < $esta; $i++) {
                $sqlval['category_id'] = $arrCategory_id[$i];
                $arrRank[$sqlval['category_id']]++;
                $sqlval['rank'] = $arrRank[$sqlval['category_id']];

                $this->objQuery->insert("dtb_product_categories", $sqlval);
                print("$");
            }
        }
    }

    /**
     * メーカーを生成する.
     *
     * @return void
     */
    function createMaker() {

        print("メーカーを生成しています...\n");

        $sqlval['creator_id'] = 2;
        $sqlval['create_date'] = "now()";
        $sqlval['update_date'] = "now()";
        $sqlval['del_flg'] = (string) "0";

        $count = 1;
        foreach ($this->arrMakerName as $makerName) {
            $sqlval['name'] = $makerName;
            $sqlval['rank'] = $count;
            $this->objQuery->insert("dtb_maker", $sqlval);
            $maker_id = $this->objQuery->currval("dtb_maker", "maker_id");
            $this->arrMakerId[] = $maker_id;
            $count++;
            print("$");
        }
        print("\n");
    }

    /** カテゴリ名 91個 */
    var $arrCategoryName = array("Sun"
                         ,"Sirius"
                         ,"Canopus"
                         ,"Arcturus"
                         ,"Alpha Centauri A"
                         ,"Vega"
                         ,"Rigel"
                         ,"Procyon"
                         ,"Achemar"
                         ,"Betelgeuse"
                         ,"Hadar"
                         ,"Capella A"
                         ,"Altair"
                         ,"Aldebaran"
                         ,"Capela B"
                         ,"Spica"
                         ,"Antares"
                         ,"Pollux"
                         ,"Fomalhaut"
                         ,"Deneb"
                         ,"Mimosa"
                         ,"Alpha Centauri B"
                         ,"Regulus"
                         ,"Acrux A"
                         ,"Adara"
                         ,"Shaula"
                         ,"Gacrux"
                         ,"Bellatrix"
                         ,"El Nath"
                         ,"Miaplacidus"
                         ,"Alnilam"
                         ,"Alnitak A"
                         ,"Al Na'ir"
                         ,"Alioth"
                         ,"Gamma2 Velorum A"
                         ,"Kaus Australis"
                         ,"Mirfak"
                         ,"Wezen"
                         ,"Benetnasch"
                         ,"Sargas"
                         ,"Dubhe A"
                         ,"Alhena"
                         ,"Peacock"
                         ,"Atria"
                         ,"Castor A"
                         ,"Murzim"
                         ,"Alphard"
                         ,"Hamal"
                         ,"Polaris"
                         ,"Delta Velorum A"
                         ,"Deneb Kaitos"
                         ,"Saiph"
                         ,"Nunki"
                         ,"Menkent"
                         ,"Alpheratz"
                         ,"Mirach"
                         ,"Kochab"
                         ,"Acrux B"
                         ,"Ras Alhague"
                         ,"Algol"
                         ,"Beta Gruis"
                         ,"Denebola"
                         ,"Naos"
                         ,"Lambda Velorum"
                         ,"Etamin"
                         ,"Gemma A"
                         ,"Sadr"
                         ,"Schedar"
                         ,"Aspidiske"
                         ,"Almach A"
                         ,"Mizar A"
                         ,"Caph"
                         ,"Epsilon Centauri"
                         ,"Algieba A"
                         ,"Alpha Lupi"
                         ,"Dschubba"
                         ,"Wei"
                         ,"Eta Centauri"
                         ,"Merak"
                         ,"Ankaa"
                         ,"Girtab"
                         ,"Gamma Cassiopeiae"
                         ,"Enif"
                         ,"Aludra"
                         ,"Avior A"
                         ,"Scheat"
                         ,"Phecda"
                         ,"Alderamin"
                         ,"Kappa Velorum"
                         ,"Markab"
                         ,"Gienah"
                     );

    /** 規格1 */
    var $arrSize = array("m11(29cm)"
                         ,"m10 1/2(28.5cm)"
                         ,"m10(28cm)"
                         ,"m9 1/2(27.5cm)"
                         ,"m9(27cm)"
                         ,"m8 1/2(26.5cm)"
                         ,"m8(26cm)"
                         ,"43"
                         ,"42"
                         ,"41"
                         ,"43(27.0cm?27.5cm)"
                         ,"42(26.5cm?27.0cm)"
                         ,"37(ladies 23.5?24cm)"
                         ,"42(約27.5cm)"
                         ,"41(約26.5cm)"
                         ,"W36"
                         ,"W34"
                         ,"W32"
                         ,"43"
                         ,"42"
                         ,"41"
                         ,"m11"
                         ,"m10"
                         ,"m9.5"
                         ,"m9"
                         ,"m8"
                         ,"FREE"
                         ,"XS"
                         ,"S"
                         ,"M"
                         ,"L"
                         ,"XL"
                         ,"25-27"
                         ,"27-29"
                         ,"W28"
                         ,"W29"
                         ,"W30"
                         ,"W31"
                         ,"W32"
                         ,"W33"
                         ,"W34"
                         ,"W35"
                         ,"W36"
                         ,"4"
                         ,"6"
                         ,"8"
                         ,"10"
                         ,"12"
                         ,"10cm"
                         ,"12cm"
                         ,"14cm"
                         ,"16cm"
                         ,"18cm"
                         ,"20cm"
                         ,"22cm"
                         ,"24cm"
                         ,"26cm"
                         ,"28cm"
                         ,"30cm"
                         ,"32cm"
                         ,"34cm"
                         ,"36cm"
                         ,"38cm"
                         ,"40cm"
                         ,"10g"
                         ,"20g"
                         ,"30g"
                         ,"40g"
                         ,"50g"
                         ,"60g"
                         ,"70g"
                         ,"80g"
                         ,"90g"
                         ,"100g"
                         ,"110g"
                         ,"120g"
                         ,"130g"
                         ,"140g"
                         ,"150g"
                         ,"160g"
                         ,"170g"
                         ,"180g"
                         ,"190g"
                         ,"200g"
                         ,"8inch"
                         ,"10inch"
                         ,"12inch"
                         ,"14inch"
                         ,"16inch"
                         ,"18inch"
                         ,"20inch"
                         ,"22inch"
                         ,"24inch"
                         ,"26inch"
                         ,"28inch"
                         ,"30inch"
                         ,"32inch"
                         ,"34inch"
                         ,"36inch"
                         ,"38inch"
                    );

    /** 規格2 */
    var $arrColor = array("white"
                         ,"whitesmoke"
                         ,"snow"
                         ,"ghostwhite"
                         ,"mintcream"
                         ,"azure"
                         ,"ivory"
                         ,"floralwhite"
                         ,"aliceblue"
                         ,"lavenderblush"
                         ,"seashell"
                         ,"honeydew"
                         ,"lightyellow"
                         ,"oldlace"
                         ,"cornsilk"
                         ,"linen"
                         ,"lemonchiffon"
                         ,"lavender"
                         ,"beige"
                         ,"lightgoldenrodyellow"
                         ,"mistyrose"
                         ,"papayawhip"
                         ,"antiquewhite"
                         ,"lightcyan"
                         ,"cyan"
                         ,"aqua"
                         ,"darkcyan"
                         ,"teal"
                         ,"darkslategray"
                         ,"turquoise"
                         ,"paleturquoise"
                         ,"mediumturquoise"
                         ,"aquamarine"
                         ,"gainsboro"
                         ,"lightgray"
                         ,"silver"
                         ,"darkgray"
                         ,"gray"
                         ,"dimgray"
                         ,"black"
                         ,"powderblue"
                         ,"lightblue"
                         ,"lightskyblue"
                         ,"skyblue"
                         ,"darkturquoise"
                         ,"deepskyblue"
                         ,"dodgerblue"
                         ,"royalblue"
                         ,"cornflowerblue"
                         ,"cadetblue"
                         ,"lightsteelblue"
                         ,"steelblue"
                         ,"lightslategray"
                         ,"slategray"
                         ,"blue"
                         ,"mediumblue"
                         ,"darkblue"
                         ,"navy"
                         ,"midnightblue"
                         ,"lightsalmon"
                         ,"darksalmon"
                         ,"salmon"
                         ,"tomato"
                         ,"lightcoral"
                         ,"coral"
                         ,"crimson"
                         ,"red"
                         ,"mediumorchid"
                         ,"mediumpurple"
                         ,"mediumslateblue"
                         ,"slateblue"
                         ,"blueviolet"
                         ,"darkviolet"
                         ,"darkorchid"
                         ,"darkslateblue"
                         ,"darkorchid"
                         ,"thistle"
                         ,"plum"
                         ,"violet"
                         ,"magenta"
                         ,"fuchsia"
                         ,"darkmagenta"
                         ,"purple"
                         ,"palegreen"
                         ,"lightgreen"
                         ,"lime"
                         ,"limegreen"
                         ,"forestgreen"
                         ,"green"
                         ,"darkgreen"
                         ,"greenyellow"
                         ,"chartreuse"
                         ,"lawngreen"
                         ,"yellowgreen"
                         ,"olivedrab"
                         ,"darkolivegreen"
                         ,"mediumaquamarine"
                         ,"mediumspringgreen"
                         ,"springgreen"
                         ,"darkseagreen"
                     );

    /** メーカー */
    var $arrMakerName = array("日水"
                         ,"マルハニチロ"
                         ,"サカタのタネ"
                         ,"キリン"
                         ,"アサヒ"
                         ,"味の素"
                         ,"日本ハム"
                         ,"サッポロ"
                         ,"山崎パン"
                         ,"ニチレイ"
                         ,"日清"
                         ,"キューピー"
                         ,"キッコーマン"
                         ,"森永"
                         ,"ヤクルト"
                         ,"ダイワボウ"
                         ,"日清紡"
                         ,"ワコール"
                         ,"レナウン"
                         ,"武田薬品"
                         ,"資生堂"
                         ,"花王"
                         ,"塩野義薬"
                         ,"ブリヂストン"
                         ,"横浜ゴム"
                         ,"三洋電機"
                         ,"NEC"
                         ,"東芝"
                         ,"日立"
                         ,"富士通"
                         ,"シャープ"
                         ,"パイオニア"
                         ,"パナソニック"
                         ,"ソニー"
                         ,"マツダ"
                         ,"いすゞ"
                         ,"日産"
                         ,"ホンダ"
                         ,"トヨタ"
                         ,"ヤマハ"
                         ,"スズキ"
                         ,"ダイハツ"
                         ,"ニコン"
                         ,"シチズン"
                         ,"オリンパス"
                         ,"セイコー"
                         ,"任天堂"
                         ,"河合楽器"
                         ,"タカラ"
                         ,"富士フイルム"
                     );

}

/**
 * クエリを生成して実行する.
 *
 * (EC-CUBE からの移植)
 */
class SC_Query {
    var $option;
    var $where;
    var $conn;
    var $groupby;
    var $order;

    // コンストラクタ
    /*
        $err_disp:エラー表示を行うか
        $new:新規に接続を行うか
     */
    function SC_Query($dsn = "", $err_disp = true, $new = false) {
        $this->conn = new SC_DbConn($dsn, $err_disp, $new);
        $this->where = "";
        return $this->conn;
    }

    // エラー判定
    function isError() {
        if(PEAR::isError($this->conn->conn)) {
            return true;
        }
        return false;
    }

    // COUNT文の実行
    function count($table, $where = "", $arrval = array()) {
        if(strlen($where) <= 0) {
            $sqlse = "SELECT COUNT(*) FROM $table";
        } else {
            $sqlse = "SELECT COUNT(*) FROM $table WHERE $where";
        }
        // カウント文の実行
        $ret = $this->conn->getOne($sqlse, $arrval);
        return $ret;
    }

    function select($col, $table, $where = "", $arrval = array()){
        $sqlse = $this->getsql($col, $table, $where);
        $ret = $this->conn->getAll($sqlse, $arrval);
        return $ret;
    }

    function getLastQuery($disp = true) {
        $sql = $this->conn->conn->last_query;
        if($disp) {
            print($sql.";<br />\n");
        }
        return $sql;
    }

    function commit() {
        $this->conn->query("COMMIT");
    }

    function begin() {
        $this->conn->query("BEGIN");
    }

    function rollback() {
        $this->conn->query("ROLLBACK");
    }

    function exec($str, $arrval = array()) {
        $this->conn->query($str, $arrval);
    }

    function autoselect($col, $table, $arrwhere = array(), $arrcon = array()) {
        $strw = "";
        $find = false;
        foreach ($arrwhere as $key => $val) {
            if(strlen($val) > 0) {
                if(strlen($strw) <= 0) {
                    $strw .= $key ." LIKE ?";
                } else if(strlen($arrcon[$key]) > 0) {
                    $strw .= " ". $arrcon[$key]. " " . $key ." LIKE ?";
                } else {
                    $strw .= " AND " . $key ." LIKE ?";
                }

                $arrval[] = $val;
            }
        }

        if(strlen($strw) > 0) {
            $sqlse = "SELECT $col FROM $table WHERE $strw ".$this->option;
        } else {
            $sqlse = "SELECT $col FROM $table ".$this->option;
        }
        $ret = $this->conn->getAll($sqlse, $arrval);
        return $ret;
    }

    function getall($sql, $arrval = array()) {
        $ret = $this->conn->getAll($sql, $arrval);
        return $ret;
    }

    function getsql($col, $table, $where) {
        if($where != "") {
            // 引数の$whereを優先して実行する。
            $sqlse = "SELECT $col FROM $table WHERE $where " . $this->groupby . " " . $this->order . " " . $this->option;
        } else {
            if($this->where != "") {
                    $sqlse = "SELECT $col FROM $table WHERE $this->where " . $this->groupby . " " . $this->order . " " . $this->option;
                } else {
                    $sqlse = "SELECT $col FROM $table " . $this->groupby . " " . $this->order . " " . $this->option;
            }
        }
        return $sqlse;
    }

    function setoption($str) {
        $this->option = $str;
    }

    function setlimitoffset($limit, $offset = 0, $return = false) {
        if (is_numeric($limit) && is_numeric($offset)){

            $option = " LIMIT " . $limit;
            $option.= " OFFSET " . $offset;

            if($return){
                return $option;
            }else{
                $this->option.= $option;
            }
        }
    }

    function setgroupby($str) {
        $this->groupby = "GROUP BY " . $str;
    }

    function andwhere($str) {
        if($this->where != "") {
            $this->where .= " AND " . $str;
        } else {
            $this->where = $str;
        }
    }

    function orwhere($str) {
        if($this->where != "") {
            $this->where .= " OR " . $str;
        } else {
            $this->where = $str;
        }
    }

    function setwhere($str) {
        $this->where = $str;
    }

    function setorder($str) {
        $this->order = "ORDER BY " . $str;
    }


    function setlimit($limit){
        if ( is_numeric($limit)){
            $this->option = " LIMIT " .$limit;
        }
    }

    function setoffset($offset) {
        if ( is_numeric($offset)){
            $this->offset = " OFFSET " .$offset;
        }
    }


    // INSERT文の生成・実行
    // $table   :テーブル名
    // $sqlval  :列名 => 値の格納されたハッシュ配列
    function insert($table, $sqlval) {
        $strcol = '';
        $strval = '';
        $find = false;

        if(count($sqlval) <= 0 ) return false;

        foreach ($sqlval as $key => $val) {
            $strcol .= $key . ','; 
            if(eregi("^Now\(\)$", (string) $val)) {
                $strval .= 'Now(),';
            // 先頭に~があるとプレースホルダーしない。
            } else if(ereg("^~", $val)) {
                $strval .= ereg_replace("^~", "", $val);
            } else {
                $strval .= '?,';
                if($val != ""){
                    $arrval[] = $val;
                } else {
                    $arrval[] = NULL;
                }
            }
            $find = true;
        }
        if(!$find) {
            return false;
        }
        // 文末の","を削除
        $strcol = ereg_replace(",$","",$strcol);
        // 文末の","を削除
        $strval = ereg_replace(",$","",$strval);
        $sqlin = "INSERT INTO $table(" . $strcol. ") VALUES (" . $strval . ")";

        // INSERT文の実行
        $ret = $this->conn->query($sqlin, $arrval);

        return $ret;
    }

    // INSERT文の生成・実行
    // $table   :テーブル名
    // $sqlval  :列名 => 値の格納されたハッシュ配列
    function fast_insert($table, $sqlval) {
        $strcol = '';
        $strval = '';
        $find = false;

        foreach ($sqlval as $key => $val) {
                $strcol .= $key . ',';
                if($val != ""){
                    $eval = pg_escape_string($val);
                    $strval .= "'$eval',";
                } else {
                    $strval .= "NULL,";
                }
                $find = true;
        }
        if(!$find) {
            return false;
        }
        // 文末の","を削除
        $strcol = ereg_replace(",$","",$strcol);
        // 文末の","を削除
        $strval = ereg_replace(",$","",$strval);
        $sqlin = "INSERT INTO $table(" . $strcol. ") VALUES (" . $strval . ")";

        // INSERT文の実行
        $ret = $this->conn->query($sqlin);

        return $ret;
    }


    // UPDATE文の生成・実行
    // $table   :テーブル名
    // $sqlval  :列名 => 値の格納されたハッシュ配列
    // $where   :WHERE文字列
    function update($table, $sqlval, $where = "", $arradd = "", $addcol = "") {
        $strcol = '';
        $strval = '';
        $find = false;
        foreach ($sqlval as $key => $val) {
            if(eregi("^Now\(\)$", $val)) {
                $strcol .= $key . '= Now(),';
            // 先頭に~があるとプレースホルダーしない。
            } else if(ereg("^~", $val)) {
                $strcol .= $key . "=" . ereg_replace("^~", "", $val) . ",";
            } else {
                $strcol .= $key . '= ?,';
                if($val != ""){
                    $arrval[] = $val;
                } else {
                    $arrval[] = NULL;
                }
            }
            $find = true;
        }
        if(!$find) {
            return false;
        }

        if($addcol != "") {
            foreach($addcol as $key => $val) {
                $strcol .= "$key = $val,";
            }
        }

        // 文末の","を削除
        $strcol = ereg_replace(",$","",$strcol);
        // 文末の","を削除
        $strval = ereg_replace(",$","",$strval);

        if($where != "") {
            $sqlup = "UPDATE $table SET $strcol WHERE $where";
        } else {
            $sqlup = "UPDATE $table SET $strcol";
        }

        if(is_array($arradd)) {
            // プレースホルダー用に配列を追加
            foreach($arradd as $val) {
                $arrval[] = $val;
            }
        }

        // INSERT文の実行
        $ret = $this->conn->query($sqlup, $arrval);
        return $ret;
    }

    // MAX文の実行
    function max($table, $col, $where = "", $arrval = array()) {
        if(strlen($where) <= 0) {
            $sqlse = "SELECT MAX($col) FROM $table";
        } else {
            $sqlse = "SELECT MAX($col) FROM $table WHERE $where";
        }
        // MAX文の実行
        $ret = $this->conn->getOne($sqlse, $arrval);
        return $ret;
    }

    // MIN文の実行
    function min($table, $col, $where = "", $arrval = array()) {
        if(strlen($where) <= 0) {
            $sqlse = "SELECT MIN($col) FROM $table";
        } else {
            $sqlse = "SELECT MIN($col) FROM $table WHERE $where";
        }
        // MIN文の実行
        $ret = $this->conn->getOne($sqlse, $arrval);
        return $ret;
    }

    // 特定のカラムの値を取得
    function get($table, $col, $where = "", $arrval = array()) {
        if(strlen($where) <= 0) {
            $sqlse = "SELECT $col FROM $table";
        } else {
            $sqlse = "SELECT $col FROM $table WHERE $where";
        }
        // SQL文の実行
        $ret = $this->conn->getOne($sqlse, $arrval);
        return $ret;
    }

    function getone($sql, $arrval = array()) {
        // SQL文の実行
        $ret = $this->conn->getOne($sql, $arrval);
        return $ret;

    }

    // 一行を取得
    function getrow($table, $col, $where = "", $arrval = array()) {
        if(strlen($where) <= 0) {
            $sqlse = "SELECT $col FROM $table";
        } else {
            $sqlse = "SELECT $col FROM $table WHERE $where";
        }
        // SQL文の実行
        $ret = $this->conn->getRow($sqlse, $arrval);

        return $ret;
    }

    // 1列取得
    function getCol($table, $col, $where = "", $arrval = array()) {
        if (strlen($where) <= 0) {
            $sqlse = "SELECT $col FROM $table";
        } else {
            $sqlse = "SELECT $col FROM $table WHERE $where";
        }
        // SQL文の実行
        return $this->conn->getCol($sqlse, $col, $arrval);
    }

    // レコードの削除
    function delete($table, $where = "", $arrval = array()) {
        if(strlen($where) <= 0) {
            $sqlde = "DELETE FROM $table";
        } else {
            $sqlde = "DELETE FROM $table WHERE $where";
        }
        $ret = $this->conn->query($sqlde, $arrval);
        return $ret;
    }

    function nextval($table, $colname) {
        $sql = "";
        // postgresqlとmysqlとで処理を分ける
        if (DB_TYPE == "pgsql") {
            $seqtable = $table . "_" . $colname . "_seq";
            $sql = "SELECT NEXTVAL('$seqtable')";
        }else if (DB_TYPE == "mysql") {
            $sql = "SELECT last_insert_id();";
        }
        $ret = $this->conn->getOne($sql);

        return $ret;
    }

    function currval($table, $colname) {
        $sql = "";
        if (DB_TYPE == "pgsql") {
            $seqtable = $table . "_" . $colname . "_seq";
            $sql = "SELECT CURRVAL('$seqtable')";
        }else if (DB_TYPE == "mysql") {
            $sql = "SELECT last_insert_id();";
        }
        $ret = $this->conn->getOne($sql);

        return $ret;
    }

    function setval($table, $colname, $data) {
        $sql = "";
        if (DB_TYPE == "pgsql") {
            $seqtable = $table . "_" . $colname . "_seq";
            $sql = "SELECT SETVAL('$seqtable', $data)";
            $ret = $this->conn->getOne($sql);
        }else if (DB_TYPE == "mysql") {
            $sql = "ALTER TABLE $table AUTO_INCREMENT=$data";
            $ret = $this->conn->query($sql);
        }

        return $ret;
    }

    function query($n ,$arr = "", $ignore_err = false){
        $result = $this->conn->query($n, $arr, $ignore_err);
        return $result;
    }

    // auto_incrementを取得する
    function get_auto_increment($table_name){
        // ロックする
        $this->query("LOCK TABLES $table_name WRITE");

        // 次のIncrementを取得
        $arrRet = $this->getAll("SHOW TABLE STATUS LIKE ?", array($table_name));
        $auto_inc_no = $arrRet[0]["Auto_increment"];

        // 値をカウントアップしておく
        $this->conn->query("ALTER TABLE $table_name AUTO_INCREMENT=?" , $auto_inc_no + 1);

        // 解除する
        $this->query('UNLOCK TABLES');

        return $auto_inc_no;
    }
}


$objDbConn = "";

/**
 * コネクションを取得する.
 *
 * (EC-CUBE からの移植)
 */
class SC_DbConn{

    var $conn;
    var $dump;
    var $result;
    var $includePath;
    var $error_mail_to;
    var $error_mail_title;
    var $dsn;
    var $err_disp = true;
    var $dbFactory;


    // コンストラクタ
    function SC_DbConn($dsn = "", $err_disp = true, $new = false){

        // Debugモード指定
        $options['debug'] = true;
        // 既に接続されていないか、新規接続要望の場合は接続する。
        if(!isset($objDbConn->connection) || $new) {
            if($dsn != "") {
                $objDbConn = DB::connect($dsn, $options);
                $this->dsn = $dsn;
            } else {
                if(defined('DEFAULT_DSN')) {
                    $objDbConn = DB::connect(DEFAULT_DSN, $options);
                    $this->dsn = DEFAULT_DSN;
                } else {
                    return;
                }
            }
            if(DB::isError($objDbConn)) {
                die($objDbConn->getMessage());
            } else {
                $objDbConn->query("SET NAMES 'utf8'");
            }
        }

        $this->conn = $objDbConn;
        $this->error_mail_to = DB_ERROR_MAIL_TO;
        $this->error_mail_title = DB_ERROR_MAIL_SUBJECT;
        $this->err_disp = $err_disp;
    }

    // クエリの実行
    function query($n ,$arr = "", $ignore_err = false){

        if ( $arr ) {
            $result = $this->conn->query($n, $arr);
        } else {
            $result = $this->conn->query($n);
        }

        if ($this->conn->isError($result) && !$ignore_err){
            $this->send_err_mail ($result, $n);
        }

        $this->result = $result;
        return $this->result;
    }

    // 一件のみ取得
    function getOne($n, $arr = ""){

        if ( $arr ) {
            $result = $this->conn->getOne($n, $arr);
        } else {
            $result = $this->conn->getOne($n);
        }
        if ($this->conn->isError($result)){
            $this->send_err_mail ($result ,$n);
        }
        $this->result = $result;

        return $this->result;
    }

    function getRow($n, $arr = ""){

        if ( $arr ) {
            $result = $this->conn->getRow($n, $arr);
        } else {
            $result = $this->conn->getRow($n);
        }
        if ($this->conn->isError($result)){
            $this->send_err_mail ($result ,$n);
        }
        $this->result = $result;
        return $this->result;
    }

    function getCol($n, $col, $arr = "") {

        if ($arr) {
            $result = $this->conn->getCol($n, $col, $arr);
        } else {
            $result = $this->conn->getCol($n, $col);
        }
        if ($this->conn->isError($result)) {
            $this->send_err_mail($result, $n);
        }
        $this->result = $result;
        return $this->result;
    }

    // SELECT文の実行結果を全て取得
    function getAll($n, $arr = ""){

        if(PEAR::isError($this->conn)) {
            if(ADMIN_MODE){
                SC_Utils_Ex::sfErrorHeader("DBへの接続に失敗しました。:" . $this->dsn);
            }else{
                SC_Utils_Ex::sfErrorHeader("DBへの接続に失敗しました。:");
            }
            return 0;
        }

        if ( $arr ){
            $result = $this->conn->getAll($n, $arr, DB_FETCHMODE_ASSOC);
        } else {
            $result = $this->conn->getAll($n, DB_FETCHMODE_ASSOC);
        }

        if ($this->conn->isError($result)){
            $this->send_err_mail ($result, $n);
        }
        $this->result = $result;

        return $this->result;
    }

    function autoExecute($table_name, $fields_values, $sql_where = null){

        if ( $sql_where ) {
            $result = $this->conn->autoExecute( $table_name, $fields_values, DB_AUTOQUERY_UPDATE, $sql_where);
        } else {
            $result = $this->conn->autoExecute( $table_name, $fields_values, DB_AUTOQUERY_INSERT);
        }

        if ($this->conn->isError($result)){
            $this->send_err_mail ($result, $n);
        }
        $this->result = $result;
        return $this->result;
    }


    function prepare($n){
        global $sql;
        $sql = $n;
        $result = $this->conn->prepare($n);
        $this->result = $result;
        return $this->result;
    }

    function execute($n, $obj){
        global $sql;
        $sql = $n;
        $result = $this->conn->execute($n, $obj);
        $this->result = $result;
        return $this->result;
    }

    function reset(){
        $this->conn->disconnect();
    }

    function send_err_mail($result, $sql){
        $url = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

        $errmsg = $url."\n\n";
        $errmsg.= "SERVER_ADDR:" . $_SERVER['SERVER_ADDR'] . "\n";
        $errmsg.= "REMOTE_ADDR:" . $_SERVER['REMOTE_ADDR'] . "\n";
        $errmsg.= "USER_AGENT:" . $_SERVER['HTTP_USER_AGENT'] . "\n\n";
        $errmsg.= $sql . "\n";
        $errmsg.= $result->message . "\n\n";
        $errmsg.= $result->userinfo . "\n\n";

        $arrRbacktrace = array_reverse($result->backtrace);

        foreach($arrRbacktrace as $backtrace) {
            if($backtrace['class'] != "") {
                $func = $backtrace['class'] . "->" . $backtrace['function'];
            } else {
                $func = $backtrace['function'];
            }

            $errmsg.= $backtrace['file'] . " " . $backtrace['line'] . ":" . $func . "\n";
        }

        print('<pre>');
        //print_r(htmlspecialchars($errmsg, ENT_QUOTES));
        print_r($errmsg);
        print('</pre>');
        exit();
    }

}

?>


xampplite-1.7.3とeccube-2.4.3で試したので、多分大丈夫だと思います。

 C:\xampp\htdocs\eccube\html...
というようにeccubeを置いているとしたら

 C:\xampp\htdocs\eccube\create-eccube-data.php
に上記コードのファイルを置いて

コマンドプロンプトから

 cd \
 cd xampp\htdocs\eccube
 c:\xampp\php\php create-eccube-data.php

とコマンドし、終わったらeccubeの管理画面から商品ひとつを呼び出して、再登録して完了です。
forthety
投稿日時: 2010/2/9 19:29
対応状況: −−−
半人前
登録日: 2010/1/19
居住地:
投稿: 14
Re: テストデータ生成スクリプトについて
早速のご連絡、誠にありがとうございます。
Windows環境で当該スクリプトを実行する方法が分からずに困っております。
私が持っておりますEC-CUBEの書籍には、テストデータ生成スクリプトの入手方法として当該スクリプトが紹介されているのですが、Windows環境での使用方法が記載されておりません。
誠にお恥ずかしい話ではございますが、Windows環境での使用方法を詳しくお教え願えないでしょうか?
何卒よろしくお願い申し上げます。
nanasess
投稿日時: 2010/2/9 16:30
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2303
Re: テストデータ生成スクリプトについて
引用:

forthetyさんは書きました:
そもそもの質問で大変恐縮なのですが、
テストデータ生成スクリプトをどのように実行すれば
よいかお教え願えないでしょうか?
当方の環境と致しましては、
DドライブにXampp1.7.1をインストールして使用しております。
スクリプト1行目のパスの設定や、
スクリプトの実行の方法など
お教えいただけると助かります。
何卒よろしくお願い申し上げます。


テストデータ生成スクリプトを作った人です.

すみません.

元々, UNIX 系の OS 向けに作ったものでして, Windows で動くかどうか未確認です.
Xampp は, 使用したことが無いのでわかりません.

UNIX 使いなので, Windows に疎くて申し訳ないです.
cli 版の PHP がコマンドプロンプトなどで実行可能であれば動作すると思います.
識者の方がみえましたらご教示下さい.
よろしくお願い致します.
AMUAMU
投稿日時: 2010/2/9 16:24
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: テストデータ生成スクリプトについて
まず、参照先にも書いてあるように2.0.x用スクリプトですので、現行の2.4.x系は確か少しプログラム自体を直さないと正常に動作しなかったと思います。

パスの設定、実行方法はPHPのCLI(コマンドライン)実行については、PHP自体の使い方レベルですので、PHPのマニュアルやPHP系の本・ネットの情報を参照されると良いと思います。Windows環境で動作させるのであればWindows用の実行方法となります。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,290名です
総投稿数は109,689件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.