• 締切済み

MySQL + PHP での自動採番

PHP + MySQL で自動採番 複数テーブルから文字列を抽出して番号を振りたいと思っております。 具体的には以下のような形を考えているのですが、どのように記述をしてよいのか教えていただけますでしょうか? table1: +-------------+------+------+-- | ID | col1 | col2 | +-------------+------+------+-- | KW0807-0001 | A | 3323 | | KX0807-0002 | B | 1122 | | KY0807-0003 | C | 4441 | | KW0807-0004 | A | 1256 | +-------------+------+------+-- table2: +-----+------+------+-- | ID | col3 | col4 | +-----+------+------+-- | 1 | A | W | | 2 | B | X | | 3 | C | Y | | 4 | D | Z | +-----+------+------+-- table1 の「ID」 -> [K(規定値)] + [col1で入力した値よりcol4を抽出] + 入力した年 (08) + 入力した月 (07) + 0000から始まる4桁の連番 と、したく思います。 ご回答にあたって足りない情報があればご指摘下さい。 よろしくお願い致します。

みんなの回答

  • koke29
  • ベストアンサー率58% (114/196)
回答No.2

とっくに解決したでしょうか 一応追加の質問についての返答です。。。 $no = mysql_num_rows()+1; だと、総数が10件なら $no=10 になるので、4ケタにしたいなら $no = str_pad($no,4,"0",STR_PAD_LEFT); とかで埋めてやればよろしいです。 かなり今更でスミマセン…

  • koke29
  • ベストアンサー率58% (114/196)
回答No.1

[col1で入力した値よりcol4を抽出] テーブル1,2をleftjoinとかで繋いでcol1=col3の時のcol4を 任意の変数($col4)にすればよさそうな気がします(ダメならスミマセン) 入力した年 (08)は $y = date("y",time()); 入力した月 (07)は $m = date("m",time()); で取得できます 4桁の連番は欠番無しで増える一方ならデータの総数から次の番号を 計算するような処理を考えれば良さそうです 例の場合はデータ総数4件で次は0005になるので $no = mysql_num_rows()で取り出したデータ総数 +1 最終的に $id = "K$col4$y$m-$no"; みたいな感じになるんじゃないかなーと思います 考え方のヒントくらいになれば幸いです

su20m2
質問者

補足

ご回答ありがとうございます! なんとなく考え方自体は理解できました。 その後、何度か試してはいるのですが・・・どうもうまくいきません。 ↓これは具体的には; > $no = mysql_num_rows()で取り出したデータ総数 +1 $no = mysql_num_rows()+1; のような書き方になるのでしょうか? また、数字は4桁(欠番無しで増える一方です)に指定したいのですが、特に(桁数を)指定する方法はあるのでしょうか?

関連するQ&A

専門家に質問してみよう