Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Dimitar Stefanov en 10 de Mayo 2016, 17:04
-
Buenas tardes, expongo una posible solución del ejercicio CU00830B del curso PHP desde cero.
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.
<?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.
-
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...
<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
-
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. :)