2017-03-23 9 views
1

PHPとDivテーブルを使ってWebカレンダーを生成するには、何か助けが必要です。私はHTMLテーブルタグを使用してカレンダーを作成することに成功しましたが、それはXHTMLに準拠していません。私はカレンダーテーブルをdivテーブルに変換する必要があります。私のコードは以下の通りですが、私はこれを修正するのに時間を費やしましたが、運がなかった。誰かが下のコードを見て、私が間違っていることを教えてもらえますか?助けを前にありがとう。divテーブルを使った静的PHPカレンダー

<?php 
       $date = time(); 
       $day = date('d', $date); 
       $month = date('m', $date); 
       $year = date('Y', $date); 
       $blank = 0; 

       $day_one = mktime(0,0,0, $month, 1, $year); 

       $title = date('F', $day_one); 

       $week_day = date('D', $day_one); 

       switch ($week_day) { 
        case 'SUN': $blank = 0; break; 
        case 'MON': $blank = 1; break; 
        case 'TUE': $blank = 2; break; 
        case 'WED': $blank = 3; break; 
        case 'THU': $blank = 4; break; 
        case 'FRI': $blank = 5; break; 
        case 'SAT': $blank = 6; break; 
       } 

       $days_in_current_month = cal_days_in_month(0, $month, $year); 

       echo "<div class='cTable'> 
         <div class='cTableRow'> 
          <div class='cTableHead'><span style='font-weight: bold;'>$title $year</span></div></div>"; 
       echo "<div class='cTableBody'> 
         <div class='cTableRow'> 
          <div class='cTableCell'><span style='font-weight: bold;'>Monday</span></div> 
          <div class='cTableCell'><span style='font-weight: bold;'>Tuesday</span></div> 
          <div class='cTableCell'><span style='font-weight: bold;'>Wednesday</span></div> 
          <div class='cTableCell'><span style='font-weight: bold;'>Thursday</span></div> 
          <div class='cTableCell'><span style='font-weight: bold;'>Friday</span></div> 
          <div class='cTableCell'><span style='font-weight: bold;'>Saturday</span></div> 
          <div class='cTableHead'><span style='font-weight: bold;'>Sunday</span></div> 
         </div></div>"; 
       $day_count = 1; 

       echo "<div class='cTableBody'><div class='cTableRow'>"; 

       while ($blank > 0) { 
        echo "<div class='cTableCell'></div>"; 
        $blank = $blank-1; 
        $day_count++; 
       } 

       $day_num = 1; 

       while ($day_num <= $days_in_current_month) { 
        echo "<div class='cTableCell'>$day_num</div></div></div>"; 
        $day_num++; 
        $day_count++; 

       if ($day_count > 7) { 
        echo "<div class='cTableBody'><div class='cTableRow'>"; 
        $day_count = 1; 
       } 
       } 

       while ($day_count > 1 && $day_count <=7) { 
        echo "<div class='cTableCell'></div>"; 
        $day_count++; 
       } 

       echo "</div></div></div>"; 

       ?> 

Nice Calender Not So Nice Calendar

+0

本当の質問は、"私のHTML出力がXHTMLに準拠していないのはなぜですか? PHPコードが無関係なのでHTML出力を表示した方がおそらくもっと意味があります。 w3cバリデータhttp://validator.w3.org/が出力を受け取り、間違っていることを正確に伝えます。 (とにかくXHTMLに準拠しようとしているのはなぜですか?) – mkaatman

+0

私の質問ではありません。上記のHTMLテーブルタグとPHPスクリプトを使用して素晴らしいカレンダーを生成しました。 HTMLテーブルがXHTMLに準拠していないため、divテーブルを使用して同じカレンダーを作成するのに問題があります。理にかなっている? – Doug

+0

あなたはHTML出力を持っています。同じHTML出力をXHTMLに準拠させたいのですか? – mkaatman

答えて

1

あなたの問題はここにあります。あなたは、あなたが「ワット取得する必要があるとして、あなたはこのに

$week_day = date('w', $day_one); 

を変更する必要がある最初の平日の正しい数値表現を得るためにも、行

while ($day_num <= $days_in_current_month) { 
    echo "<div class='cTableCell'>$day_num</div>"; 
    $day_num++; 
    $day_count++; 

    if ($day_count > 7) { 
     echo "</div></div><div class='cTableBody'><div class='cTableRow'>"; 
     $day_count = 1; 
    } 
} 

を変更する場合にのみdivsを閉じる必要があります"代わりに" D "

+0

ありがとう、親切な先生!上記の答えは私の問題を解決しました。今私が把握しなければならないのは、3月1日が水曜日に反対する日曜日になる理由だけです。 – Doug

+0

"D"の代わりに "w"が必要です: '$ week_day = date( 'w'、$ day_one);' –

+0

私はそれを試みましたが、うまくいきませんでした。他のアイデア? – Doug

関連する問題