Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Calendario que empieza en domingo

Estas en el tema de Calendario que empieza en domingo en el foro de PHP en Foros del Web. Hola a todos, Tengo este script de calendario, pero empieza la semana en domingo, ¿me podrían ayudar a que empezase la semana en lunes? Código ...
  #1 (permalink)  
Antiguo 09/07/2013, 01:13
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 20 años, 2 meses
Puntos: 3
Exclamación Calendario que empieza en domingo

Hola a todos,

Tengo este script de calendario, pero empieza la semana en domingo, ¿me podrían ayudar a que empezase la semana en lunes?

Código PHP:
<?php
    $ano 
= isset($_GET['ano']) ? $_GET['ano'] : date("Y",time());//recibe parametros de año
    
$mes = isset($_GET['mes']) ? $_GET['mes'] : date("n",time());//recibe parametros de mes
    
$meses = array(//define nombres de los meses
                
1=>"Enero",
                
2=>"Febrero",
                
3=>"Marzo",
                
4=>"Abril",
                
5=>"Mayo",
                
6=>"Junio",
                
7=>"Julio",
                
8=>"Agosto",
                
9=>"Septiembre",
                
10=>"Octubre",
                
11=>"Noviembre",
                
12=>"Diciembre"
            
);
    
$dias = array(//define las iniciales de los dias
                
"D",
                
"L",
                
"M",
                
"M",
                
"J",
                
"V",
                
"S"
            
);
    
$dias_x_mes cal_days_in_month(CAL_GREGORIAN$mes$ano);//obtener el numero de dias del mes
    
$inicio_mes_dia jddayofweek (cal_to_jd(CAL_GREGORIAN$mes1$ano));//obtener el dia que inicia el mes
    //se definen los parametros para navegar en los meses anterior y siguiente
    
$ant['mes'] = ($mes == 1) ? 12 : ($mes-1);
    
$ant['ano'] = ($mes == 1) ? ($ano-1) : $ano;
    
$sig['mes'] = ($mes == 12) ? : ($mes+1);
    
$sig['ano'] = ($mes == 12) ? ($ano+1) : $ano;
?>
<html>
    <head>
        <title>Calendario</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style>
            body{
                font-family: Helvetica, Arial, Verdana, Sans-serif;
                font-size:12px;
            }
            .titulocal{
                width:210px;
                text-align:center;
                color:DimGray;
                padding:5px 0px 5px 0px;
            }
            .titulocal a{
                text-decoration:none;
                color: DimGray;
            }
            .tablacal{
                width:210px;
                padding:0;
                border-collapse: collapse;
                border:1px solid LightGrey;
                font-size:12px;
            }
            .tablacal th{
                width:30px;
                background-color:LightGrey;
                border-collapse: collapse;
            }
            .tablacal td{
                color:Black;
                text-align:center;
            }
        </style>
    </head>
    <body>
        <div class='titulocal'><!--navegacion anterior y siguiente -->
            <a href='<?php echo $_SERVER['PHP_SELF'?>?ano=<?php echo $ant['ano'?>&mes=<?php echo $ant['mes'?>' id='anterior'><</a>
            &nbsp;<?php echo $meses[$mes]." ".$ano?>&nbsp;
            <a href='<?php echo $_SERVER['PHP_SELF'?>?ano=<?php echo $sig['ano'?>&mes=<?php echo $sig['mes'?>' id='siguiente'>></a>
        </div>
        <table class='tablacal'><!--inicio de la tabla del calendario-->
            <tr>
<?php
    
for ($dias_semana=0$dias_semana<count($dias); $dias_semana++){//encabezados con los nombres de los dias
?>
                <th class='nombredias'><?php echo $dias[$dias_semana?></th>
<?php
    
}
?>
            <tr>
<?php
    
for($dia_mes=1$dia_mes<=$dias_x_mes$dia_mes++){
        if(
jddayofweek (cal_to_jd(CAL_GREGORIAN$mes$dia_mes$ano)) == || $dia_mes == 1){
?>
            <tr>
<?php
        
}
        if(
$dia_mes == 1){
            for(
$dias_antes=0$dias_antes<$inicio_mes_dia$dias_antes++){//espacios en blanco que son los dias finales del mes anterior
?>
                <td class='dia'>&nbsp;</td>
<?php
            
}
        }
        
$dia = ($dia_mes<10) ? "0".$dia_mes $dia_mes;
        
$mesactual = ($mes<10) ? "0".$mes $mes;
                
//se muestran cada uno de los dias
?>
                <td class='dia'><?php echo $dia_mes ?></td>
<?php
        
if($dia_mes == $dias_x_mes){
            
$dias_fin jddayofweek (cal_to_jd(CAL_GREGORIAN$mes$dias_x_mes$ano));
            for(
$dias_despues=0$dias_despues<$dias_fin$dias_despues++){//espacios en blanco que son los primeros dias del mes siguiente
?>
                <td class='dia'>&nbsp;</td>
<?php
            
}
        }
        if(
jddayofweek (cal_to_jd(CAL_GREGORIAN$mes$dia_mes$ano)) == || $dia_mes==$dias_x_mes){//fin del renglon al final de la semana o del mes
?>
            </tr>
<?php
        
}
    }
?>
        </table><!--fin de la tabla del calendario-->
    <body>
</html>
Muchas Gracias
  #2 (permalink)  
Antiguo 09/07/2013, 02:28
 
Fecha de Ingreso: julio-2013
Mensajes: 87
Antigüedad: 11 años, 4 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.
  #3 (permalink)  
Antiguo 09/07/2013, 02:43
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 20 años, 2 meses
Puntos: 3
Respuesta: Calendario que empieza en domingo

Muchísimas Gracias!!!

Eres un máquina!

Etiquetas: calendario, domingo, empieza, html, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:32.