Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Mostrar calendario PHP II


Segunda parte de la explicación de la función mostrar_calendario().


21/2/02 - 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.

Ver el calendario en funcionamiento

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 2 comentarios no revisados

 Autoría, licencia y acciones sobre este artículo

Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Calendario PHP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Scripts en PHP


 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se han encontrado 2 comentarios sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Calendario PHP
Categorías
+Scripts en PHP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia