Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/07/2013, 02:28
ccliment
 
Fecha de Ingreso: julio-2013
Mensajes: 87
Antigüedad: 10 años, 10 meses
Puntos: 9
Respuesta: Calendario que empieza en domingo

Hola, aquí te envío la respuesta. A mi me ha funcionado perfectamente. Compárate el código con WinMerge o cualquier otro programa y verás que son unos pocos cambios.


Código PHP:
Ver original
  1. <?php
  2.     $ano = isset($_GET['ano']) ? $_GET['ano'] : date("Y",time());//recibe parametros de año
  3.     $mes = isset($_GET['mes']) ? $_GET['mes'] : date("n",time());//recibe parametros de mes
  4.     $meses = array(//define nombres de los meses
  5.                 1=>"Enero",
  6.                 2=>"Febrero",
  7.                 3=>"Marzo",
  8.                 4=>"Abril",
  9.                 5=>"Mayo",
  10.                 6=>"Junio",
  11.                 7=>"Julio",
  12.                 8=>"Agosto",
  13.                 9=>"Septiembre",
  14.                 10=>"Octubre",
  15.                 11=>"Noviembre",
  16.                 12=>"Diciembre"
  17.             );
  18.     $dias = array(//define las iniciales de los dias
  19.                 "L",
  20.                 "M",
  21.                 "M",
  22.                 "J",
  23.                 "V",
  24.                 "S",
  25.                 "D"
  26.             );
  27.     $dias_x_mes = cal_days_in_month(CAL_GREGORIAN, $mes, $ano);//obtener el numero de dias del mes
  28.     $inicio_mes_dia = jddayofweek (cal_to_jd(CAL_GREGORIAN, $mes, 1, $ano));//obtener el dia que inicia el mes
  29.     $inicio_mes_dia = ($inicio_mes_dia==0) ? 6 : $inicio_mes_dia-1;
  30.     //se definen los parametros para navegar en los meses anterior y siguiente
  31.     $ant['mes'] = ($mes == 1) ? 12 : ($mes-1);
  32.     $ant['ano'] = ($mes == 1) ? ($ano-1) : $ano;
  33.     $sig['mes'] = ($mes == 12) ? 1 : ($mes+1);
  34.     $sig['ano'] = ($mes == 12) ? ($ano+1) : $ano;
  35. ?>
  36. <html>
  37.     <head>
  38.         <title>Calendario</title>
  39.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  40.         <style>
  41.             body{
  42.                 font-family: Helvetica, Arial, Verdana, Sans-serif;
  43.                 font-size:12px;
  44.             }
  45.             .titulocal{
  46.                 width:210px;
  47.                 text-align:center;
  48.                 color:DimGray;
  49.                 padding:5px 0px 5px 0px;
  50.             }
  51.             .titulocal a{
  52.                 text-decoration:none;
  53.                 color: DimGray;
  54.             }
  55.             .tablacal{
  56.                 width:210px;
  57.                 padding:0;
  58.                 border-collapse: collapse;
  59.                 border:1px solid LightGrey;
  60.                 font-size:12px;
  61.             }
  62.             .tablacal th{
  63.                 width:30px;
  64.                 background-color:LightGrey;
  65.                 border-collapse: collapse;
  66.             }
  67.             .tablacal td{
  68.                 color:Black;
  69.                 text-align:center;
  70.             }
  71.         </style>
  72.     </head>
  73.     <body>
  74.         <div class='titulocal'><!--navegacion anterior y siguiente -->
  75.             <a href='<?php echo $_SERVER['PHP_SELF'] ?>?ano=<?php echo $ant['ano'] ?>&mes=<?php echo $ant['mes'] ?>' id='anterior'><</a>
  76.             &nbsp;<?php echo $meses[$mes]." ".$ano?>&nbsp;
  77.             <a href='<?php echo $_SERVER['PHP_SELF'] ?>?ano=<?php echo $sig['ano'] ?>&mes=<?php echo $sig['mes'] ?>' id='siguiente'>></a>
  78.         </div>
  79.         <table class='tablacal'><!--inicio de la tabla del calendario-->
  80.             <tr>
  81. <?php
  82.     for ($dias_semana=0; $dias_semana<count($dias); $dias_semana++){//encabezados con los nombres de los dias
  83. ?>
  84.                 <th class='nombredias'><?php echo $dias[$dias_semana] ?></th>
  85. <?php
  86.     }
  87. ?>
  88.             <tr>
  89. <?php
  90.     for($dia_mes=1; $dia_mes<=$dias_x_mes; $dia_mes++){
  91.         if(jddayofweek (cal_to_jd(CAL_GREGORIAN, $mes, $dia_mes, $ano)) == 1 || $dia_mes == 1){
  92. ?>
  93.             <tr>
  94. <?php
  95.         }
  96.         if($dia_mes == 1){
  97.             for($dias_antes=0; $dias_antes<$inicio_mes_dia; $dias_antes++){//espacios en blanco que son los dias finales del mes anterior
  98. ?>
  99.                 <td class='dia'>&nbsp;</td>
  100. <?php
  101.             }
  102.         }
  103.         $dia = ($dia_mes<10) ? "0".$dia_mes : $dia_mes;
  104.         $mesactual = ($mes<10) ? "0".$mes : $mes;
  105.                 //se muestran cada uno de los dias
  106. ?>
  107.                 <td class='dia'><?php echo $dia_mes ?></td>
  108. <?php
  109.         if($dia_mes == $dias_x_mes){
  110.             $dias_fin = jddayofweek (cal_to_jd(CAL_GREGORIAN, $mes, $dias_x_mes, $ano));
  111.             $dias_fin = ($dias_fin==0) ? $dias_fin : 7 - $dias_fin;
  112.             for($dias_despues=0; $dias_despues<$dias_fin; $dias_despues++){//espacios en blanco que son los primeros dias del mes siguiente
  113. ?>
  114.                 <td class='dia'>&nbsp;</td>
  115. <?php
  116.             }
  117.         }
  118.         if(jddayofweek (cal_to_jd(CAL_GREGORIAN, $mes, $dia_mes, $ano)) == 0 || $dia_mes==$dias_x_mes){//fin del renglon al final de la semana o del mes
  119. ?>
  120.             </tr>
  121. <?php
  122.         }
  123.     }
  124. ?>
  125.         </table><!--fin de la tabla del calendario-->
  126.     <body>
  127. </html>

Saludos.