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

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

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

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

解決済

PHPでカレンダー作成中突然cssが適用されなくなりました

mituki
mituki

総合スコア0

PHP

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

1回答

0評価

0クリップ

537閲覧

投稿2019/11/11 11:52

編集2022/01/12 10:58

現在PHPでカレンダーを作成しております。作成中に当然CSSが適用されなくなる問題が発生しました。
chromeの検証画面を確認したところ、192.168.33.10/:6 Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://192.168.33.10:8000/karenda.php/cake.css".と表示されています。
ソースコードは以下の通りです。

開発環境はvirtual box,vagrantです。

PHP

<?php function h($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); } try { if (!isset($_GET['t']) || !preg_match('/\A\d{4}-\d{2}\z/', $_GET['t'])) { throw new Exception(); } $thisMonth = new DateTime($_GET['t']); } catch (Exception $e) { $thisMonth = new DateTime('first day of this month'); } $dt = clone $thisMonth; $prev = $dt->modify('-1 month')->format('Y-m'); $dt = clone $thisMonth; $next = $dt->modify('+1 month')->format('Y-m'); $yearMonth = $thisMonth->format('F Y'); $tail = ''; $lastDayOfPrevMonth = new DateTime('last day of ' . $yearMonth . ' -1 month'); while ($lastDayOfPrevMonth->format('w') < 6) { $tail = sprintf('<td class="gray">%d</td>', $lastDayOfPrevMonth->format('d')) . $tail; $lastDayOfPrevMonth->sub(new DateInterval('P1D')); } $body = ''; $period = new DatePeriod( new DateTime('first day of ' . $yearMonth), new DateInterval('P1D'), new DateTime('first day of ' . $yearMonth . ' +1 month') ); $today = new DateTime('today'); foreach ($period as $day) { if ($day->format('w') % 7 === 0) { $body .= '</tr><tr>'; } $todayClass = ($day->format('Y-m-d') === $today->format('Y-m-d')) ? 'today' : ''; $body .= sprintf('<td class="youbi_%d %s">%d</td>', $day->format('w'), $todayClass, $day->format('d')); } $head = ''; $firstDayOfNextMonth = new DateTime('first day of ' . $yearMonth . ' +1 month'); while ($firstDayOfNextMonth->format('w') > 0) { $head .= sprintf('<td class="gray">%d</td>', $firstDayOfNextMonth->format('d')); $firstDayOfNextMonth->add(new DateInterval('P1D')); } $html = '<tr>' . $tail . $body . $head . '</tr>'; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Calendar</title> <link rel="stylesheet" href="cake.css"> </head> <body> <table> <thead> <tr> <th><a href="/karenda.php/?t=<?php echo h($prev); ?>">&laquo;</a></th> <th colspan="5"><?php echo h($yearMonth); ?></th> <th><a href="/karenda.php/?t=<?php echo h($next); ?>">&raquo;</a></th> </tr> </thead> <tbody> <tr> <td>Sun</td> <td>Mon</td> <td>Tue</td> <td>Wed</td> <td>Thu</td> <td>Fri</td> <td>Sat</td> </tr> <?php echo $html; ?> </tbody> <tfoot> <tr> <th colspan="7"><a href="/karenda.php/">Today</a></th> </tr> </tfoot> </table> </body> </html>

css

body { font-family: Arial, sans-serif; font-size: 14px; } a { text-decoration: none; } table { margin: 15px auto; border: 1px solid #ddd; border-collapse: collapse; } th { background: #eee; } th, td { padding: 7px; text-align: center; } .youbi_0 { color: red; } .youbi_6 { color: blue; } .today { font-weight: bold; } .gray { color: #dedede; }
<thead> <tr> <th><a href="/karenda.php/?t=<?php echo h($prev); ?>">&laquo;</a></th> <th colspan="5"><?php echo h($yearMonth); ?></th> <th><a href="/karenda.php/?t=<?php echo h($next); ?>">&raquo;</a></th> </tr> </thead>

のaタグのリンクを最初href="/?t"にしていました。この時点ではcssが適用されていたのですが、カレンダーの月を切り替えたとたんにNotfoundの画面が表示されました。そのためhref="/?t"からhref="/karenda.php/?tにしたことろ月の切り替えはうまくいったのですが、cssが剥がれてしまいました。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

PHP

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