###はじめに
同じような処理をしている時など、オブジェクト指向とかで簡潔にという事が言われたりもしていますが、、、
今やっている条件の分岐だったりも確かに同じ処理を何度か書く必要が出てきています。
しかし、これだったらこれ、あれだったらあれという部分においてその辺も含めてすっきり書けるものか、もう、このままズラズラ書くものか考えています。
アドバイス等いただければと思います。
###基本的にやっていること
1.A,B,C,Dのいずれかを選択
2.WorkIn, WorkOut, RestIn, RestOutのいずれかを選択
3.送信
4.1,2の値が両方セットされてなければ何もしない、セットされれば次の処理
5.送信された時のYmd,Hiを取得
6.データベースで1の値とYmdを使ってSELECT
7.データが無ければInsert処理へ
8.データが有ったらUpdate処理へ
※このUpdate処理の部分で少し考えています。。。
###データベース
MySQL
1tablename Test 2id int not null primary key auto_increment, 3Name varchar(2), 4TimeDate date, 5WorkIn time, 6WorkOut time, 7RestIn time, 8RestOut time
###Update部分
とりあえずInsertまでの部分に関しては共通の動きばかりなので、ここでは取り上げません。
PHP
1// データベースにアクセスしてデータのチェック 2$tableCheck = TableCheckDb($Name, $TimeDate); 3if($tableCheck === false) { 4 // データが無いので、WorkIn~RestOutまでどれを押されてもInsert処理させる 5} else { 6 // データがあったので、その値もチェックしていく必要がある 7 // 1.そもそも上記②の値のどれが送られたかで条件分岐がはじまる 8 if($value === "WorkIn") { 9 10 } elseif($value === "WorkOut") { 11 12 } elseif($value === "RestIn") { 13 14 } elseif($value === "RestOut") { 15 16 }
PHP
1// 今回はこちらをテストとして記載していきます 2if($value === "WorkIn") { 3 // 選択されたのがWorkInだった時 4 // データ自体は存在しているが、$tableCheck["WorkIn"]に値があるのかどうか? 5 if($tableCheck["WorkIn"] !== "00:00:00") { 6 // 既に入っている場合は今回では処理を終了とする 7 return; 8 } else { 9 // データはあるが、WorkInにはまだ時刻が入っていない場合 10 // データがあるので下記のような値がテーブルにあるとします 11 /* 12 * id 1 13 * Name A 14 * TimeDate '2017-02-07' 15 * WorkIn '00:00:00' 16 * WorkOut '00:00:00' 17 * RestIn '00:00:00' 18 * RestOut '00:00:00' 19 */ 20 // 今回はUpdateなので、基本的な部分はテーブルからの値をそのまま使い、WorkInの部分だけ送信された時の時刻を入れることにします 21 $this->id = $tableCheck["id"]; 22 $this->Name = $tableCheck["Name"]; 23 $this->WorkIn = $WorkIn // date('H:i')で取得した値 24 $this->WorkOut = $tableCheck["WorkOut"]; 25 $this->RestIn = $tableCheck["RestIn"]; 26 $this->RestOut = $tableCheck["RestOut"]; 27 $this->_Update(// 値をセット); 28}
Updateの部分自体は共通で良いと思うのですが、
今回の場合WorkInならWorkIn以外はテーブルのデータ、
WorkOutならWorkOut以外がテーブルのデータという事になろうかと思います。
それぞれを作ってもいいのですが、、、
function WorkIn_Upとかみたいに、、、
もし、すっきりこれで行けるかもという方法、又はそもそもこういうやり方自体が遠回りなやり方なんだとは思うのですが、、、アドバイス等いただければと思います。
今回は、これだけといえばこれだけですので、わざわざより書いた方が早いかもしれませんが、ここから項目の増化なりなんなりに応用できるかなと思ったので、、、
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/08 08:14