2016-10-12 9 views
1

私は1か月間の日付を含むMySQL DBにテーブルを作成しました。PHPカレンダーは、週の正しい日に日付を表​​示します

私は、テーブルにそれらを表示しようとしています私は、スクリプトを作成している

(カレンダーのように見える)、その月の最初の日は右の日(10月の例えば土曜日)に示しました。

その後、他のすべての日付を表示しています。

コード

$Firstdate = date('Y-m-01'); 
     $FirstDay = date("N", strtotime($Firstdate)); 



if ($FirstDay == 1) {} 
if ($FirstDay == 2) { echo"<td></td>";} 
if ($FirstDay == 3) { echo"<td></td> <td></td>";} 
if ($FirstDay == 4) { echo"<td></td> <td></td> <td></td>";} 
if ($FirstDay == 5) { echo"<td></td> <td></td> <td></td> <td></td>";} 
if ($FirstDay == 6) { echo"<td></td> <td></td> <td></td> <td></td> <td></td>";} 
if ($FirstDay == 7) { echo"<td></td> <td></td> <td></td> <td></td> <td></td> <td></td>";} 

$result=mysql_query("SELECT * FROM calendar")or die('ERROR 315'); 
$num_rows = mysql_num_rows($result); 
    for ($i = 1; $i <= mysql_num_rows($result); $i++) 
{ 
    $row = mysql_fetch_array($result); 

    $TheDate = $row ['date']; 
    $TheDateF = date("jS", strtotime($TheDate)); 

echo " <td> &nbsp;&nbsp;$TheDateF</Center><br><br><br><br></td>"; 

    if ($i % 7 == 0) { 
       echo '</tr><tr>'; // it's time no move to next row 
      } 
    } 

これが正しい日に開始し、しかし、下のスクリーンショットを参照してください、私はそれが日曜日の日付の後に新しい行を開始する必要があります任意のアイデアを

enter image description here

どのように私はこれを解決できますか?

+1

あなたはカレンダーをハードコーディングされているすべての理由があります。 – Suraj

+0

それは私のクライアントのリクエストです... – Shane

+0

@Suraj - アイデアはありますか? – Shane

答えて

1

このコードを試してください。必要に応じて変更してください。これがあなたを助けると確信しています。利用できるプラグインの多くがあるので

<?php 
/* Set the default timezone */ 
date_default_timezone_set("America/Montreal"); 

/* Set the date */ 
$date = strtotime(date("Y-m-d")); 

$day = date('d', $date); 
$month = date('m', $date); 
$year = date('Y', $date); 
$firstDay = mktime(0,0,0,$month, 1, $year); 
$title = strftime('%B', $firstDay); 
$dayOfWeek = date('D', $firstDay); 
$daysInMonth = cal_days_in_month(0, $month, $year); 
/* Get the name of the week days */ 
$timestamp = strtotime('next Sunday'); 
$weekDays = array(); 
for ($i = 0; $i < 7; $i++) { 
    $weekDays[] = strftime('%a', $timestamp); 
    $timestamp = strtotime('+1 day', $timestamp); 
} 
$blank = date('w', strtotime("{$year}-{$month}-01")); 
?> 
<table class='table table-bordered' border=1 style="table-layout: fixed;"> 
    <tr> 
    <th colspan="7" class="text-center"> <?php echo $title ?> <?php echo $year ?> </th> 
    </tr> 
    <tr> 
    <?php foreach($weekDays as $key => $weekDay) : ?> 
     <td class="text-center"><?php echo $weekDay ?></td> 
    <?php endforeach ?> 
    </tr> 
    <tr> 
    <?php for($i = 0; $i < $blank; $i++): ?> 
     <td></td> 
    <?php endfor; ?> 
    <?php for($i = 1; $i <= $daysInMonth; $i++): ?> 
     <?php if($day == $i): ?> 
     <td><strong><?php echo $i ?></strong></td> 
     <?php else: ?> 
     <td><?php echo $i ?></td> 
     <?php endif; ?> 
     <?php if(($i + $blank) % 7 == 0): ?> 
     </tr><tr> 
     <?php endif; ?> 
    <?php endfor; ?> 
    <?php for($i = 0; ($i + $blank + $daysInMonth) % 7 != 0; $i++): ?> 
     <td></td> 
    <?php endfor; ?> 
    </tr> 
</table> 

ソース http://code.runnable.com/VKxpI5dzCMkTrRq1/simple-calendar-for-php

+0

素晴らしい!ありがとう。 1日にアイテムを追加するにはどうすればよいですか? (どこにコードを追加しますか?) – Shane

関連する問題