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

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

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

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

Q&A

解決済

1回答

1035閲覧

PHPカレンダー翌月リンク

kani-toto

総合スコア16

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

0グッド

0クリップ

投稿2020/02/17 05:11

編集2020/02/17 05:43

度々、申し訳ありません。リンクのURL試しにコピーしたものになっていましたので編集しました。

PHPでカレンダーを作成をしていました。
前月 翌月のリンクを押すと
object not found!になるエラーを解決したい。
カレンダーのメイン画面の表示は問題なくできます。
Youtubeの写経です。動画内PHPバージョンは5.3.3、
私の環境はPHP7.3.8です。
windows 10 Pro 64 ver1903
ブラウザはchromeです。

試したこと
var_dump($_GET) 結果array(0){}
そもそもここでうまく受け取れていない??
エラー画面のURLの末尾はy=2020&m=03がついているので必要な情報は送れているのかと・・・。
解決方法教えてください。よろしくお願いします。
<ソースコード>

<!DOCTYPE html> <html> <head> <title>PHPカレンダー</title> <meta charset="utf-8"> <?php var_dump($_GET); $year = 0; //表示する年 $month = 0; //表示する月 $dow = ['日', '月', '火', '水', '木', '金', '土']; if (isset($_GET['y'])) { $year = intval($_GET['y']); } if (isset($_GET['m'])) { $month = intval($_GET['m']); } if (!$year || !$month || !checkdate($month, 1, $year)) { //現在の年月 $now_date = new DateTime(); $year = $now_date->format('Y'); $month = $now_date->format('m'); } try { $datetime = new DateTime("{$year}-{$month}-1"); //表示する月(例外処理) } catch (Exception $e) { echo $e->getMessage(); exit(1); } $first_day = $datetime->format('w'); //1日の曜日 ?> </head> <body> <?php echo $datetime->format('Y年m月'); ?> <table> <caption><?php $datetime->format('Y年m月') ?></caption> <thead> <tr> <?php foreach ($dow as $day) : ?> <th><?php echo $day ?></th> <?php endforeach ?> </tr> </thead> <tbody> <tr> <?php for ($date = 1; $date <= $datetime->format('t'); $date++) { ?> <?php if ($date === 1) { $i = 0; while ($i < $first_day) { ?> <td>&nbsp;</td> <?php $i++; } } ?> <td><?php echo $date ?></td> <?php if ($date % 7 === 7 - $first_day) { ?> </tr> <tr> <?php } ?> <?php } ?> </tr> </tbody> </table> <p> <?php $datetime->modify('-1 month'); ?> <a href="/calen.php?y=<?php echo $datetime->format('Y') ?>&m=<?php echo $datetime->format('m') ?>">前月</a> <?php $datetime->modify('+2 months'); ?> <a href="/calen.php?y=<?php echo $datetime->format('Y') ?>&m=<?php echo $datetime->format('m') ?>">翌月</a> </p> </body> </html>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yodel

2020/02/17 05:18

<編集依頼>ソースコードはコードタグで囲ってください。  ```ここに言語を入力 コード ```
yodel

2020/02/17 05:34

コード範囲をドラッグして、上にある<CODE>ボタンを押すか、 コードの前後を「```」で囲うとコードとして表示できます。他の人がコード見やすくなります!
m.ts10806

2020/02/17 05:57

>動画内PHPバージョンは5.3.3、 私の環境はPHP7.3.8 この時点で動画は参考にすべきではないですよ。10年は違います。
kani-toto

2020/02/17 06:06

ありがとうございます。
guest

回答1

0

ベストアンサー

<a href="/calen.php? だと、ドキュメントルート上にあるcalenを指すので、
試しに
<a href="./calen.php? にしてみるとか単に<a href="calen.php? にしてみるとか。

投稿2020/02/17 05:18

編集2020/02/17 05:43
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/17 05:46

ちなみに、3月は表示バグが発生しますね。アルゴリズムがおかしいところがありますが、おわかりでしょうか。
kani-toto

2020/02/17 06:01

おかしいです。。。
kani-toto

2020/02/17 06:14

<?php if ($date % 7 === 7 - $first_day) { ?> 書いていて腑に落ちなかったのはこの部分です。 1日から始まるときにおかしくなる?ですかね・・・。
kani-toto

2020/02/17 06:35

迅速で的確な回答ありがとうございました。 初めての質問で不備があり読みにくくてすみませんでした。 本当に助かりました。ありがとうございます。 1日が日曜日の時の表示が崩れる件はもう少し戦ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問