• ベストアンサー

会員番号等に利用するダブらない連続番号(シリアル)の作り方を教えてください。

PHP+MySQL勉強中のものですがよい方法を教えてください。 表題のように会員登録のサイトを作っているのですが いわゆる会員番号をダブらないようにして入力時に自動的に作成したいのですが 一般的にはどのような方法があるのでしょうか? 私としてはDBの会員登録とは別にシリアル番号だけを書き換えていくテーブルを作って新規入力時に値を拾っていく方式にしたいのですが。 会員テーブル(会員番号,会員名) シリアルテーブル(シリアル番号) に対して 会員テーブルに会員名を入力  ↓ シリアルテーブルからシリアル番号を読込む  ↓ 会員テーブルに(シリアル番号+1&5桁の数字,会員名)を登録 (5桁の数字は他で使うものでユニークな値ではないです)  ↓ シリアルテーブルに(シリアル番号+1)として更新  ↓ シリアルテーブルのシリアル番号が9999になったら1に戻す という処理をしたいのですが 処理自体はできるのですが 当然PHPのコードが素人目にみても余りきれいではありません。 一般論でかまいませんので皆さんならどうされるか等 ご意見をうかがえないでしょうか? よろしくお願いします。 環境はPHP5+MySQL5です。

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.3
ppalot
質問者

お礼

tany180sxさん ありがとうございます。 PHP関数だとmysql_insert_id() http://jp.php.net/manual/ja/function.mysql-insert-id.php​   ↑ 参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

1.会員登録Tの会員名やその他情報などがユニークで一意に定める事のできる   情報なら、それをキーにして会員番号を取得する。   MAX()やLAST_INSERT_ID()を使って会員番号を拾ってきてもいいですが、   トランザクションの関係が影響を及ぼす可能性があります。   LAST_INSERT_ID()は使ったことないので何ともわかりませんが、   説明見る限りだと大丈夫そうな感じもしますが・・・。   http://dev.mysql.com/doc/refman/5.1/ja/information-functions.html 2.会員登録Tと会員情報Tが1:nの関係にないならば、全て1つのテーブルにしてしまう。   操作が完了する過程の情報はセッションIDを加工した値をプライマリーキーにしたテーブルで保持する。 など? 勘違いしてたらすません・・・

ppalot
質問者

お礼

naktakさん 2の -操作が完了する過程の情報はセッションIDを加工した値をプライマリーキーにしたテーブルで保持する。- という方法いいですね。 LAST_INSERT_ID()とあわせていろいろやってみようと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

質問の意図がよくわからないのですが、 単純に連番で会員番号をとればすむのでは? 会員番号自体はSQLでオートインクリメントしたidを だしてやれば済むような気が・・・ やりたいことが違うのかなぁ?

ppalot
質問者

補足

ややこしし書き方でごめんなさい。 おっしゃるとおりMSアクセス等でインターフェイス作ってるときは オートインクリメントしてるのですが 今回はPHP使ってブラウザから入力することに挑戦していまして 最初の登録ページで一旦会員登録を終わらせてDBに書き込みます。 そして会員番号をセッションで保持して (会員番号はKeyにしてるので同じ値を運びます。) 次の頁で別項目を入力するのですが オートインクリメントだとうまくオートインクリメントで入力された値を拾えなかったんのです。 初期登録Web画面(会員番号,会員名,5桁の数字)   ↓   ↓ submit →会員登録T(会員番号,会員名)入力   ↓ 会員情報登録Web画面(会員番号,5桁の数字)   ↓    ↓ submit →会員情報T(会員番号,5桁の数字)入力   ↓       ↑   ↓    この時にオートインクリメントで入力した値の拾い方がわからない 次の登録Web画面へ続く... (登録画面を分けている理由は実際には登録する項目が多すぎるからです) ということでして ならば会員番号を最大値+1で自分で作ってしまい ついでに5桁の数字も会員番号に混ぜて運用してしまおうかなと思ったからなんです。 『オートインクリメントで入力した値の拾い方』で質問した方がよかったかもしれませんが 周りに詳しい人もいないので一般的にどうなんだろうなと思ってしまったしだいです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • イーバンク カード番号と会員番号は同じですか?

    あるサイトのお金を払うため、イーバンクで新規口座を作りました。 サイトにて、登録の作業を行っていたのですが カード番号を入力して下さいとの事で、カード中央より下に記載されている、●●●●-●●●●-●●●●-●●●●数字16桁だと思い入力したのですが違っているとエラーが出ました。 いろんなサイトで確認しても、その数字がカード番号であると書かれています。イーバンクのカード記載詳細の説明には、その数字16桁は「会員番号」と書かれています。 どの数字が、カード番号なのでしょうか?その番号のせいで、サイトに登録が出来ません。どなたか助けて下さい。よろしくお願いします。

  • 筆王の新規会員登録について。

    NECのパソコンを今年の5月に購入しましたが、筆王を起動させた時に新規会員登録の項目があり、登録しようとしましたが、シリアル番号の桁が違い入力出来ません。シリアル番号なしで、会員登録をしましたが、起動するたびに、新規会員登録の項目が表示されます。筆王の会社が変わったため、対応されないのでしょうか教えて頂けませんか。バージョンは、Ver.11.0.0.6.F シリアル番号は4桁6桁5桁です。

  • VISAカードの会員番号とは??

    https://www2.vpass.ne.jp/vpass/create/create_user.asp?regkind=1&cc=050&ctype=k の登録をしたいのですが、会員番号が正しくありませんと表示されます…。ちゃんと16桁の数字を入力しているのですが^^; どなたかどれをさして会員番号かを教えてください↓

  • シリアル番号

    筆王のユーザー登録をしようとしたとろ、電子マニュアル設定と解除を失くしてしまい、シリアル番号が分からず、登録できませんでした。PCの下裏に貼ってある製造番号かと思い、入力しても、登録時のシリアル番号の桁数が1つは、6桁ー10桁。2つ目が5桁ー4桁ー4桁ー4桁ー4桁で全く合いません。どのようにしたら、シリアル番号を入手することが、出来ますでしょうか?

  • 10000通りのシリアル番号を生成したい

    10000通りのユニークなシリアル番号を生成させるプログラムを 作りたいと考えています。 00000 00001 00002 ... 99998 99999 という数字が縦に並んだテキストファイルを用意して、それを読み込んで 00000→8401923 00001→4234420 00002→1354234 ... 99998→4235662 99999→9557346 というような7桁の数字だけのシリアル番号を作りたいのです。 また、一つのシリアル番号、仮に8401923という数字を利用して 下一桁をちょっと変更したぐらいでは、 他のシリアル番号にHitしないような作りにしたいと思います。 10000までの連番の数字に、何かしらのマスク処理をかけて シリアル番号を生成させる感じだと思うのですが その、マスクの部分の具体的な処理がよくわからないのです。 また、シリアル番号から、元の連番の数値も出したいと考えていますが それもどのように処理させればいいのでしょうか? 以上になりますが、どうぞよろしくお願い致します。

    • ベストアンサー
    • Perl
  • シリアル番号を21桁に変更したいので・・・。

     本日、シリアル番号を21桁に切り替えて後、アップデートが出来ないため、アンインストールし、再インストールをしました。登録する時に、シリアル番号を入力をしたいのですが16桁しか入力出来ません。 21桁のシリアル番号を入力するにはどの様にすればよいでしょうか。よろしく、お願いいたします。

  • 再インストール時のシリアル番号について

    パソコンの再セットアップに伴いウイルスセキュリティの再インストールを行ったところ、シリアル番号入力画面が、○○○○(英字)-××××-××××-××××-××××(数字)となっているのですが、初期登録は××××××(6桁)ー××××××××××(10桁)しかわかりません。どうすればよいか教えていただきたいのですが・・・?

  • シリアル番号

    ソフトウエアでシリアル番号を入力するものがありますが、 シリアル番号の下8桁が12345678という場合に、 12345675と打ち間違えて登録された場合、 シリアル番号の二重登録ができないソフトの場合どうなるのでしょうか? 正規のシリアル番号12345675を持っている人は登録できないのでしょうか?

  • 連続番号のデータ入力について。

    連続番号のデータ入力について。 環境: ACCESS2000     今回在庫管理のデータベースを作成しており、 商品の品番が1度に大量仕入してるため連続いたものになり データ入力が手間がかかるので、簡易に入力できるフォーム作成しております。 状況:フォーム(名称:在庫管理)    フォーム上にテキストボックス(名称:text品番頭)          テキストボックス(名称:text品番start)          テキストボックス(名称:text品番last)          テキストボックス(名称:text商品名)          テキストボックス(名称:text仕入先)          コマンドボタン(名称:command登録)    テーブル(名称:在庫マスター)    フィールド  品番    商品名   仕入先 今回やりたい事:    text品番頭にアルファベット3文字、    text品番startに数字4桁(登録したい番号の開始数字)、    text品番lastに数字4桁(登録したい番号の最後)、    text商品名に商品名、text仕入先に仕入先    を入力し、command登録でテーブルに入れる。    その際、品番はtext品番頭+text品番start~text品番lastでフィールド品番に連続登録、    商品名及び仕入先はtext商品名(text仕入先)に入力されたものを全ての品番に対応した    商品名及び仕入先フィールドに登録。   ex: text品番頭  AAA       text品番start  1111      text品番last  5555      text商品名  いちご      text仕入先  八百屋     と入力した場合、テーブルに     品番      商品名    仕入先    AAA1111     いちご    八百屋    AAA1112     いちご    八百屋    AAA1113     いちご    八百屋    AAA1114     いちご    八百屋      ・      ・      ・      ・      ・      ・    AAA5555     いちご    八百屋    つたない説明でわかりにくいとは思いますが、 ネット等で調べていても連続した数字入力は クエリばかりでてくるため、どのようにコードを組み上げて いいのかわかっておりません。 自分のできる範囲は、フォーム利用によるデータ入力は作成できる程度です。 何卒ご教授の程宜しくお願い致します。

  • 口座番号について

    YAHOO!オークションの出品の権利をもらうための登録で 受け取り口座の登録みたいなのをしました そのときに「口座番号」を記入する欄があったので入力しようとおもったのですが、 銀行の通帳のほうに書いてある口座番号を見て「123456」と6桁の数字を入力すると 口座番号を正しく半角数字で入力してください。とエラーがでてしまいました おかしいなと思って銀行のカードのほうを見てみると 「123456 7」のように通帳の口座番号のあとにスペースが空いて1つ数字が書いてありました。 この7桁の数字を試しに入力してみると今度は登録することができました。 あとで調べてみると口座番号は7桁の数字のようでした ここで疑問に思ったのですが、なぜ通帳のほうには6桁しか口座番号が書かれていないのに、カードのほうには7桁かいてあるのでしょうか? 口座番号は7桁なのだから通帳にも7桁すべての口座番号を書くのが普通ではないですか?