実現したいこと
別ファイルに日付データを引き回した時に、日付が19700101になってしまいます。
例)20200911を取得してリンクのパラメータで別のファイルに引き回すと19700101になってしまいます。
これを直して正常な日付データを引き回したいです。
現状
現在phpで筋トレメニューを日付別に登録して管理するwebアプリケーションを作成していて、今はメニュー削除処理を作成しています。
画面遷移
calendar.php(ここでカレンダーから日付を選択します。ちなみにここで日付データを持たせています)->menupost.php(ここでメニューを追加したり削除用のページに遷移したりします)->menu_delete.php(ここで削除機能を実行します。実行した後にmenupost.phpにリダイレクトするのですが、そこで上記のような問題が発生してしまいました)
該当のソースコード
php
1//calendar.php 2<?php 3require_once '../libs/init.php'; 4 5//今日の日付を持ったオブジェクト 6$current_date = new DateTime(); 7 8//日曜日の始まりにする処理 9if(0 < $current_date->format('w')) { 10 $current_date->modify(sprintf('- %d days', $current_date->format('w'))); 11} 12 13$last_date = (clone $current_date)->modify('+ 7 days'); 14$dates = []; 15while($current_date < $last_date) { 16 $dates[] = clone $current_date; 17 $current_date->modify('+ 1 day'); 18} 19 20$smarty = getSmarty(); 21$smarty->assign('dates', $dates); 22$smarty->display('calendar.tpl');
html
1//calendar.tpl(カレンダー機能の表示ファイルです。smartyファイル) 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5 <meta charset="utf-8"> 6 <title>PHPカレンダー</title> 7 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 8 <link href="https://fonts.googleapis.com/css?family=Noto+Sans+JP" rel="stylesheet"> 9</head> 10<body> 11{foreach $dates as $date} 12 <a href="menupost.php?date={$date->format('Ymd')}">{$date->format('Y/m/d')}</a><br> 13 14 15{/foreach} 16</body> 17</html>
//menupost.php(メニュー追加機能のphpファイルです。) <?php require_once '../libs/init.php'; if(!isset($_SESSION['user_id'])) { header("Location: login.php"); } $datetime = $_GET['date']; // $date = date('Ymd', strtotime($datetime)); $date = date('Ymd',strtotime($datetime)); echo $date; //ここで現在日付のデータはどうなっているのかを確認しています if(isset($date)) { try { $pdo = db_connect(); $menus = fetchAllMenus($pdo, $_SESSION['user_id'], $date); } catch (PDOException $Exception) { print "error:". $Exception->getMessage(); } $smarty = getSmarty(); $smarty->assign('menus', $menus); $smarty->assign('date', $date); $smarty->display('menupost.tpl'); }
html
1//menupost.tpl(メニュー追加機能の表示ファイルです。smartyファイル) 2{foreach from=$menus item=$row} 3 <tbody> 4 <tr> 5 <td></td> 6 <td>{$row.menu}</td> 7 <td>{$row.num}</td> 8 <td>{$row.setnum}</td> 9 <td><a href="menu_delete.php?action=delete&id={$row.id}&date={$date}" class="complate" name="delete">完了</td> 10 </tr> 11 </tbody> 12{/foreach} 13</table> 14 15<form action="insert.php" id="contact" method="post"> 16 <div class="container"> 17 <div class="head"> 18 <h2>メニューを追加しましょう!</h2> 19 </div> 20 <input type="hidden" name="date" value="{$date}"></input> 21 <input type="text" name="menu" placeholder="トレーニングメニュー"/><br /> 22 <input type="number" name="num" placeholder="回数or秒数" /> 23 <input type="number" name="setnum" placeholder="セット数"/><br /> 24 25 <button id="submit" name="insert" type="submit">追加</button> 26 </div> 27</form>
php
1//menu_delete.php(メニュー削除機能です。) 2<?php 3require_once '../libs/init.php'; 4 5 6//削除処理ファイル 7$pdo = db_connect(); 8try { 9 $pdo->beginTransaction(); 10 $id = $_REQUEST['id']; 11 $date = $_REQUEST['date']; 12 echo $date; 13 $date = strtotime('Ymd',$date); 14 var_dump($date); 15 $delete = deleteTrainingMenu($pdo, $id, $date); 16 // $sql = "DELETE FROM `trainingmenu` WHERE `id` = :id"; 17 // $stmt = $pdo->prepare($sql); 18 // $stmt->bindValue(':id', $id, PDO::PARAM_INT); 19 // $stmt->execute(); 20 // $pdo->commit(); 21} catch(PDOException $Exception) { 22 $pdo->rollBack(); 23 print 'エラー:'. $Exception->getMessage(); 24} 25 26if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'delete' && $_REQUEST['id'] > 0) { 27 header("Location:menupost.php?date={$date}"); 28}
試したこと
https://teratail.com/questions/172508
こちらの記事を確認して実行してみたのですが、結果は変わらずで、19700101になってしまいますた。
以上です。
わかる方がいらしたらご回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。