質問 > フロント機能 > 注文番号を日付+連番にしたい |
フロント機能
| 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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: 注文番号を日付+連番にしたい わざわざありがとうございます。
やはり知識がないとできないのですね。 引用:
ここに書き込んでいて、涙が出てきました。 自分が情けなくて・・・「お箸の持ち方を教えてください」と言っているようなものですよね。 もう、色々と忘れていく中で、新たに覚えるのはとても根気のいることですが、教えていただいた事をもう少し調べてみたいと思います。 どうもありがとうございます。 |
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テーブルの、表示というところに表示されているものを消してしまったようです。 今までの注文履歴のようでした。 何故か番号が飛んでいましたが・・・ 下記の前に、この問題を解決しなければ、システムエラーと出て、ページが表示されないようです。 本当に申し訳ないのですが、よろしくお願いします。 引用:
dtb_orderの最後に、 フィールド:A 。 種別:TEXT フィールド:B 。 種別:INT という2つを追加しました。 NULL でよかったでしょうか。 引用:
Cというテーブルを作りました。 この時のフィールド数は1でよかったでしょうか。 Cテーブル内に、フィールド:C 。 種別:INT 、 NOT NULL を作りました。 引用:
ここがよくわからなかったのですが、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 » |
| 新しいものから | 前のトピック | 次のトピック | トップ |