
●質問の主旨
下記のコードでカレンダーを作りましたが、
日付が横一列に並んだ奇妙なカレンダーになってしまいます。
参考文献と比べて、同じコードを記述しているように思いますが、
なぜ改行されないのか、分かりません。
ご存知の方、アドバイスよろしくお願いします。
●参考文献
西沢直木「プログラミングの教科書」P196
●開発環境
windows8
xammp1.8.1
●コード(test.4)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>カレンダー</title>
</head>
<table border="1">
<tr>
<th>日</th>
<th>月</th>
<th>火</th>
<th>水</th>
<th>木</th>
<th>金</th>
<th>土</th>
</tr>
<tr>
<?php
$y =2012;
$m = 2;
$wd1 = date("w", mktime(0, 0, 0, $m, 1, $y));
for ($i = 1; $i <= $wd1; $i++) {
echo "<td> </td>";
}
$d = 1;
while (checkdate($m, $d, $y)) {
echo "<td>$d</td>";
if (date("w", mktime(0, 0, 0, $m, $d, $y)) == 6) {
//週を終了
echo"</tr>";
//次の週がある場合は新たな行を準備
if (checkdate($m, $d + 1, $y)) {
echo"<tr>";
}
}
//日付を1つすすめる
$d++;
}
// 最後の週の土曜日まで移動
$wdx = date("w", mktime(0, 0, 0, $m + 1, 0, $y));
for ($i = 1; $i < 7 - $wdx; $i++) {
echo "<td> </td>";
}
?>
</tr>
</table>

No.5ベストアンサー
- 回答日時:
>>3の補足に対しての追記になります。
> 一度目は、「560123456012345601234560123」と表示されました。
それは、「2013年」2月のカレンダーではないですか?
日数が28日しかなく、金曜日から始まってる月は ここ最近では 今年のものかと思います。
まぁ、本題とは関係ないので 正直 それほど気にすることでもないのですけど。
> Notice: Undefined variable: hoge
これは、俺の説明不足です。
一番 最初の行に ↓を追加すると ↑コレは出なくなるはずです。
<?php $hoge = ""; ?>
bm_hiroさま
たびたびのご回答ありがとうございます。
<?php $hoge = ""; ?>
を最初に入力したら、
Notice: Undefined variable: hoge
は、出なくなりました。
いろいろとアドバイス助かります。
No.3
- 回答日時:
『現象には必ず理由がある』
「ガリレオ」絶賛放送中。は、置いといて。
どうやれば、この現象が発生するのか確認してみました。
chrome , Firefox , IE9で確認。
実は「<TR>の開始タグ、終了タグ どっちか」があれば、ちゃんと改行されて表として表示されました。
なので、「両方 存在していない時」のみ 提示した画像のような画面になります。
となると、そちらの環境では、↓の行が 正常に動いていないと考えられます。
> if (date("w", mktime(0, 0, 0, $m, $d, $y)) == 6) {
その結果、「<TR>の開始タグ、終了タグのどちらも出力されず、横一列に表示されている」と思われます。
↑↑の行の手前に ↓ 追加して、
$hoge .= date("w", mktime(0, 0, 0, $m, $d, $y));
一番最後の行に ↓を追加し、出力してみて、
<?php print $hoge; ?>
ちゃんと、「34560123456012345601234560123」と表示されるか確認してみてください。
もし、ちゃんと↑このように表示されるとしたら、他の理由を考えなきゃいけません。
もし、↑↑のように表示されないとしたら、どのように表示されるか補足お願いします。
この回答への補足
ただし、bm_hiroさまのご回答を見て
一度目は、「560123456012345601234560123」と表示されました。
何でだろう?と、コードを何回かいじっているうちに、
下記のお礼で申し上げた事象になりました。
bm_hiroさま
ご回答ありがとうございます。
No.1さまへのお礼の通り、
どういうわけだか、知らないうちに
解決してしまいました。
〉↑↑の行の手前に ↓ 追加して、
$hoge .= date("w", mktime(0, 0, 0, $m, $d, $y));
〉一番最後の行に ↓を追加し、出力してみて、
<?php print $hoge; ?>
を行うと、表示は改行されたカレンダー表示の上に
メッセージが出力されます。
Notice: Undefined variable: hoge in C:\xampp\htdocs\php1st\test4.php on line 54
「34560123456012345601234560123」は
表示されません。
No.2
- 回答日時:
ソースをコピペする限り普通に表示されますね
改行されないという状態のブラウザから、
「ソースを表示」で<tr>・・・</tr>がきちんと吐き出されているか
かくにんしてみてはいかがでしょうか?
yambejpさま
ご回答ありがとうございます。
No.1さまへのお礼の通り、
どういうわけだか、知らないうちに
解決してしまいました。
そのとき吐き出されたコードは
以下のようになります。
●吐き出されたコード
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>カレンダー</title>
</head>
<table border="1">
<tr>
<th>日</th>
<th>月</th>
<th>火</th>
<th>水</th>
<th>木</th>
<th>金</th>
<th>土</th>
</tr>
<tr>
<td> </td><td> </td><td> </td><td> </td><td> </td><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td></tr><tr><td>10</td><td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td></tr><tr><td>17</td><td>18</td><td>19</td><td>20</td><td>21</td><td>22</td><td>23</td></tr><tr><td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td> </td><td> </td></tr>
</table>
No.1
- 回答日時:
ソースを見る限り問題ないですし、実際に試してみても正しく<tr>...</tr>で表組みされたものが出ますね…。
ブラウザ依存の可能性もありますが、別なブラウザ(ChromeとかFirefoxとか)で表示してみても同じ現象になるでしょうか?
pa_cottaさま
ご回答ありがというございます。
今日になって確認してみたら、
どういうわけだか、正常に表示されます。
ふだんはChromeを使っています。
設定→ネットワーク→プロキシ設定の変更
→LANの設定→プロキシサーバー
について、よくオンオフを繰り返すので、
何かの拍子で、正しく<tr>...</tr>の
表示ができるようになったのかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セッション関数を使わずにファ...
-
PHP8でWarning:Undefined varia...
-
phpの問い合わせフォームを作っ...
-
SplFileObject を利用したとき...
-
composerをインストールしたい...
-
php でqiitaのサイトにあったフ...
-
【初心者】XAMPPのapacheの(恐...
-
PHPの勉強してます。 配列のと...
-
複数のパソコンの中の1つのパソ...
-
phpに関わる所での、form actio...
-
PHP8を使うと、大量のWarningが...
-
Q&Aサイトを作成していてURLの...
-
PHPで画像の渡しが上手く行きま...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
[php初心者]サイトを見てデータ...
-
入力フォームの空白や改行を制...
-
reuterの記事をbeautiful.soup....
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP8でWarning:Undefined varia...
-
phpの問い合わせフォームを作っ...
-
composerをインストールしたい...
-
BASIC認証のフォームをデザイン...
-
SplFileObject を利用したとき...
-
phpでcookieがうまく保存されない
-
PHPのセッション有効期限について
-
PHPで画像の渡しが上手く行きま...
-
PHP8を使うと、大量のWarningが...
-
フォームで戻った際に入力済み...
-
Q&Aサイトを作成していてURLの...
-
PHPを使って、別サイトの一部を...
-
$_SESSIONに渡した後はそのまま...
-
reuterの記事をbeautiful.soup....
-
PHPSpreadsheetを使って関数を...
-
PHPのエラーの解消法について教...
-
ファイルの遷移がうまく行われ...
-
PostgreSQLからCSV形式でエクス...
-
php エラー
-
HTML PHP ラジオボタンのイベント
おすすめ情報