PHP Calender Day number beening displayed outside calender

Hi all i am working on a php calender and my days are not being correctly displayed on my page

This is my code


$day=date('d');
	$month=date('m');
	$year=date('Y');
	//
	$first_day = mktime(0,0,0,$month,1,$year);
	$title = date('F',$first_day);
	$day_of_week = date('D',$first_day);
	//
	switch($day_of_week)
	{
		
		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_month = date('t', strtotime($year.'-'.$month.'-1'));
	//$days_in_month = cal_days_in_month(0,$month,$year);
	echo "<table width='130px' height='55px'>";
	echo "<tr><th colspan='7' style='background-color:#FFF;'>".$title."&nbsp;".$year."</th></tr>";
	echo "<tr>
	<td style='background-color:#FFF;'>Sun</td>
	<td style='background-color:#FFF;'>Mon</td>
	<td style='background-color:#FFF;'>Tue</td>
	<td style='background-color:#FFF;'>Wed</td>
	<td style='background-color:#FFF;'>Thur</td>
	<td style='background-color:#FFF;'>Fri</td>
	<td style='background-color:#FFF;'>Sat</td>
	</tr>";
	$date_count = 1;
	echo "<tr>";
	while($blank>0)
	{
		echo "<td style='background-color:#FFF;'></td>";
		$blank = $blank -1;
		$day_count++;	
	}
	$day_num = 1;
	while($day_num<=$days_in_month)
	{
		echo "<td style='background-color:#FFF;'>".$day_num."</td>";
		$day_num++;
		$day_count++;
		if($day_count>7)
		{
			echo "</tr><tr>";
			$day_count = 1;
		}
	}
	while($day_count>1 && $day_count<=7)
	{
		echo "<td></td>";
		$day_count++;	
	}
	echo "</tr></table>";
	//

It seems liked the 2 on the month is not being displayed inside the calender its being displayed outside

So how do i get it sitting inside the calender what exactly am i doing wrong?

You should have initialized $day_count to 1.
There are a lot of things that can be optimized as well. I took the liberty to rewrite your code a bit :slight_smile:


error_reporting(E_ALL & ~E_NOTICE);
$day = date('d');
$month = date('m');
$year = date('Y');
$first_day = mktime(0, 0, 0, $month, 1, $year);
$title = date('F', $first_day);
$day_of_week = date('D', $first_day);
$blank=date('N', $first_day);

$days_in_month = date('t', strtotime($year . '-' . $month . '-1'));

echo '<table width="130px" height="55px" border="0">';
echo '<tr><th colspan="7" style="background-color:#FFF;">', $title, ' ',  $year, '</th></tr>';
echo '<tr>
    <td style="background-color:#FFF;">Sun</td>
    <td style="background-color:#FFF;">Mon</td>
    <td style="background-color:#FFF;">Tue</td>
    <td style="background-color:#FFF;">Wed</td>
    <td style="background-color:#FFF;">Thur</td>
    <td style="background-color:#FFF;">Fri</td>
    <td style="background-color:#FFF;">Sat</td>
    </tr>';
$date_count = 1;

$day_count=1;
echo '<tr>';
for ($i=0; $i<$blank; $i++) {
	echo '<td style="background-color:#FFF;">&nbsp;</td>';
	$day_count++;
}

$day_num = 1;
for ($day_num=1; $day_num<=$days_in_month; $day_num++) {
	echo '<td style="background-color:#FFF;">', $day_num, '</td>';
	$day_count++;
	if ($day_count > 7) {
		echo '</tr><tr>';
		$day_count = 1;
	}
}

while ($day_count > 1 && $day_count <= 7) {
	echo '<td>&nbsp;</td>';
	$day_count++;
}

echo "</tr></table>";

sweet thanks