実現したいこと
Laravel MVC を使用
1,ユーザーが学年を選択
2,選択した学年がDBの中に入っている学年と比較する
3,一致してればその対象の授業のタイトルを表示させる。
発生している問題・分からないこと
DBの値とユーザーが選択した値を一致させる方法を知りたい。
また、ユーザー選択画面では学年ごとに別々の科目が授業されるようにしたい。
該当のソースコード
curriculums_list
1<div class="container"> 2 <div class="buttons"> 3 <button onclick="showSubjects('grade1')">小学校1年生</button> 4 <button onclick="showSubjects('grade2')">小学校2年生</button> 5 <button onclick="showSubjects('grade3')">小学校3年生</button> 6 <button onclick="showSubjects('grade4')">小学校4年生</button> 7 <button onclick="showSubjects('grade5')">小学校5年生</button> 8 <button onclick="showSubjects('grade6')">小学校6年生</button> 9 <button onclick="showSubjects('grade7')">中学校1年生</button> 10 <button onclick="showSubjects('grade8')">中学校2年生</button> 11 <button onclick="showSubjects('grade9')">中学校3年生</button> 12 <button onclick="showSubjects('grade10')">高校1年生</button> 13 <button onclick="showSubjects('grade11')">高校2年生</button> 14 <button onclick="showSubjects('grade12')">高校3年生</button> 15 </div> 16 17 <div id="subjects-container"> 18 <!-- 科目リストがここに表示されます --> 19 </div> 20 21 </div>
js
1const subjects = ['国語', '数学', '社会', '理科', '英語', '体育']; 2 3function showSubjects(grade) { 4 const subjectsContainer = document.getElementById('subjects-container'); 5 subjectsContainer.innerHTML = ''; 6 7 // const gradeTitle = document.createElement('h2'); 8 // gradeTitle.textContent = gradeToTitle(grade); 9 // subjectsContainer.appendChild(gradeTitle); 10 11 const subjectsList = document.createElement('ul'); 12 subjectsList.className = 'subjects'; 13 14 subjects.forEach(subject => { 15 const listItem = document.createElement('li'); 16 listItem.textContent = subject; 17 subjectsList.appendChild(listItem); 18 }); 19 20 subjectsContainer.appendChild(subjectsList); 21 22 const p_title_id = document.getElementById('p_title'); 23 p_title_id.innerHTML = ''; 24 const p_title = document.createElement('p'); 25 p_title.textContent = gradeToTitle(grade); 26 p_title_id.appendChild(p_title); 27 p_title.classList.add('p_style'); 28} 29 30 31 32 33function gradeToTitle(grade) { 34 const titles = { 35 grade1: '小学校1年生', 36 grade2: '小学校2年生', 37 grade3: '小学校3年生', 38 grade4: '小学校4年生', 39 grade5: '小学校5年生', 40 grade6: '小学校6年生', 41 grade7: '中学校1年生', 42 grade8: '中学校2年生', 43 grade9: '中学校3年生', 44 grade10: '高校1年生', 45 grade11: '高校2年生', 46 grade12: '高校3年生', 47 }; 48 return titles[grade]; 49} 50
Curriculum(Model)
1class Curriculum extends Model 2{ 3 use HasFactory; 4 5 protected $fillable = [ 6 'title', 7 'thumbnail', 8 'description', 9 'video_url', 10 'alway_delivery_flg', 11 'grade_id', 12 ]; 13public function storeCurriculum($grade , $request) 14 { 15 //授業データを保存 16 $curriculums = new Curriculum(); 17 $curriculums->title = $request->input('title'); 18 19 //ここにサムネイル画像を入れる 20 // 商品画像を保存 21 if ($request->hasFile('thumbnail_image')) { 22 23 return back()->with('error', 'ファイルがアップロードされていません'); 24 $imagePath = $request->file('thumbnail_image')->store('images', 'public'); 25 $curriculums->thumbnail = $imagePath; 26 } 27 28 $curriculums->description = $request->input('description'); 29 $curriculums->video_url = $request->input('video_url'); 30 $curriculums->alway_delivery_flg = $request->boolean('alway_delivery_flg'); 31 $curriculums->grade_id = $request->input('grade_id'); 32 33 $curriculums->save(); 34 return $curriculums; 35 } 36}
Curriculum_List(controller)
1class Curriculum_List extends Controller 2{ 3 //授業一覧-画面 4 public function showCurriculum_List(Request $request) 5 { 6 $deliverytimes = Delivery_time::all(); 7 $model = new Curriculum(); 8 $curriculums = $model->getCurriculum(); 9 return view('curriculums_list\curriculums_list' , compact('curriculums' , 'deliverytimes')); 10 } 11} 12
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
イメージ
授業入力フォームで登録→DBに保存
授業一覧画面でユーザーが学年を選択
選択された学年とDBに入っている学年を比較する。
一致していればDBのテーブルの授業タイトルを授業一覧画面のユーザーが選択した学年の画面で表示。
チャットGPTより
ファイルを二つ作成
1,入力フォーム専用のファイル→授業一覧画面の学年を選択するファイル
2,出力専用のファイル→比較した結果を表示させるファイル
ただ、ファイルが複雑になることが懸念点。
補足
![guest](/img/icon/icnUserSample.jpg)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。