●質問の主旨
下記のコードでカレンダーを作りましたが、
日付が横一列に並んだ奇妙なカレンダーになってしまいます。
参考文献と比べて、同じコードを記述しているように思いますが、
なぜ改行されないのか、分かりません。
ご存知の方、アドバイスよろしくお願いします。
●参考文献
西沢直木「プログラミングの教科書」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で質問しましょう!
似たような質問が見つかりました
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- HTML・CSS 【CSS】:hasで可能? imgを含むtr要素を選択したい 1 2022/11/17 14:36
- MySQL php テーブルを作れない 2 2022/11/17 18:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
昨日の日付名でファイルを作成...
-
昨日の日付を取得するVBscript
-
現在時刻をyyyymmddhhmmss形式...
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
アップロードしたファイル名に...
-
rss2.0<pubDate>の日付整形
-
MS-DOSでの日付表示
-
改行されないカレンダー(PHP)
-
PHPで以下のような占いプログラ...
-
時間のチェックはどうすれば良...
-
Dosブロンプトでtabを出力したい
-
「取得先」という表現について
-
Yahoo! JAPAN IDを新規取得でき...
-
バッチファイルでpingの結果を...
-
ps3で久しぶりにCDの音楽情報取...
-
wordの差し込み印刷で文字...
-
ミュージックのアートワークを...
-
バッチファイルで、全てのウィ...
-
DTOとEntityの差は何ですか。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
アップロードしたファイル名に...
-
昨日の日付を取得するVBscript
-
PHPでn日後を計算したい
-
C言語でシステム日付との差を...
-
現在時刻をyyyymmddhhmmss形式...
-
6ヶ月前の日付を取得するにはど...
-
月曜日から始まる週間カレンダ...
-
C言語を使って、ある特定の日の...
-
1ヶ月後の日付を出力したい
-
昨日の日付名でファイルを作成...
-
strtotime 前月・前々月の表示
-
今日の日付から1週間のリスト
-
日付の比較方法
-
一ヶ月前の月を表示させたい!
-
差分の月数を算出する方法
-
ASPでの日付の取得について
-
PHPで以下のような占いプログラ...
-
rss2.0<pubDate>の日付整形
おすすめ情報