【V5計画】CAFEMILK SHOPPING CART V5 (113レス)
【V5計画】CAFEMILK SHOPPING CART V5 http://medaka.5ch.io/test/read.cgi/php/1246680239/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
41: nobodyさん [sage] 2009/07/27(月) 13:04:51 ID:??? >>39 ちょっとだけ 2度のuse > 2度のnew http://medaka.5ch.io/test/read.cgi/php/1246680239/41
42: nobodyさん [sage] 2009/07/27(月) 20:55:02 ID:??? このスレの書き込み、なにがしたいんだ? http://medaka.5ch.io/test/read.cgi/php/1246680239/42
43: nobodyさん [sage] 2009/07/28(火) 00:49:04 ID:??? 誰かがプログラム解析して情報載せてるんだろ どこかwikiでも紹介したらそちらに行くんじゃ? http://medaka.5ch.io/test/read.cgi/php/1246680239/43
44: nobodyさん [sage] 2009/07/28(火) 01:10:47 ID:??? ここはWEBプログラミング板だったよな http://medaka.5ch.io/test/read.cgi/php/1246680239/44
45: nobodyさん [sage] 2009/07/28(火) 18:06:54 ID:??? ■ データベース 独自のモジュールを使う CSV形式 エクセルに対応してるらしい カラム名を指定して操作する 2種類 通常 商品や会員などを扱う ログ レコードの操作があまりできない 読込と追記専門 ローテーションする → 古いレコードは消えていく データベース操作の方法が特殊で、SQLインジェクションのような脆弱性は考えにくい http://medaka.5ch.io/test/read.cgi/php/1246680239/45
46: nobodyさん [sage] 2009/07/28(火) 18:08:15 ID:??? 基本的な使い方 my $database = Cafemilk_database_basic->connect ← オブジェクト方式connectで呼び出す ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, column_filename => 'database/item_column_list.csv', ← カラム名の情報 column_separator => ',', database_filename => 'database/item.csv.cgi', ← データベース本体 database_separator => ',', database_mode => '+<', database_flock => $flock, ← ファイルロックはFLOCK }); $database->get_record_all(); ← データベースの情報をすべて取得(予約) my @lines = $database->get_extract_database(); ← 取得(予約)した情報を取り出し このへんにいろいろと処理 undef $database; ← 終了 http://medaka.5ch.io/test/read.cgi/php/1246680239/46
47: nobodyさん [sage] 2009/07/28(火) 18:15:04 ID:??? レコードのマッチングをしたいとき $database->get_record_all(); $database->match_database ({ column_name => 'カラム名', match_word => '値', }); my @lines = $database->get_extract_database(); レコードのサーチをしたいとき $database->get_record_all(); my @columns = ( "サーチしたいカラム1", "サーチしたいカラム2", "サーチしたいカラム3", ); $database->search_database ({ search_column => \@columns, ← 複数のカラムをまたがって検索できる search_words => $words, ← 半角スペースで区切って複数語検索が可能 character_mode => '1', ← 大文字小文字の区別をしない場合 }); my @lines = $database->get_extract_database(); http://medaka.5ch.io/test/read.cgi/php/1246680239/47
48: nobodyさん [sage] 2009/07/28(火) 18:24:32 ID:??? レコードのソートをしたいとき $database->get_record_all(); $database->sort_database ({ column_name => 'カラム名', reverse_mode => '0', ← reverseしない sort_mode => 'number_quick', ← number_quickかcharacter_quick }); my @lines = $database->get_extract_database(); 特定のレコードを差し替えたいとき $database->replace_record ({ extract_column_name => 'カラム名', ← ターゲットのレコードを特定するために指定 extract_column_value => '値', ← ターゲットのレコードを特定するために指定 records => \%record, ← 特定されたレコードに\%recordが書き込まれる }); → 差し替えは予約になるのでこのあとoverwriteが必要 http://medaka.5ch.io/test/read.cgi/php/1246680239/48
49: nobodyさん [sage] 2009/07/28(火) 18:28:03 ID:??? 特定のレコードを削除したいとき $database->delete_record ({ extract_column_name => 'カラム名', ← ターゲットのレコードを特定するために指定 extract_column_value => '値', ← ターゲットのレコードを特定するために指定 }); → 削除は予約になるのでこのあとoverwriteが必要 操作したデータベースを格納(予約) $database->set_extract_database ({ extract_database => \@lines, }); 格納(予約)したものを上書き $database->overwrite(); → 格納(予約)しなければmatch search sort replaceされたものを上書き 追記したいとき $database->postscript(\%record); → 予約せずに、また予約があってもそれを無視して追記を行う http://medaka.5ch.io/test/read.cgi/php/1246680239/49
50: nobodyさん [sage] 2009/07/29(水) 13:10:49 ID:??? 特定のレコード(1件)の抽出 my $extract_database = $database->extract_last_record ({ extract_column_name => 'カラム名', extract_column_value => '値', }); → 通常では最初の該当レコードが、ログでは最後の該当レコードが帰ってくる レコードの内容の取得 →レコードの内容をいろいろ操作するために必要 my @lines = $database->get_extract_database(); foreach my $line (@lines) { my %target_values = $database->get_values_argument ({ database_values => $line, }); いろいろ処理 # print $target_values{hoge}; ← カラム名で値を参照できる # レコードの内容を変えたい場合 # $target_values{hoge} += 1000; ← 値を変更 # $database->replace_record ← 差し替え ← あとでoverwriteが必要なので注意 # ({ # extract_column_name => 'カラム名', # extract_column_value => '値', # records => \%target_values, # }); } http://medaka.5ch.io/test/read.cgi/php/1246680239/50
51: nobodyさん [sage] 2009/07/29(水) 13:14:27 ID:??? その他 get_stack ← レコードの数を返す double_sort_database ← ダブルソート set_write_forbid ← (何か問題があったときなど)書込禁止命令 merge_database ← 重複のあるログの統合 (ry http://medaka.5ch.io/test/read.cgi/php/1246680239/51
52: nobodyさん [] 2009/07/30(木) 12:02:02 ID:9vO1Ag/1 DUMMY接続 データベースの待ち時間の低減や多重なアクセスによるロックを防ぐための DUMMY接続ができる my @lines = $database->get_extract_database(); undef $database; ← いったんデータベースへの接続を閉じて my $database = Cafemilk_database_basic->dummy ← ダミー接続を開始する ({ config => $config, userdata => $userdata, log_error => $log_error, log_alert => $log_alert, status => $status, column_filename => 'database/item_column_list.csv', column_separator => ',', database_separator => ',', }); $database->set_extract_database ({ extract_database => \@lines, }); http://medaka.5ch.io/test/read.cgi/php/1246680239/52
53: nobodyさん [sage] 2009/07/30(木) 16:03:06 ID:??? ■ データベースの動作速度と商品点数 CSVでデータベースを運用しているのでソートが遅い つまり運用可能な商品点数はソートの性能で決まる → ソートをまともに使用するなら商品点数は1000点くらいが限度のよう そこで商品のソートは設定で制限されている $config->{item_category}{item_sort}{limit} = '100'; ← デフォルトは100点 → これで5000点くらいまで大丈夫のようだ http://medaka.5ch.io/test/read.cgi/php/1246680239/53
54: nobodyさん [sage] 2009/08/01(土) 00:36:22 ID:??? 2009.07.31 スキン製作例を掲載しました。 http://medaka.5ch.io/test/read.cgi/php/1246680239/54
55: nobodyさん [] 2009/08/04(火) 16:09:04 ID:8qC9FCVp ■ 携帯に対応するには 標準では未対応となっているのですが、実は超簡単です。 1. main.cgiの以下のコメントをはずす # 端末を判定します。ケータイ端末かPC端末かということを判定します。 # 判定には川崎有亮(かわさきゆうすけ)氏の phone.pl を使用します。 # phone.pl はなるべく最新版を使用するように心がけてください。 # phone.pl 配布元 : http://www.kawa.net/works/perl/phone/pnews.html # require './pl/kawasaki/phone.pl'; # $userdata->{agent_type} = &phone_info(); 2. あとはスキンを作るだけ スキンは以下のディレクトリに作成 [cgi-bin/shop/]skin/user/cgi/default/mobile/japanese/yen/default/ http://medaka.5ch.io/test/read.cgi/php/1246680239/55
56: nobodyさん [sage] 2009/08/06(木) 05:54:07 ID:??? キャリア別に表示するには? 1. config_basicの以下の部分に追記 $config->{list}{device_type} = [qw(web mobile)]; ↓ $config->{list}{device_type} = [qw(web mobile ezweb docomo jphone)]; 2. cafemilk_cookie.plの以下の部分を修正 if (!$userdata->{agent_type}{type}) { $userdata->{device_type} = $config->{default}{device_type}; } else { $userdata->{device_type} = "mobile"; } ↓ http://medaka.5ch.io/test/read.cgi/php/1246680239/56
57: nobodyさん [sage] 2009/08/06(木) 05:56:20 ID:??? if (!$userdata->{agent_type}{type}) { $userdata->{device_type} = $config->{default}{device_type}; } elsif ($userdata->{agent_type}{type} eq 'docomo') { $userdata->{device_type} = "docomo"; } elsif ($userdata->{agent_type}{type} eq 'ezweb') { $userdata->{device_type} = "ezweb"; } elsif ($userdata->{agent_type}{type} eq 'jphone') { $userdata->{device_type} = "jphone"; } else { $userdata->{device_type} = "mobile"; } 3. スキン作る [cgi-bin/shop/]skin/user/cgi/default/ezweb/japanese/yen/default/ [cgi-bin/shop/]skin/user/cgi/default/docomo/japanese/yen/default/ [cgi-bin/shop/]skin/user/cgi/default/jphone/japanese/yen/default/ http://medaka.5ch.io/test/read.cgi/php/1246680239/57
58: nobodyさん [sage] 2009/08/06(木) 06:13:59 ID:??? マルチ端末の話が出たのでおまけ やろうとおもえば PCのディスプレイ解像度に合わせた表示もできます たとえば $config->{list}{device_type}に PC800 PC1000 PC1200 PC1600 PC1900 といった値を追加して webスキンからjavascriptでディスプレイの幅を飛ばし 幅の情報から$userdata->{device_type}を設定するようにする という具合でたぶんOK。(無保証) http://medaka.5ch.io/test/read.cgi/php/1246680239/58
59: nobodyさん [sage] 2009/08/06(木) 06:24:27 ID:??? さらにおまけ 同じような感覚でマルチ言語もできるはず $userdata->{language_type}を使う 同じような感覚でマルチスキンを使って表示の切り替えも(ry $userdata->{template_type}を使う 季節ごととか時間ごととかてきとうに http://medaka.5ch.io/test/read.cgi/php/1246680239/59
60: nobodyさん [sage] 2009/08/07(金) 00:46:32 ID:??? なにげに拡張性高杉 http://medaka.5ch.io/test/read.cgi/php/1246680239/60
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 53 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.005s