<?php//Creacion de un calendario mediante el uso de la funcion draw_calendar_v1(), que a su vez llama a create_calendar().//Solo se crearon las funciones con el fin de probar el llamado y regreso de valores, asi como poder crear//posteriormente una funcion drawTable() que dibuje tablas basadas en un arreglo multidimensional y datos.//Coded by: Jonathan Ramos, jonathanramos@gmail.com// Funcion que crea un arreglo Calendario de la fecha indicada con valores listos para salidafunction create_calendar($month,$year,$calendar){ // Declaramos variables de dias y semanas // usamos mktime para crear la fecha exacta que queremos para crear valor $time $running_day = date('w',mktime(0,0,0,$month,1,$year)); // w devuelve el numero del dia de la semana $days_in_month = date('t',mktime(0,0,0,$month,1,$year)); //t devuelve el numero de dias del mes $days_in_week = 0; $day = 1; $week = 0; // Mandamos datos de los dias de la semana al arreglo // Imprimimos dias en blanco hasta alcanzar el primero en la semana for ($days_in_week = 0; $days_in_week < $running_day; $days_in_week++){ $calendar [$week][$days_in_week] = 0;/* Remueve Comentarios si quieres ver los datos representativos que se van mandando al arreglo echo ("-- ");*/ } // Procedemos con los dias while ($day <= $days_in_month) { // Mientras no se llegue al numero de dias del mes llenamos el arreglo while($days_in_week < 7) { // Asignamos los dias restantes mientras no lleguemos al tope de dias de semana 7. // Al terminar los dias del mes seguimos llenando el arreglo de vacio if ($day <= $days_in_month){ $calendar [$week][$days_in_week] = $day;/* Remueve Comentarios si quieres ver los datos representativos que se van mandando al arreglo echo (" ".$day." ");*/ } else { $calendar [$week][$days_in_week] = 0;/* Remueve Comentarios si quieres ver los datos representativos que se van mandando al arreglo echo (" -- ");*/ } $days_in_week++; $day++; } $days_in_week = 0; $week++;/* Remueve Comentarios si quieres ver los datos representativos que se van mandando al arreglo echo "<br/>";*/ } return $calendar;}// Funcion que pinta el calendariofunction draw_calendar_v1($month,$year){ $calendar = array(array()); $cal_size = 0; $week = 0; $cell = 1; $month_name = " "; //Creamos el arreglo Calendario $calendar = create_calendar($month,$year,$calendar); // Longitud del Calendario incluyendo espacios en blanco, con llamada recursiva para que sea completo; // Al ser recursivo nos suma tambien los renglones que son los arrays padres de las celdas, entonces restamos $cal_size = count($calendar,COUNT_RECURSIVE) - count($calendar); //Creamos la tabla echo '<table style="width:50%">'; //Imprime $month and $year switch ($month) { // Obtenemos el nombre en castellano del mes case 1 : $month_name = "Enero"; break; case 2 : $month_name = "Febrero"; break; case 3 : $month_name = "Marzo"; break; case 4 : $month_name = "Abril"; break; case 5 : $month_name = "Mayo"; break; case 6 : $month_name = "Junio"; break; case 7 : $month_name = "Julio"; break; case 8 : $month_name = "Agosto"; break; case 9 : $month_name = "Septiembre"; break; case 10 : $month_name = "Octubre"; break; case 11 : $month_name = "Noviembre"; break; case 12 : $month_name = "Diciembre"; } // Primer renglon de la tabla (table row tr) con colspan para abarcar todo el renglon echo '<tr style="background-color:CornflowerBlue; color:white;"><th colspan = "7"; >'.$month_name.' '.$year.'</th></tr>'; //Creamos las celdas de los nombres de los dias de la semana echo '<tr style="background-color:Azure;">'; echo '<th>Domingo</th><th>Lunes</th><th>Martes</th><th>Miercoles</th><th>Jueves</th><th>Viernes</th><th>Sabado</th></tr>'; //Creamos las celdas de los dias de la semana while ($cell <= $cal_size){ echo "<tr>"; for ($day=0;$day<7;$day++){ if ($calendar[$week][$day]!=0){ echo "<td>".$calendar[$week][$day]."</td>"; } else { echo "<td></td>"; } $cell++; } $week++; echo "</tr>"; } echo "</table>";}//---------- Inicio Programa principal ---------------// Configuracion general de pagina y tablaecho "<!DOCTYPE html><html><head>";echo "<style>table, th, td { border: 1px solid black;border-collapse: collapse;}";echo " table, th {text-align:center;}, td { padding: 5px;text-align: left;}</style>";echo "</head><body>";echo "<h2>Creacion de Calendario usando php,html y css</h2>";// Lamada a la funcion que pinta el calendario la cual llama a su vez a la que crea el arreglo calendario$timeArray = localtime(time(),true);$month = $timeArray["tm_mon"]+1; // Mes actual$year = $timeArray["tm_year"]+1900; // Año actualdraw_calendar_v1(2,2016);echo "<br/>Coded by: Jonathan Ramos. jonathanramos@gmail.com";echo "</body></html>";?>
<h1>Calendario</h1>
<style>
table{
width:300px;
font-size:24px;
}
</style>
<?php $mes = date("m"); $año = date ("Y");$semana = array ("Mon","Tue", "Wed", "Thu","Fri","Sat","Sun");echo "<table>";echo "<thead>";echo "<tr>";echo "<th colspan='7'>",date("M, Y"),"</th>";echo "</tr>";echo "<tr>";echo "<th>Lu</th><th>Ma</th><th>Mi</th><th>Ju</th><th>Vi</th><th>Sa</th><th>Do</th>";echo "</tr>";echo "</thead>";echo "<tbody>";//// MARCO EL DÍA 1º DEL MES: ////////////////////echo "<tr>";for ($i=0;$i<=6;$i++){ if (date("D",mktime(0,0,0,$mes,1,$año))==$semana[$i]){ echo "<td>", date("d", mktime(0,0,0,$mes,1,$año)) ,"</td>"; if ( date("D",mktime(0,0,0,$mes,1,$año))=="Sun" ){ echo "</tr>","<tr>"; break; }else{ break; } break; }else{ echo "<td>", "</td>" ; }}/////////marco los días subsiguientes////////////////////for ($j=2;$j<=date("t");$j++){ if ( date("D",mktime(0,0,0,$mes,$j,$año))=="Sun" ) { echo "<td>", date("d", mktime(0,0,0,$mes,$j,$año)), "</td >", "</tr>", "<tr>"; }else{ echo "<td>", date("d", mktime(0,0,0,$mes,$j,$año)) , "</td>" ; }}echo "</tr>";echo "</tbody>";echo "</table>";?>
switch ($month) { // Obtenemos el nombre en castellano del mes
case 1 : $month_name = "Enero";
break;
case 2 : $month_name = "Febrero";
break;
case 3 : $month_name = "Marzo";
break;
case 4 : $month_name = "Abril";
break;
case 5 : $month_name = "Mayo";
break;
case 6 : $month_name = "Junio";
break;
case 7 : $month_name = "Julio";
break;
case 8 : $month_name = "Agosto";
break;
case 9 : $month_name = "Septiembre";
break;
case 10 : $month_name = "Octubre";
break;
case 11 : $month_name = "Noviembre";
break;
case 12 : $month_name = "Diciembre";
}
$monthArray = array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Juio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
$month_name = $monthArray[--$month];
Tambien no habia notado que subi la version donde no obtenia la fecha actual automaticamente, ahora mismo lo edito.<?php//Funcion que Dibuja una tabla.//Coded by: Jonathan Ramos, jonathanramos@gmail.com//--------------------------------------------------------------------------------------------------// Sintaxis function drawTable ($title,$columnHeader,$rowHeader,$tableArray,$keyFlag,$emptyCellKey)// -------------------------------------------------------------------------------------------------// donde $title,$columnHeader,$rowHeader y $emptyCellKey deben ser asignados con valor 0 si no se requieren.// $title : Es una Cadena con el titulo de la tabla.// $columnHeader: Arreglo con los Headers de las columnas de la tabla a dibujar.// $rowHeader: Arreglo con los Headers de los renglones de la tabla a dibujar.// $tableArray: Arreglo de dos dimensiones con los datos a imprimir en la tabla. Este es obligatorio.// $keyFlag: Valor booleano para indicar que se incluye un valor clave de escape para imprimer celda vacia.// $emptyCellKey: Valor clave de escape para imprimir celda vacia, si no se requiere se debe asignar false.function drawTable($title,$columnHeader,$rowHeader,$tableArray,$keyFlag,$emptyCellKey){ $arrayRowCount = count($tableArray); // Numero de elementos encabezado columna $arrayColumnCount = count($tableArray[0]); // Numero de elementos encabezado renglon $tableColumnCount = $arrayColumnCount; //Creamos la tabla html echo '<table style="width:50%">'; //Imprime titulo con cellpading $tableColumnCount if ($rowHeader != 0){ $tableColumnCount++; //Si existen $rowHeader, incrementamos el numero de columnas de la tabla a dibujarse } echo '<tr style="background-color:CornflowerBlue; color:white;">'; // Estilo del titulo echo '<th colspan = "'.$tableColumnCount.'"; >'.$title.'</th></tr>'; //Si son requeridos, creamos Headers de Columna if ($columnHeader != 0){ //Iniciamos etiqueta html table row echo '<tr style="background-color:Azure;">'; // Colores de estilo //Si hay headers de renglon, agregamos una celda en blanco if ($rowHeader != 0){ echo "<th></th>"; } //Pintado de headers de Columna for ($col=0; $col < $arrayColumnCount; $col++){ echo "<th>".$columnHeader[$col]."</th>"; } echo "</tr>"; //Finalizamos etiqueta html table row } //Pintado de renglones del array, y si son requeridos, creamos Headers de Renglon. for ($row=0; $row < $arrayRowCount; $row++){ echo "<tr>"; //Inicializamos etiqueta html table row sin atributos //Si son requeridos, creamos Headers de Renglon if ($rowHeader != 0){ // Colores de estilo echo '<th style="background-color:Lavender;">'.$rowHeader[$row].'</th>'; // Headers de renglon } //Pintado de celdas del arreglo $tableArray for ($col=0; $col < $arrayColumnCount; $col++){ // Verificamos si la bandera de escape es TRUE if ( $keyFlag ){ // Verificamos si no es un valor de celda vacia if ($tableArray[$row][$col] != $emptyCellKey){ echo "<td>".$tableArray[$row][$col]."</td>"; } else { echo "<td></td>"; // Celda Vacia por valor de escape } } else { echo "<td>".$tableArray[$row][$col]."</td>"; } } echo "</tr>"; //Finalizamos etiqueta html table row } echo "</table>"; } // end drawTable()?>