バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 注文番号を日付+連番にしたい

フロント機能

新規スレッドを追加する

| 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
IeNeko
投稿日時: 2011/10/18 19:04
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 36
注文番号を日付+連番にしたい
[EC-CUBE] 2.11.2
[レンタルサーバ] Xserver
[PHP] PHP 4.3.9
[データベース] MySQL 5.0.77

ここを参考にしながら先日、オンラインショップを無事に開店することができました。
ありがとうございます。

今回やりたい事は、注文番号を日付+連番(できれば2桁まで)にしたいのです。
連番は通しでもよいので、3桁になる前に手動で1に戻す方法でもかまいません。
過去に何度か出ております、注文番号のカスタマイズです。


【1】注文番号を連番ではなく、注文日-時間-分-秒(ミリセコンド)に変更したい
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=8149&forum=11&viewmode=flat&order=ASC&start=0

【2】注文番号のカスタマイズについて
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=6845&forum=11&viewmode=flat&order=ASC&start=0

これらが近いと思い【1】をやってみましたが、注文完了ボタンを押すとエラーが出てしまい、断念しました。
【2】が近いと思い、じっくりと読んでみましたが、どこをどう変更してよいのか結局わからない程度の頭です。

どうぞ、よろしくお願いいたします。
yukikaze
投稿日時: 2011/10/20 15:31
対応状況: −−−
長老
登録日: 2011/7/26
居住地:
投稿: 196
Re: 注文番号を日付+連番にしたい
ど素人ですが…

dtb_order[TBL]に顧客用注文番号のフィールドを2つA(TEXT)とB(INT)を追加します。
Aは日付(YYYYMMDD)が入ります。
Bは連番が入ります。
注文完了時のメール、帳票、Myページなどには、このA+B(2桁)を表示させます。

また、B列用にカウントアップ用のCテーブルを作成します。
CテーブルはINT型のフィールドが1つで、AUTO_INCREMENTを設定しておきます。

dtb_order[TBL]へINSERT時に、
 CテーブルのAUTO_INCREMENTの値を取得し、1行登録。
 A列はPHP側から日付(YYYYMMDD)を生成し、登録。
 B列はCテーブルから取得したAUTO_INCREMENTの値を登録。

CテーブルのAUTO_INCREMENTは、cronで0:00に1に戻すように設定。
 DB接続→AUTO_INCREMENT初期化→DB切断 だけのPHPを作成してそれをCronで使います。

B列が日付に関係なく1〜99まで使う場合は、99を使用した段階でCテーブルを1に戻すSQLを登録後に追加すればOK。

登録以外は、表示のTPLやPDF作成のPHPを修正するダケで済むと思います。

どうでしょうか?
IeNeko
投稿日時: 2011/10/21 14:48
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 36
Re: 注文番号を日付+連番にしたい
細かく説明をしていただき、ありがとうございます。

B列は1日に何個も出るわけではないので、簡単な方でいいと思います。
ですが、やりたい事はわかってはいるのですが、そのやり方がわかりません。
大変申し訳ないのですが、

>dtb_order[TBL]に顧客用注文番号のフィールドを2つA(TEXT)とB(INT)を追加します。

の時点で既に何をどうすればいいのかわからない状態なのです。

ここに書きこみをされている方々にとっては、すごく簡単な事なのかもしれませんが、出来れば細かく(〇〇をどこへ追加する等)説明してくださると幸いです。
多分、説明するのが面倒なので放置されているのだろうと思っております。
ご面倒かとは思いますが、よろしくお願いします。
EGZ10
投稿日時: 2011/10/21 15:00
対応状況: −−−
半人前
登録日: 2011/10/14
居住地:
投稿: 21
Re: 注文番号を日付+連番にしたい
IeNekoさんのサーバはXserverですよね、となるとサーバの管理ページからphpMyAdminへのリンクが見つかると思います。このphpMyAdminをつかってデータベースを変更するのです。

phpMyAdminで利用しているデータベースを選択し、フィールド(カラム)追加してください。
phpMyAdminとSQLテーブルのコマンドの知識が必要となります。
ともにネット上にハウツー情報が見つかります。
IeNeko
投稿日時: 2011/10/21 15:26
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 36
Re: 注文番号を日付+連番にしたい
わざわざありがとうございます。
やはり知識がないとできないのですね。

引用:

EGZ10さんは書きました:
IeNekoさんのサーバはXserverですよね、となるとサーバの管理ページからphpMyAdminへのリンクが見つかると思います。このphpMyAdminをつかってデータベースを変更するのです。

phpMyAdminで利用しているデータベースを選択し、フィールド(カラム)追加してください。
phpMyAdminとSQLテーブルのコマンドの知識が必要となります。
ともにネット上にハウツー情報が見つかります。


ここに書き込んでいて、涙が出てきました。
自分が情けなくて・・・「お箸の持ち方を教えてください」と言っているようなものですよね。
もう、色々と忘れていく中で、新たに覚えるのはとても根気のいることですが、教えていただいた事をもう少し調べてみたいと思います。

どうもありがとうございます。
yukikaze
投稿日時: 2011/10/21 16:33
対応状況: −−−
長老
登録日: 2011/7/26
居住地:
投稿: 196
Re: 注文番号を日付+連番にしたい
いや放置してませんよ(必死(汗

phpMyAdminへの接続はできるものとして、SQLでのフィールド追加から…

1.dtb_orderテーブルの最後にA(TEXT)とB(INT)追加。
 ALTER TABLE `dtb_order` ADD COLUMN `A` TEXT;
 ALTER TABLE `dtb_order` ADD COLUMN `B` INT;

2.Cテーブル生成
 CREATE TABLE `C` (`id` INT NOT NULL);

3.Cテーブル初期設定
 INSERT INTO `C` VALUES (0);

4.こっからPGのお話
 dtb_order[TBL]へINSERTする SC_Helper_Purchase.php registerOrder[FUNCTION] で「$objQuery->insert($table, $arrValues);」の前に

 UPDATE `C` SET id=LAST_INSERT_ID(id+1);
 SELECT LAST_INSERT_ID; →D

 を実行し、その結果を

 $arrValues['A'] = date('YYYYMMDD');
 $arrValues['B'] = D;

こんな感じで。
IeNeko
投稿日時: 2011/10/21 19:00
対応状況: 確認中
常連
登録日: 2011/10/18
居住地:
投稿: 36
Re: 注文番号を日付+連番にしたい
yukikaze様、EGZ10様、すみません、どうもありがとうございます。

じっくり考え、やっとどの事についてお話されているのか、ようやく理解できました。
サーバーに作ったMySQLというものの話をしていらっしゃったのですね。

残念ですが、FTPでの接続はできますが、phpMyAdminへの接続はできません。
というのも、以前お店のwebページを消してしまったので、パスワードを変えられてサーバーへのログインができなくなってしまったからです。

取りあえず、管理者に問い合わせてみます。
ありがとうございました。
IeNeko
投稿日時: 2011/10/21 21:32
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 36
Re: 注文番号を日付+連番にしたい
管理者に問い合わせてみたところ、あちらでやるとこのこですので、yukikaze様が教えていただいたページを伝えておきました。
少し欝ってて暗いことを書きこんで申し訳ありませんでした。

また進展がありましたらご報告させていただきます。
IeNeko
投稿日時: 2011/10/22 17:01
対応状況: −−−
常連
登録日: 2011/10/18
居住地:
投稿: 36
Re: 注文番号を日付+連番にしたい
管理者がこれを見て投げ出したので、私がやることになりました。
どうぞよろしくお願いします。

■■■
大変申し訳ないのですが、dtb_orderテーブルの、表示というところに表示されているものを消してしまったようです。
今までの注文履歴のようでした。
何故か番号が飛んでいましたが・・・

下記の前に、この問題を解決しなければ、システムエラーと出て、ページが表示されないようです。
本当に申し訳ないのですが、よろしくお願いします。


引用:

1.dtb_orderテーブルの最後にA(TEXT)とB(INT)追加。
 ALTER TABLE `dtb_order` ADD COLUMN `A` TEXT;
 ALTER TABLE `dtb_order` ADD COLUMN `B` INT;

dtb_orderの最後に、
フィールド:A 。 種別:TEXT
フィールド:B 。 種別:INT
という2つを追加しました。
NULL でよかったでしょうか。

引用:

2.Cテーブル生成
 CREATE TABLE `C` (`id` INT NOT NULL);

Cというテーブルを作りました。
この時のフィールド数は1でよかったでしょうか。

Cテーブル内に、フィールド:C 。 種別:INT 、 NOT NULL を作りました。

引用:

3.Cテーブル初期設定
 INSERT INTO `C` VALUES (0);

ここがよくわからなかったのですが、Cテーブル内のCの、デフォルト値が0 ということでいいのでしょうか?


初めててを加えるので、もう少し詳しく教えていただけないでしょうか。
よろしくお願いいたします。
yukikaze
投稿日時: 2011/10/24 11:37
対応状況: −−−
長老
登録日: 2011/7/26
居住地:
投稿: 196
Re: 注文番号を日付+連番にしたい
久々にアクセスしたら書き込みいっぱいでビックリしました。
レス遅れてすみません。

1.dtb_orderテーブルにA,Bフィールド追加の件、OKです。

2.Cテーブルのフィールド数は1でOKです。
 ちなみにフィールド名は id と記載しました。

3.idフィールドのデフォルトが0という意味ではありません。
 4で記載している LAST_INSERT_ID を使用する際、レコードが空だと処理が面倒なので 0 の値を登録してあります。
 これにより、4の処理で1から値を取得することができます。
(1) 2 3 4 ... 6 »
| 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,132名です
総投稿数は110,040件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1649
8
red
1570
9
mcontact
1298
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.