- Este calendario tiene una opcion para mostrar el siguiente o el anterior mes....y es exactamente esta opcion la que no se ejecuta en el servidor.
- Estaba pensando que quizas sea la verion de PhP...porque puse este calendario en otro servidor y me funciona correctamente....pero no en el servidor que yo quiero que funcione.
- Me dijeron que hay parametros que se pueden cambiar en el codigo del calendario para que funcionen correctamente en la ultima version de PHP.
Aqui les pongo el codigo del calendario....aver si alguien sabe como puede ir el codigo para que funcione correctamentre en cualquier servidor y en cualquier version de PHP.
//////////////////////////// vercalendario.php /////////////////////
Código PHP:
<?
require ("calendario.php");
if (!$HTTP_POST_VARS && !$HTTP_GET_VARS){
$tiempo_actual = time();
$mes = date("n", $tiempo_actual);
$ano = date("Y", $tiempo_actual);
$dia=date("d");
$fecha=$ano . "-" . $mes . "-" . $dia;
}else {
$mes = $nuevo_mes;
$ano = $nuevo_ano;
$dia = $dia;
$fecha=$ano . "-" . $mes . "-" . $dia;
}
//echo"Fecha Seleccionada <input type=text name=fecha value=$fecha>";
mostrar_calendario($dia,$mes,$ano);
?>
Aqui el archivo que genera el calendario
//////////////////////// calendario.php ////////////////////////////////
Código PHP:
<?
function calcula_numero_dia_semana($dia,$mes,$ano){
$numerodiasemana = date('w', mktime(0,0,0,$mes,$dia,$ano));
if ($numerodiasemana == 0)
$numerodiasemana = 6;
else
$numerodiasemana--;
return $numerodiasemana;
}
//funcion que devuelve el último día de un mes y año dados
function ultimoDia($mes,$ano){
$ultimo_dia=28;
while (checkdate($mes,$ultimo_dia + 1,$ano)){
$ultimo_dia++;
}
return $ultimo_dia;
}
function dame_nombre_mes($mes){
switch ($mes){
case 1:
$nombre_mes="Enero";
break;
case 2:
$nombre_mes="Febrero";
break;
case 3:
$nombre_mes="Marzo";
break;
case 4:
$nombre_mes="Abril";
break;
case 5:
$nombre_mes="Mayo";
break;
case 6:
$nombre_mes="Junio";
break;
case 7:
$nombre_mes="Julio";
break;
case 8:
$nombre_mes="Agosto";
break;
case 9:
$nombre_mes="Septiembre";
break;
case 10:
$nombre_mes="Octubre";
break;
case 11:
$nombre_mes="Noviembre";
break;
case 12:
$nombre_mes="Diciembre";
break;
}
return $nombre_mes;
}
function mostrar_calendario($dia,$mes,$ano){
$mes_hoy=date("m");
$ano_hoy=date("Y");
if (($mes_hoy <> $mes) || ($ano_hoy <> $ano))
{
$hoy=0;
}
else
{
$hoy=date("d");
}
//tomo el nombre del mes que hay que imprimir
$nombre_mes = dame_nombre_mes($mes);
//construyo la cabecera de la tabla
echo "<table width=200 cellspacing=3 cellpadding=2 border=0><tr><td colspan=7 align=center class=tit>";
echo "<table width=100% cellspacing=2 cellpadding=2 border=0><tr><td style=font-size:10pt;font-weight:bold;color:white>";
//calculo el mes y ano del mes anterior
$mes_anterior = $mes - 1;
$ano_anterior = $ano;
if ($mes_anterior==0){
$ano_anterior--;
$mes_anterior=12;
}
echo "<a style=color:white;text-decoration:white href=vercalendario.php?dia=1&nuevo_mes=$mes_anterior&nuevo_ano=$ano_anterior><<</a></td>";
echo "<td align=center class=tit>$nombre_mes $ano</td>";
echo "<td align=right style=font-size:10pt;font-weight:bold;color:white>";
//calculo el mes y ano del mes siguiente
$mes_siguiente = $mes + 1;
$ano_siguiente = $ano;
if ($mes_siguiente==13){
$ano_siguiente++;
$mes_siguiente=1;
}
echo "<a style=color:white;text-decoration:none href=vercalendario.php?dia=1&nuevo_mes=$mes_siguiente&nuevo_ano=$ano_siguiente>>></a></td></tr></table></td></tr>";
echo ' <tr>
<td width=14% align=center class=altn>Lu</td>
<td width=14% align=center class=altn>Ma</td>
<td width=14% align=center class=altn>Mi</td>
<td width=14% align=center class=altn>Ju</td>
<td width=14% align=center class=altn>Vi</td>
<td width=14% align=center class=altn>Sa</td>
<td width=14% align=center class=altn>Do</td>
</tr>';
//Variable para llevar la cuenta del dia actual
$dia_actual = 1;
//calculo el numero del dia de la semana del primer dia
$numero_dia = calcula_numero_dia_semana(1,$mes,$ano);
//echo "Numero del dia de demana del primer: $numero_dia <br>";
//calculo el último dia del mes
$ultimo_dia = ultimoDia($mes,$ano);
//escribo la primera fila de la semana
echo "<tr>";
for ($i=0;$i<7;$i++){
if ($i < $numero_dia){
//si el dia de la semana i es menor que el numero del primer dia de la semana no pongo nada en la celda
echo "<td></td>";
} else {
if (($i == 5) || ($i == 6))
{
if ($dia_actual == $hoy)
{
echo "<td class=da><a href=vercalendario.php?dia=$dia_actual&nuevo_mes=$mes&nuevo_ano=$ano>$dia_actual</a></td>";
}
else
{
echo "<td class=fs>$dia_actual</td>";
}
}
else
{
if ($dia_actual == $hoy)
{
echo "<td class=da>$dia_actual</td>";
}
else
{
echo "<td align=center>$dia_actual</td>";
}
}
$dia_actual++;
}
}
echo "</tr>";
//recorro todos los demás días hasta el final del mes
$numero_dia = 0;
while ($dia_actual <= $ultimo_dia){
//si estamos a principio de la semana escribo el <TR>
if ($numero_dia == 0)
echo "<tr>";
//si es el uñtimo de la semana, me pongo al principio de la semana y escribo el </tr>
if (($numero_dia == 5) || ($numero_dia == 6))
{
if ($dia_actual == $hoy)
{
echo "<td class=da>$dia_actual</td>";
}
else
{
echo "<td class=fs >$dia_actual</td>";
}
}
else
{
if ($dia_actual == $hoy)
{
echo "<td class=da>$dia_actual</td>";
}
else
{
echo "<td align=center>$dia_actual</td>";
}
}
$dia_actual++;
$numero_dia++;
if ($numero_dia == 7)
{
$numero_dia = 0;
echo "</tr>";
}
}
//compruebo que celdas me faltan por escribir vacias de la última semana del mes
for ($i=$numero_dia;$i<7;$i++){
echo "<td></td>";
}
echo "</tr>";
echo "</table>";
}
---------------------------------------------------------------------------------------
SI alguien sabe cual puede ser la solucion a esto.. lo hace saber porfa...Gracias.
Saludos...Kaos_Diego.