Cómo poner días nulos en calendario php

ayúdenme, no puedo hacer coherente mi calendario, que permita imprimir los días nulos  en if($i==$diaSemana || $i==$diaInicial && $day=true) y  if ($i>=$last_cell ), no tiene coherencia entre $i y $day.  Gracias

<?php
# definimos los valores iniciales para nuestro calendario
include('funciones.php'); //Contiene los dias Feriados
$month = array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio','Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
$showmonth = $_POST['showmonth']; //llamamos las funciones de javascript
$showyear = $_POST['showyear']; //llamamos las funciones de javascript

$diaActual=date("j");
$day=date("j");

$diaSemana = (int)date("w",mktime(0,0,0,$showmonth,1,$showyear))+7;
$diaInicial = mktime(0,0,0,$showmonth,1,$showyear);
$ultimoDiaMes=(int)date("d",(mktime(0,0,0,$showmonth+1,1,$showyear)-1));
$last_cell=$diaSemana+$ultimoDiaMes;
echo'<table id="fecha">';
echo'<caption>';
echo'<input type="image" id="meses_nav" name="antes" src="imagen/izquierda.jpg" width="17px" align="left" title="Previous Year" onClick="prev_year();"/>';
echo'<input type="image" id="meses_nav" name="previo" src="imagen/right.jpg" width="15px" align="left" title ="Previous Month" onClick="last_month();"/>';
echo '<input type="image" id="meses_nav" name="despues" src="imagen/derecha.jpg" width="17px" align="right" title="Next Year" onClick="next_year();">';
echo'<input type="image" id="meses_nav" name="next" src="imagen/left.jpg" width="15px" align="right" title="Next Month" onClick="next_month();">';
echo'<div class="inter">'.$month[$showmonth-1].' de '.$showyear.'</div>';
echo '</caption>';
echo'<tr>';
echo'<th>Lun</th><th>Mar</th><th>Mi&eacute;</th><th>Jue</th><th>Vie</th><th>S&aacute;b</th>';
echo'<th class="dom">Dom</th>';
echo'</tr>';
echo'<tr bgcolor="#ececec">';

for($i=1;$i<=43;$i++)
{

if($i==$diaSemana || $i==$diaInicial && $day=true)
{
//agregamos el dia semanal
$day=1;

}
if($i<$diaSemana) //separamos y quitamos ||>=$last_cell&&nuls=true)
{
// Primer día del mes dado
$diasNulos = (date("N",$diaInicial))-1;
//if($diasNulos<0){$diasNulos = 7-abs($diasNulos);}
$diasEnMes = date("t",$diaInicial); // Número de días del mes dado

$mostrarDiasNulos=1;
//if ($diasNulos>0 and $mostrarDiasNulos==0) {$html= '<td class="nulo" colspan="'.$diasNulos.'"></td>';}
// Se hace un TD en blanco con el ancho según los día nulos que haya
if ($i<$diaSemana and $mostrarDiasNulos==1 && $i==$diasNulos){ // Generación de los TD con días nulos si está activado que se muestren
$dni=$diasNulos; $a=0;
while ($a<$diasNulos) {
$uno = mktime(0,0,0,$showmonth,(1-$dni),$showyear);
$nuls = date('j',$uno);
echo'<td>'.$nuls.'</td>';
$dni--;
$a++;
}
}
$i++;
}
if ($i>=$last_cell ){
$mostrarDiasNulos=1;
$diasNulosFinales = 0;
while((($diasEnMes+$diasNulos)%7)!==0){$diasEnMes++;$diasNulosFinales++;}
//if ($diasNulosFinales>0 and $mostrarDiasNulos==0) {$html = '<td class="nulo" colspan="'.$diasNulosFinales.'"></td>';} // Se hace un TD en blanco con el ancho según los día nulos que haya (si no se activa mostrar los días nulos)
if ($i>=$last_cell and $mostrarDiasNulos==1) { // Generación de días nulos (si se activa mostrar los días nulos)
$dnf=0;
while ($dnf<$diasNulosFinales){
$i = mktime(0,0,0,($showmonth+1),($dnf+1),$showyear);
$nuls = date('j',$i);
echo'<td>'.$nuls.'</td>';
$dnf++;
}
}
//echo'<td></td>';
}
else{
$resuelto=asueto_nacional($day,$showmonth,$showyear);
// mostramos el dia
$diaActual=date("j");
if($day==$diaActual){
echo "<td class='hoy'><strong>$day</strong></td>";
}
elseif ($resuelto==true||$day==$resuelto)
{
echo "<td class='feriado'>$day</td>";
}
elseif($i%7==0){
echo"<td class='domingo'>$day</td>";
}
else{
echo "<td>$day</td>";
}
$day++;
}
// cuando llega al final de la semana, iniciamos una columna nueva
if($i%7==0)
{
echo "</tr><tr>\n";
}
}
echo'</table>';
$arraymeses = array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio',
'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
$arraydias = array( 'Domingo', 'Lunes', 'Martes','Mi&eacute;rcoles', 'Jueves', 'Viernes', 'S&aacute;bado');

echo " Hoy "; echo $arraydias[date('w')]. ", " .date('j'). " de ".$arraymeses[date('m')-1]." de " .date('Y');
echo'</div>';
echo'<div id="asueto"><span>....</span> D&iacute;as de asueto';
echo'</div>';
?>

Añade tu respuesta

Haz clic para o