La cuestión es la siguiente, tengo un calendario hecho en PHP que muestra seleccionado siempre la fecha actual, tiene un menú con los meses y otro con los años. Lo uso para ver el archivo de ediciones de un diario online.
El problema está cuando se quiere ver otro mes y el calendario siempre vuelve al mes actual, no sé si me explico. La página que carga cuando se cambia es la del mes que se selccionó pero no se puede navegar en ese mes, ya que el calendario siempre marca el día de hoy.
Este es el calendario:
Código PHP:
<form>
<tr><td><div id="siteBarra2">SELECCIONE LA FECHA QUE QUIERA VER</div></td></tr>
<tr align="center">
<td width="265">
<?
$fecha = getdate(time());
if(isset($_GET["dia"]))$dia = $_GET["dia"];
else $dia = $fecha['mday'];
if(isset($_GET["mes"]))$mes = $_GET["mes"];
else $mes = $fecha['mon'];
if(isset($_GET["ano"]))$ano = $_GET["ano"];
else $ano = $fecha['year'];
$fecha = mktime(0,0,0,$mes,$dia,$ano);
$fechaInicioMes = mktime(0,0,0,$mes,1,$ano);
$fechaInicioMes = date("w",$fechaInicioMes);
?>
<select size="1" name="mes" class="m1" onchange="document.location = '/archivo.php?date=<?=$ano?>-' + document.forms[0].mes.value + '-<?=$dia?>'">
<?
$meses = Array ('enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre');
for($i = 1; $i <= 12; $i++){
echo ' <option ';
if($mes == $i)echo 'selected ';
echo 'value="'.$i.'">'.$meses[$i-1]."\n";
}
?>
</select> <select size="1" name="ano" class="m1" onchange="document.location = '/archivo.php?date=' + document.forms[0].ano.value'-<?=$mes?>-<?=$dia?>'">
<?
for ($i = $anoInicial; $i <= $anoFinal; $i++){
echo ' <option ';
if($ano == $i)echo 'selected ';
echo 'value="'.$i.'">'.$i."\n";
}
?>
</select><br>
<font size="1"></font><table border="0" align="center" cellpadding="2" cellspacing="0" width="280" class="m1" bgcolor="#FFFFFF" height="100%">
<?
$diasSem = Array ('L','M','M','J','V','S','D');
$ultimoDia = date('t',$fecha);
$numMes = 0;
for ($fila = 0; $fila < 7; $fila++){
echo " <tr>\n";
for ($coln = 0; $coln < 7; $coln++){
$posicion = Array (1,2,3,4,5,6,0);
echo ' <td width="14%" height="19"';
if($fila == 0)echo ' bgcolor="#808080"';
if($dia-1 == $numMes)echo ' bgcolor="#0A246A"';
echo " align=\"center\">\n";
echo ' ';
if($fila == 0)echo '<font color="#D4D0C8">'.$diasSem[$coln];
elseif(($numMes && $numMes < $ultimoDia) || (!$numMes && $posicion[$coln] == $fechaInicioMes)){
echo '<a href="#" onclick="tratarFecha('.$ano.','.$mes.','.(++$numMes).')">';
if($dia == $numMes)echo '<font color="#FFFFFF">';
echo ($numMes).'</a>';
}
echo "</td>\n";
}
echo " </tr>\n";
}
?>
Código PHP:
<?
$anoInicial = '2008';
$anoFinal = '2009';
$funcionTratarFecha = 'document.location = "?date="+ano+"-"+mes+"-"+dia';
?><script>
function tratarFecha(ano,mes,dia){
<?=$funcionTratarFecha?>
}
</script>
AGREGO: lo que yo quiero al final de cuentas es que cuando cambien para otro mes el calendario quede en ese mes y no vuelva a la fecha actual.
Saludos!