ひげめがねプログラム

初心者プログラマーの覚書となんかいろいろ

基準日からの前月・次月取得~フラグを添えて~

f:id:pstar:20170829224444j:plain
なんかの基準日があって、それを基準に前月、次月ボタン押して表示データを切り替えたい。

【基準日:2017/09/07】

うーーーん。どうする?
かにゃめはフラグを持たせるやり方で実装しました。めちゃ簡単。

隠しフィールドでフラグを持つ

//blade
{{ Form::hidden('dateFlg', 0,['id' => 'dateFlg']) }}

//HTML
<input id="dateFlg" name="dateFlg" type="hidden" value="0">

基準になる0を値にセットしますよ。もちろん送信するFormの中に書きます。
フラグって名前が微妙にしっくりこないけどいい感じのが思いつかないからいいか。

ボタンクリックイベント

//前月ボタン
$('#lastMonth').click(function(){
 var i = $('#dateFlg').val();
 i -- ;
 $('#dateFlg').val(i);
 $('#dataForm').submit();
});

//次月ボタン
$('#nextMonth').click(function(){
 var i = $('#dateFlg').val();
 i ++ ;
 $('#dateFlg').val(i);
 $('#dataForm').submit();
});

前月ボタンクリックならフラグの値から1引いて、次月ボタンクリックならフラグの値から1足していきます。
さらにさらに今回は基準値より前は選択できないようにします。

ページ読み込み時にフラグの値がゼロだったらボタン無効です。無効無効!

//javascript
if($('#dateFlg').val() == 0){
  $('#lastMonth').prop('disabled',true);
}

laravel Controller側の処理

//フラグのパラメータ取得
$dateFlg = Input::get('dateFlg');

//基準日
$recordDate = date('Y/m/d');

//前月or次月取得
$date = date('Y/m/d', strtotime($recordDate.' +'.$dateFlg.' month'));

フラグ$dateFlgに値が入っているので基準日$recordDateから2か月後とか3カ月後などが取得ができる・・・という感じ。
基準日以前も出したいよって時はifで分岐かなー

//もし0より小さければ・・・
if($dateFlg < 0){
$date = date('Y/m/d', strtotime($recordDate.' -'.-$dateFlg.' month'));
}

マイナス値が入ってる$dateFlgはマイナスつけて反転です。

こんな感じでデータとれたよ('ω')