質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1943閲覧

PHP MySQL 予定IDなどを作成する際の自動ID番号

Z-TALBO

総合スコア525

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/06/06 03:37

###やりたいこと
ある予定表があるとして、そのフォームの項目に入力後DBへ登録という作業を行っていきます。
とりあえずフォームとDBの部分の流れはなんとかなっておりますが、、、
DBの設計上ただのIDの他にその予定表のプランIDのような紐付けができるIDを作成したいと思ったのですが、いろいろこちらの条件を考えた時にどうしたらいいのかな?と思ったので質問いたします。

###DBの設計と入力内容
入力するフォームと内容

HTML

1<form action="" method="post"> 2<select name="year">// 中は省略します</select>年 3<select name="month">// 中は省略します</select>月 4<select name="day">// 中は省略します</select>日 5<select name="car">// 中は省略します</select>号車 6訪問先<select name="user[0][name]"></select> 7訪問時間<select name="user[0][hour]"></select>:<select name="user[0][minutes]"></select> 8訪問スタッフA<select name="user[0][staffA]"> 9訪問スタッフB<select name="user[0][staffB]"> 10訪問スタッフC<select name="user[0][staffC]"> 11<!-- 訪問先~訪問スタッフCまでは全部で8行あります --> 12<input type="submit" name="plan_insert"> 13</form>

DBに関して

MySQL

1[visitPlan] 2id int not null auto_increment // とりあえず一行毎のIDを作成しておくと編集とかしやすいと考えて 3planId int // 他のテーブルとの紐付け用 4visitUser int // user_masterと紐付け user_idが入る 5visitTime datetime // 訪問日と訪問時間 6visitCar int // car_masterと紐付け 乗車する車 7 8[user_master] 9user_id int not null 10user_name varchar(30) 11// 他項目は省略 12 13[car_master] 14car_id 15car_name 16 17[staff_master] 18staff_id 19staff_name 20 21[visitPlan_staff] 22id int not null auto_increment 23planId int 24visitStaff int // staff_masterから紐付け 25

###質問内容
とりあえず、少ない知識から上記のような形で作成をしてみました。
まだまだ雑さが拭えていないのはスルーしてください、、、、

今考えうる条件等
1.登録する際に操作する人は1人ではない、、、最大4~5人
※ぴったり同一の時間にサブミットすることは少ないとは思いますが、もしかするとがあるかも?
そもそも無料のホスティンガーというサーバーなので、あまり人数が同時にアクセスすると繋がらないので、大丈夫だとは思うがAさんがやる時ではなく、サブミットされてDBにInsertされる時に判定されればいいのかな?
ぶつかることを考えるとどうしたらいいのか、この辺りはまったくわからない。

2.プラン用のIDはこちらが指定するのではなく、いつの間にかPHP側などで判別、判定してつけてくれる

3.プラン用のIDの桁数は6桁としたい。
※000001~999999まで

流れ等のヒントでよいのでアドバイスお願いできますでしょうか?
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

visitPlanテーブルと他のテーブルを紐付るためであれば、idを使えば良いと思うのですが。
idを増やすメリットはあまりないように思えます。

投稿2016/06/06 04:04

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Z-TALBO

2016/06/06 04:20 編集

あっ、そうか日付や車などで、一致させたりすればオーケーですよね? そうなると。スタッフテーブルも日時と車の部分を追加して、検索かけるとすれば、日付と車のナンバーで一致するものを引っ張れば良いという感じになりますかね?
ttyp03

2016/06/06 04:31

いや、違いますね。 スタッフテーブルというのはvisitPlan_staffでしょうかね。 このテーブルはvisitPlanテーブルに紐づくのであれば、visitPlan_staffテーブルのidはAUTO_INCREMENTにするのではなく、visitPlanテーブルのidを使えばよいのでは。 つまりこんな感じのテーブルレイアウト。 [visitPlan] id int not null auto_increment visitUser int // user_masterと紐付け user_idが入る visitTime datetime // 訪問日と訪問時間 visitCar int // car_masterと紐付け 乗車する車 [visitPlan_staff] id int // vistPlanと紐付け visitStaff int // staff_masterから紐付け
Z-TALBO

2016/06/06 05:06

あっなるほど!そういうことでしたか、、、 やっと理解しました。すみません。 ちょっとやってみたいと思います!
Z-TALBO

2016/06/06 10:01

まだ完全にはできてないのですが、とりあえずやってみます! ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問