前提・実現したいこと
PHP(laravel)でタスク管理のアプリを作成しています。
期日があるタスクを編集画面で表示し、
現在DBで保存されている期日から月だけをプルダウンですでに選択された状態にしたいと考えています。
発生している問題・エラーメッセージ
DBのデータに関わらず、プルダウンの一番最後にある「12」が選択された状態になります。
DBのデータを選択済みにするにはどのようにすればよいでしょうか。
該当のソースコード
期日がDBに記載がないタスクの月は"00"なので、"00"でない場合に選択された状態にしたいです。
laravel
1 <!-- edit.blade.php --> 2 <select id="month" name="month"> 3 <option value="">--- 4 </option> 5 @foreach(range(1, 12) as $month) 6 <option value="{{ $month }}" {{ old('month') == $month ? 'selected' : '' }} 7 @if ($todo_month !== "00") selected @endif>{{ $month }}</option> 8 @endforeach 9 </select> 10 <label for="month">月</label>
laravel
1 <!-- controller --> 2 public function edit($id) 3 { 4 // todoおよびfrequencyテーブルのデータを取得 5 $todo = Todo::find($id); 6 $todo_year = date("Y",strtotime($todo->deadline)); 7 $todo_month = date("m",strtotime($todo->deadline)); 8 $todo_day = date("d",strtotime($todo->deadline)); 9 $frequency = frequency::where('todos_id', '=', $id) 10 ->first(); 11 return view('todos.edit', compact('todo', 'frequency','todo_year','todo_month','todo_day')); 12 }
js
1 2// 日付の取得 3function setDay() { 4 // 年の値を取得 5 const yearVal = document.getElementById('year').value; 6 // 月の値を取得 7 const monthVal = document.getElementById('month').value; 8 // 日のセレクトボックスに挿入するHTML 9 let html = '<option value="">---</option>'; 10 // 年月が有効な値の場合のみ日付の選択肢を加える 11 if (yearVal !== '' && monthVal !== '') { 12 // 特定の年月の最後の日付を取得する 13 const lastDay = new Date(yearVal, monthVal, 0).getDate(); 14 // optionを組み立てる 15 for (let day = 1; day <= lastDay; day++) { 16 html += '<option value="' + day + '">' + day + '</option>'; 17 } 18 } 19 document.getElementById('day').innerHTML = html; 20} 21 22window.onload = function () { 23 setDay(); 24 document.getElementById('year').addEventListener('change', setDay); 25 document.getElementById('month').addEventListener('change', setDay); 26 27 // リダイレクトした場合に元の入力値を復元する 28 const dayElem = document.getElementById('day'); 29 dayElem.value = dayElem.getAttribute('data-old-value'); 30};
試したこと
$todo_monthはDBの月データ"02"を持ってきていることは確認しました。
補足情報(FW/ツールのバージョンなど)
PHP 7.4.9
laravel 6.18.35
MySQL 5.7.26