🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

Q&A

解決済

1回答

1664閲覧

laravel、phpでカレンダー月めくりが上手くいかない

yoheiiii

総合スコア91

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

0グッド

0クリップ

投稿2020/12/05 11:34

laravel,phpでカレンダーを作っております。
当月の表示はできましたが月めくりのリンクを作って実行すると404
エラーになります。リンク部分が間違えだと思うのですが、わかりません。

ルート

Route::get('calendar', 'dayController@calendar');

コントローラ

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class dayController extends Controller { public function calendar() { return view('calendar'); } }

ブレード

<?php use Carbon\Carbon; $m = isset($_GET['m'])? htmlspecialchars($_GET['m'], ENT_QUOTES, 'utf-8') : ''; $y = isset($_GET['y'])? htmlspecialchars($_GET['y'], ENT_QUOTES, 'utf-8') : ''; if($m!=''||$y!=''){ $dt = Carbon::createFromDate($y,$m,01); }else{ $dt = Carbon::createFromDate(); } renderCalendar($dt); function renderCalendar($dt) { $dt->startOfMonth(); //今月の最初の日 $dt->timezone = 'Asia/Tokyo'; //日本時刻で表示 //1ヶ月前 $sub = Carbon::createFromDate($dt->year,$dt->month,$dt->day); $subMonth = $sub->subMonth(); $subY = $subMonth->year; $subM = $subMonth->month; //1ヶ月後 $add = Carbon::createFromDate($dt->year,$dt->month,$dt->day); $addMonth = $add->addMonth(); $addY = $addMonth->year; $addM = $addMonth->month; //リンク $title = '<caption><a href="./calendar.php?y='.$subY.'&&m='.$subM.'"><<前月 </a>';//前月のリンク $title .= $dt->format('F Y');//月と年を表示 $title .= '<a href="./calendar.php?y='.$addY.'&&m='.$addM.'"> 来月>></a></caption>';//来月リンク //曜日の配列作成 $headings = ['月','火','水','木','金','土','日']; $calendar = '<table class="table" border=1>'; $calendar .= '<thead >'; foreach($headings as $heading){ $calendar .= '<th class="header">'.$heading.'</th>'; } $calendar .= '</thead>'; $calendar .= '<tbody><tr>'; //今月は何日まであるか $daysInMonth = $dt->daysInMonth; for ($i = 1; $i <= $daysInMonth; $i++) { if($i==1){ if ($dt->format('N')!= 1) { $calendar .= '<td colspan="'.($dt->format('N')-1).'"></td>'; //1日が月曜じゃない場合はcospanでその分あける } } if($dt->format('N') == 1){ $calendar .= '</tr><tr>'; //月曜日だったら改行 } $comp = new Carbon($dt->year."-".$dt->month."-".$dt->day); //ループで表示している日 $comp_now = Carbon::today(); //今日 //ループの日と今日を比較 if ($comp->eq($comp_now)) { //同じなので緑色の背景にする $calendar .= '<td class="day" style="background-color:#FFFF66;">'.$dt->day.'</td>'; }else{ switch ($dt->format('N')) { case 6: $calendar .= '<td class="day" style="background-color:#66CCFF" style="color:#00F">'.$dt->day.'</td>'; break; case 7: $calendar .= '<td class="day" style="background-color:#f08080">'.$dt->day.'</td>'; break; default: $calendar .= '<td class="day" >'.$dt->day.'</td>'; break; } } $dt->addDay(); } $calendar .= '</tr></tbody>'; $calendar .= '</table>'; echo $title.$calendar; }

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

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

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

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

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

guest

回答1

0

自己解決

//リンク
$title = '<caption><a href="./calendar?y='.$subY.'&&m='.$subM.'"><<前月 </a>';//前月のリンク
$title .= $dt->format('F Y');//月と年を表示
$title .= '<a href="./calendar?y='.$addY.'&&m='.$addM.'"> 来月>></a></caption>';//来月リンク

投稿2020/12/05 12:14

yoheiiii

総合スコア91

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問