encuentraperu.com
Dominios Gratis Perú
 

Manuales Gratis

Función que calcula el número de días de un mes en PHP. Que podremos utilizar en el calendario en PHP.

A continuación vamos a ver una sencilla manera de hacer una función en PHP que realiza el cálculo de los días de un mes. Es la función UltimoDia() que hemos utilizado ya en alguna ocasión para el manual de calendario en PHP.

Nota: La función UltimoDia() hace un cálculo de cuál es el último día de un mes. La hemos utilizado con anterioridad (una versión distinta de la presente) para realizar el Manual del calendario en PHP.

No es necesario hacer un ciclo repetitivo para la función UltimoDia(), es un poco más simple de resolver.

Los meses 1,3,5,7,8,10,12 siempre tienen 31 días, los meses 4,6,9,11 siempre tienen 30 días, el único problema es el mes de febrero dependiendo del año puede tener 28 o 29 días, pero ese cálculo tampoco es dificil.

Aquí envío el código para la función UltimoDía(), que ojalá les sirva...

function UltimoDia($anho,$mes){
if (((fmod($anho,4)==0) and (fmod($anho,100)!=0)) or (fmod($anho,400)==0)) {
$dias_febrero = 29;
} else {
$dias_febrero = 28;
}
switch($mes) {
case 01: return 31; break;
case 02: return $dias_febrero; break;
case 03: return 31; break;
case 04: return 30; break;
case 05: return 31; break;
case 06: return 30; break;
case 07: return 31; break;
case 08: return 31; break;
case 09: return 30; break;
case 10: return 31; break;
case 11: return 30; break;
case 12: return 31; break;
}
}

Para continuar, vamos a empezar a escribir los números de los días, del 1 hasta el número de días que tenga el mes. Habrá que empezar, lógicamente, por el día 1, pero antes de escribirlo, debemos averiguar qué día de la semana es el día 1. Si se tratase de un viernes, por ejemplo, deberíamos dejar, en la primera fila, libres las casillas del lunes al jueves y a partir de del viernes empezar a colocar números de días.

Vamos a llevar la cuenta del día que tenemos que imprimir en pantalla con la variable $dia_actual.

También tenemos que crear una variable que valga el número de días que tiene el mes, para saber cuándo parar de escribir números en el calendario.

Estas serían las siguientes líneas de código para obtener todos los datos de control que estamos señalado.

//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);

//calculo el último dia del mes
$ultimo_dia = ultimoDia($mes,$ano);

Acabamos de utilizar dos nuevas funciones:
  • Calcula_numero_dia_semana() para obtener el día de la semana del primer día del mes.
  • UltimoDia(), para saber cuantos días tiene el mes.
Estas funciones las podremos encontrar documentadas en un capítulo más adelante.

Ahora tenemos toda la información necesaria para escribir la primera fila de días en el calendario. Recordar que varias de las casillas de esta fila deben aparecer vacías porque el mes no tiene por qué empezar en lunes.

//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 {
       //pongo el número de día del mes en la celda
       echo "<td align=center>$dia_actual</td>";
       $dia_actual++;
    }
}
echo "</tr>";


Vemos que no encierra ningún misterio, simplemente hacemos un bucle que se repetirá 7 veces, tantas como días de la semana. Dentro del bucle comprobamos si el día de la semana actual es menor que $numero_dia, donde guardábamos el número de la semana del primer día del mes.

Si no hay que escribir el día simplemente se coloca la celda vacía y si tengo que escribirlo se coloca el día actual en la celda y se incrementa en uno dicho día actual.

Para continuar, debemos escribir en el calendario todos los demás días del mes, continuando por donde lo hubiésemos dejado. Para ello utilizamos un simple bucle que recorre esos días mientras que no lleguemos al último día del mes.

//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>";
    echo "<td align=center>$dia_actual</td>";
    $dia_actual++;
    $numero_dia++;
    //si es el ultimo de la semana, pongo al principio de la semana y escribo el </tr>
    if ($numero_dia == 7){
       $numero_dia = 0;
       echo "</tr>";
    }
}

La única complejidad que puede tener este trozo de código es saber cuándo debemos escribir el principio y el final de la fila, con sus correspondientes <tr> y </tr>. Para éllo, vamos a llevar la cuenta, con $numero_dia, del día de la semana que estamos imprimiendo.

Si estamos al principio de la semana ($numero_dia = 0) entonces escribo el inicio de fila con <tr>; Si estamos al final de la fila ($numero_dia = 7) entonces pongo el final de la fila con </tr>.

Entre medias de cada iteración se incrementa el $día_actual (que lleva la cuenta de todos los días del mes) y el $numero_día (que indicábamos que servía para saber en qué parte de la fila estamos).

Las últimas líneas de código de la función las vemos ahora.

//compruebo que celdas me faltan por escribir vacías de la última semana del mes
for ($i=$numero_dia;$i<7;$i++){
    echo "<td></td>";
}

echo "</tr>";
echo "</table>";

Simplemente escribo celdas vacías para las últimas casillas de la semana que acaba el mes donde no quedan días. Igual que al principio del calendario el primer día no tenía que estar en la primera casilla, el último día del calendario no tiene porque estar en la última casilla disponible.

Enlaces:

Foro Sobre Php, Si te estas iniciando en el Lenguaje Php aqui puedes poner tus dudas

Por CLIFTON CABELLO

   Manuales de PHP
 
   Manuales de Ayax
   Manuales de CSS

Contáctenos Ver PortalVer ForoConsulados PeruanosComunidades Peruanas La información mas Usada por Peruanos en el Exterior

Av. Petith Thouars 1251 Of. 302 Lima - Perú - Teléfonos: 2662540 / (062)510733 / 7959969
Celular
: (Movistar)96929470, (Movistar)(62)9928634 Perú
EMAIL: informes@encuentraperu.com   MSN: encuentraperu@hotmail.com


©1998-2009 ® ENCUENTRAPERU.COM Venta de Hosting, Dominio, Paginas Web Peru Diseño de Paginas Web Perú, Elaboracion de Paginas web Perú

Peruanos en el exterior, Peruanos en EE.UU, Peruanos en Argentina, Peruanos en colombia, Peruanos en Ecuador, Peruanos en Mexico, Peruanos en Venezuela, peruanos en España,Peruanos en Brazil, Peruanos en Bolivia, Peruans en Dinamarca, Peruanos en Dinamarca, Peruanos en Bulgaria, Peruanos en Bélgica, Peruanos en Chile, Peruanos en China, Peruanos en corea, Peruanos en Francia, Peruanos en Grecia, Peruanos en Holanda, Peruanos en Inglaterra, Peruanos en Japon, Peruanos en Inglaterra, Peruanos en Egipto, Peruanos en Camerun, Peruanos en Austria, Peruanos Millonarios, Chicas lindas del perú en el extranjero, Doctores del Peru en el Extranjero, Peruanos Deportistas en el Extrabjero, Fisicoculturistas Peruanos en el Extranjero, Musicos peruanos en el Extranjero, modelos Peruanos en el Exterior, Poetas Peruanos en el Exterior, Chefs peruanos en el Exterior, Como hacer un proyecto en el Exterior, Organizaciones peruanas en el Exterior, Ultimas noticias del Perú, Lo que suce den el Mundo y en el Perú, Quejas de peruanos en el Extranjero, Club de Peruanos en el Extranjero, Embajadas del Perú en el Exterior, Estas en el Exterior Reunate con mas peruanos, Peruanos por todo el Mundo, Manuales, Manuales Practicos, Videos de Peruanos, Fotos de Chicas, fotos de peruanos, Conosca a Gente del perú.