Autor Tema: PHP Funciones de fecha ejemplo mostrar y maquetar un calendario mes CU00830B  (Leído 3199 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenas tardes, expongo una posible solución del ejercicio CU00830B del curso PHP desde cero.

Citar
EJERCICIO

Crea un documento HTML que conste de un título h1 con el texto <<Calendario>>. En la página deberá mostrarse el mes y año actuales (en el momento en que hagas el ejercicio) y para cada día del mes, indicar si es lunes, martes, miércoles, jueves, viernes, sábado o domingo.

Ejemplo: suponiendo que hagas el ejercicio en mayo de 2050, debería mostrarse:

Día 1: Domingo, Día 2: Lunes, Día 3: Martes, Día 4: Miércoles, … etc. hasta Día 31: Martes.

Ampliación voluntaria del ejercicio: si tienes conocimiento de maquetación con HTML y CSS te proponemos que cambies el aspecto para que en lugar de mostrarse como texto, el calendario se muestre con aspecto de calendario habitual. Para la maquetación puedes usar una tabla de 7 columnas por 7 filas (total 49 celdas) con ancho de tabla 300 píxeles y tamaño de fuente en la tabla 24 píxeles. La primera columna corresponderá a lunes y la última a domingo como mostramos en el siguiente ejemplo.

Código: [Seleccionar]
<?php 

$time time();
$primerDiaDelMes $time - ((date("j",$time)-1)*24*60*60);
$primerDeLaSemana date("N"$primerDiaDelMes);
$unDiaContiene 24*60*60;
$diasDeLaSemana = ["Lu""Ma""Mi""Ju""Vi""Sa""Do"];
$mesesDelAnyo = ["Enero""Febrero""Marzo""Abril""Mayo""Junio""Julio""Agosto""Septiembre""Octubre""Noviembre""Diciembre"];

echo "<br>";
echo "<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Document</title>
<style type='text/css'>
div{
text-align: center;
}
table{
text-align: center;
margin-left: 41%;
}
</style>
</head>
<body>
<div>
<h1>"
.$mesesDelAnyo[(date("n"$time)-1)]." de ".date("Y"$time)."</h1>
<table style='font-size: 1.5em;'>
<tr>
<th>Lu</th>
<th>Ma</th>
<th>Mi</th>
<th>Ju</th>
<th>Vi</th>
<th>Sa</th>
<th>Do</th>
</tr>"
;
for($i 0$i<$primerDeLaSemana-1$i++){
if($i == 0){
echo "<tr><td></td>";
}else{
echo "<td></td>";
}
};

for($j 0$j date("t"$time); $j++){
if(date("N"$primerDiaDelMes+($unDiaContiene*$j)) == 7){
echo "<td>".date("d",$primerDiaDelMes+($unDiaContiene*$j))."</td></tr>";
}else if(date("N"$primerDiaDelMes+($unDiaContiene*$j)) == 1){
echo "<tr><td>".date("d",$primerDiaDelMes+($unDiaContiene*$j))."</td>";
}else{
echo "<td>".date("d",$primerDiaDelMes+($unDiaContiene*$j))."</td>";
}
};
echo "</tr>
</table>
</div>
</body>
</html>"
?>

Gracias.
« Última modificación: 15 de Mayo 2016, 21:41 por César Krall »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:CU00830B Funciones de fecha en PHP
« Respuesta #1 en: 12 de Mayo 2016, 13:36 »
Hola dimiste.

El ejercicio está bien resuelto.

Solo comentar que la variable $diasDeLaSemana no la usas, puesto que la fila donde deberían de ir la rellenaste manualmente...

Código: [Seleccionar]
<tr>
<th>Lu</th>
<th>Ma</th>
<th>Mi</th>
<th>Ju</th>
<th>Vi</th>
<th>Sa</th>
<th>Do</th>
</tr>";

Saludos. ;D

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Re:CU00830B Funciones de fecha, ejemplo calendario. PHP
« Respuesta #2 en: 12 de Mayo 2016, 22:36 »
Buenas noches, Pedro.

Gracias por corregirme el ejercicio.

Es verdad, jejejeje. Me he descuidado. Creé la array "$diasDeLaSemana" y luego no la utilicé, jajaja.

Saludos. :)

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".