質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

解決済

PHP 日付が19700101になってしまう

kotouharuto
kotouharuto

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1回答

0評価

1クリップ

636閲覧

投稿2020/09/12 03:20

実現したいこと

別ファイルに日付データを引き回した時に、日付が19700101になってしまいます。
例)20200911を取得してリンクのパラメータで別のファイルに引き回すと19700101になってしまいます。
これを直して正常な日付データを引き回したいです。

現状

現在phpで筋トレメニューを日付別に登録して管理するwebアプリケーションを作成していて、今はメニュー削除処理を作成しています。

画面遷移

calendar.php(ここでカレンダーから日付を選択します。ちなみにここで日付データを持たせています)->menupost.php(ここでメニューを追加したり削除用のページに遷移したりします)->menu_delete.php(ここで削除機能を実行します。実行した後にmenupost.phpにリダイレクトするのですが、そこで上記のような問題が発生してしまいました)

該当のソースコード

php

//calendar.php <?php require_once '../libs/init.php'; //今日の日付を持ったオブジェクト $current_date = new DateTime(); //日曜日の始まりにする処理 if(0 < $current_date->format('w')) { $current_date->modify(sprintf('- %d days', $current_date->format('w'))); } $last_date = (clone $current_date)->modify('+ 7 days'); $dates = []; while($current_date < $last_date) { $dates[] = clone $current_date; $current_date->modify('+ 1 day'); } $smarty = getSmarty(); $smarty->assign('dates', $dates); $smarty->display('calendar.tpl');

html

//calendar.tpl(カレンダー機能の表示ファイルです。smartyファイル) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>PHPカレンダー</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link href="https://fonts.googleapis.com/css?family=Noto+Sans+JP" rel="stylesheet"> </head> <body> {foreach $dates as $date} <a href="menupost.php?date={$date->format('Ymd')}">{$date->format('Y/m/d')}</a><br> {/foreach} </body> </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

//menupost.tpl(メニュー追加機能の表示ファイルです。smartyファイル) {foreach from=$menus item=$row} <tbody> <tr> <td></td> <td>{$row.menu}</td> <td>{$row.num}</td> <td>{$row.setnum}</td> <td><a href="menu_delete.php?action=delete&id={$row.id}&date={$date}" class="complate" name="delete">完了</td> </tr> </tbody> {/foreach} </table> <form action="insert.php" id="contact" method="post"> <div class="container"> <div class="head"> <h2>メニューを追加しましょう!</h2> </div> <input type="hidden" name="date" value="{$date}"></input> <input type="text" name="menu" placeholder="トレーニングメニュー"/><br /> <input type="number" name="num" placeholder="回数or秒数" /> <input type="number" name="setnum" placeholder="セット数"/><br /> <button id="submit" name="insert" type="submit">追加</button> </div> </form>

php

//menu_delete.php(メニュー削除機能です。) <?php require_once '../libs/init.php'; //削除処理ファイル $pdo = db_connect(); try { $pdo->beginTransaction(); $id = $_REQUEST['id']; $date = $_REQUEST['date']; echo $date; $date = strtotime('Ymd',$date); var_dump($date); $delete = deleteTrainingMenu($pdo, $id, $date); // $sql = "DELETE FROM `trainingmenu` WHERE `id` = :id"; // $stmt = $pdo->prepare($sql); // $stmt->bindValue(':id', $id, PDO::PARAM_INT); // $stmt->execute(); // $pdo->commit(); } catch(PDOException $Exception) { $pdo->rollBack(); print 'エラー:'. $Exception->getMessage(); } if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'delete' && $_REQUEST['id'] > 0) { header("Location:menupost.php?date={$date}"); }

試したこと

https://teratail.com/questions/172508
こちらの記事を確認して実行してみたのですが、結果は変わらずで、19700101になってしまいますた。


以上です。
わかる方がいらしたらご回答よろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。