実現したいこと
htmlでGETで送信したデータをセッションに保存して使用したいです。
現状
現在PHPを使用してwebサービスを開発しています。
内容として筋トレなどのトレーニングメニューをを入力して毎日のトレーニング内容を保存する
といったものなのです。
画面遷移は、
新規アカウント登録orログイン→会員ページ→カレンダーページ(トレーニングメニューを日別で登録するため)→トレーニングメニュー登録ページ
該当のソースコード
php
1<?php 2// menupost.php 3 4// 関数ファイルなどをrequire_onceしているファイル 5require_once '../libs/init.php'; 6 7// user_idがなかったらlogin.phpにリダイレクト 8if(!isset($_SESSION['user_id'])) { 9 header("Location: login.php"); 10} 11 12$date = $_GET['date']; 13 14 15try { 16 $pdo = db_connect(); 17 $menus = fetchAllMenus($pdo, $_SESSION['user_id'], $date); 18} catch (PDOException $Exception) { 19 print "error:". $Exception->getMessage(); 20} 21 22// smarty接続 23$smarty = getSmarty(); 24$smarty->assign('menus', $menus); 25$smarty->assign('date', $date); 26$smarty->display('menupost.tpl');
php
1<?php 2 3// calenadar.php 4require_once '../libs/init.php'; 5 6//今日の日付を持ったオブジェクト 7$current_date = new DateTime(); 8 9//日曜日の始まりにする処理 10if(0 < $current_date->format('w')) { 11 $current_date->modify(sprintf('- %d days', $current_date->format('w'))); 12} 13 14$last_date = (clone $current_date)->modify('+ 7 days'); 15$dates = []; 16while($current_date < $last_date) { 17 $dates[] = clone $current_date; 18 $current_date->modify('+ 1 day'); 19} 20 21$smarty = getSmarty(); 22$smarty->assign('dates', $dates); 23$smarty->display('calendar.tpl'); 24
html
1<!-- calendar.tpl(smartyファイルです) --> 2{foreach $dates as $date} 3 <a href="menupost.php?date={$date->format('Ymd')}">{$date->format('Y/m/d')}</a><br> 4 5{/foreach}
php
1<?php 2 3// init.php 4const APPLICATION_DIR = __DIR__. '/../'; 5require_once APPLICATION_DIR. 'libs/smarty/Smarty.class.php'; 6require_once APPLICATION_DIR. 'libs/fucntion.php'; 7require_once APPLICATION_DIR. 'libs/classes/AuthUser.php'; 8require_once APPLICATION_DIR. 'libs/classes/SessionManager.php'; 9 10session_start(); 11
発生している問題・エラー内容
calendar.phpから日付を選択(date)してmenupost.phpにジャンプして一度目にメニューを送信するまではいいのですが、追加後にもう一度追加しようとするとGETで送信されたdateがundefindになってしまいます。
今回はこちらを解決して2回目以降もdateを保存しておけるようにしたいです。
エラー内容
Notice: Undefined index: date in menupost.php
試したこと
$_GET['date']
をセッションに保存する。
→$_SESSION['date'] = $_GET['date']
以上です。
わかる方がいらしたらご回答よろしくお願いします。
また、ご不明な点があったら教えてください。
回答1件
あなたの回答
tips
プレビュー