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

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

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

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

Q&A

解決済

2回答

1712閲覧

PHPカレンダーで土日に色を付けたいです

kotouharuto

総合スコア38

PHP

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

0グッド

0クリップ

投稿2020/05/04 09:25

編集2020/05/04 09:47

お世話になります。
現在PHPでカレンダーを作っていて、土日に青赤と色をつけたいと思って試行錯誤したのですが、自分の力ではどうになりそうでないので質問させていただきます。

実現したい事

PHPカレンダーで土日の日だけに色を付けたい

コード

PHP

1コード 2<?php 3// カレンダーを表示する年を指定する 4$year = 2019; 5 6// 年始のタイムスタンプを取得 7$timestamp = strtotime("{$year}-01-01 00:00:00"); 8$weekday = 0; 9?> 10 11<!DOCTYPE html> 12<html lang="ja"> 13<head> 14<meta charset="utf-8"> 15<title>カレンダーを作成する</title> 16</head> 17<body> 18<main> 19 <?php for( $i=1; $i<=12; $i++): ?> 20 <table> 21 <caption><?php echo $i; ?></caption> 22 <thead> 23 <tr> 24 <th></th><th></th><th></th><th></th> 25 <th></th><th></th><th></th> 26 </tr> 27 </thead> 28 <tbody> 29 <?php 30 // 開始日を取得 31 $start_day_timestamp = mktime(0,0,0,$i,1,$year); 32 33 // 末日を取得 34 $end_day_timestamp = mktime(0,0,0,($i+1),0,$year); 35 $end_day = date("d", $end_day_timestamp); 36 37       //1日から月末までを表示する処理 38 for( $j=1; $j <= $end_day; $j++ ) { 39 40 if( $j === 1 ) { 41 42 echo '<tr>'; 43 44 $weekday = date("w", $start_day_timestamp); 45 46 for( $k=0; $k<$weekday; $k++ ) { 47 echo '<td></td>'; 48 } 49 } 50 51 52 echo '<td>'.$j.'</td>'; 53 $weekday++; 54 55 if( 6 < $weekday ) { 56 echo '</tr><tr>'; 57 $weekday = 0; 58 } 59 60 // if($weekday = date("w" == 0)) { 61 // $style = 'color: red;'; 62 // } else { 63 // $style = 'color: #222;'; 64 // } 65 } 66 ?> 67 </tbody> 68 </table> 69 <?php endfor; ?> 70</main> 71</body> 72</html>

localhostでの表示内容

イメージ説明

試した事

コード内終盤のこの処理で日付として宣言した$weekdayの”w”が0だったら色を赤にするという事を試してみたですが、スタイルが適用されなかったです。
また、if文内の$weekdayを上のfor文で使われている$kや$jにもしてみたのですが、同じようにスタイルは適用されなかったです。

php

1// if($weekday = date("w" == 0)) { 2// $style = 'color: red;'; 3// } else { 4// $style = 'color: #222;'; 5// }

こんな感じです。
質問の仕方に不満があれば申し訳ないです。
わかる方がいらっしれば、ご教授の方よろしくお願いします。

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

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

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

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

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

m.ts10806

2020/05/04 09:28 編集

$styleをどのように使ったのでしょうか。「効果がない」では何が起きたか何一つ分かりませんので具体的に記載してください。 PHPから動的にではなく、静的HTML作ってイメージ持ってから作りましたか?
kotouharuto

2020/05/04 09:39

失礼いたしました。 早速修正しますので少々お待ちください。 そうですね、静的HTMLをイメージして作りました。
kotouharuto

2020/05/04 09:49

お待たせしました、質問修正完了しました。
kei344

2020/05/04 10:36

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。また、解決されていないなら状況を質問文に追記ください。
kotouharuto

2020/05/04 10:50

失礼しました、解決済にすることを忘れてしまいました。
guest

回答2

0

ベストアンサー

こうかな。

PHP

1if ( $weekday == 6 ) { 2 $style = 'color: red;'; 3} else { 4 $style = 'color: #222;'; 5} 6echo '<td style="'.$style.'">'.$j.'</td>';

【PHP: 比較演算子 - Manual】
https://www.php.net/manual/ja/language.operators.comparison.php

投稿2020/05/04 09:53

kei344

総合スコア69364

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

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

kotouharuto

2020/05/04 10:02

ご回答ありがとうございます。 実装してみたのですが、日にちが 112233 のように一日ずつ複製されてしまいました。 試しに$jを削除してみたら表が崩れてしまいました。
kei344

2020/05/04 10:06

echo '<td>'.$j.'</td>'; と置き換えましたか?それでもそうなったのであれば状況がわからないので対処方法がわかりません。
kotouharuto

2020/05/04 10:30

失礼しました。そのやり方ではできなかったのですが、コード内の問題点に気づき解決しました! 上の方で一度echo '<td>'.$j.'</td>';と記述した後に回答して頂いた処理をしてしまっていたので日にちが複製されていました。 ありがとうございました!
guest

0

失礼します。
$weekday==0の時は色が赤になりましたか?

投稿2021/01/27 08:33

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問