Академический Документы
Профессиональный Документы
Культура Документы
Calendarios en lnea a menudo se utilizan en muchas aplicaciones web. Aunque popular, la lgica detrs de la creacin de un calendario puede ser aterrador, especialmente para aquellos que son nuevos a la programacin. Hay muchos calendarios de Internet en el mercado, pero algunos de ellos son bastante complicados. Si no somos capaces de entender el cdigo, se hace ms difcil para nosotros para personalizar el calendario para encajar en nuestra aplicacin existente. Por lo tanto, tenemos que crear un calendario que se puede conectar a s mismo cualquier sistema sin problemas y sin problemas. Ya sea que estemos usando Wordpress, Mambo / Joomla o Drupal, que slo tendr que insertar una lnea en nuestro cdigo para el calendario de trabajo. es decir, algo como esto:
23 30
24
25
26
27
28
29
Tomemos, por ejemplo, abril 2006. Hay 30 das y 6 filas en el calendario. Si nos dan un da en el mes, digamos 15, tenemos que saber que cae en sbado y se encuentra en la tercera fila (tercera semana). No podemos dar por sentado que el primer da es siempre la primera celda de la tabla (celda superior izquierda).A veces, tenemos 4 o 5 semanas en un mes. Slo si sabemos cuntos das hay en un determinado mes y que el da primero del mes cae en slo podemos construir el calendario como se muestra arriba.
Para obtener el nmero de das de este mes, voy a utilizar el la fecha y la funcin mktime de esta manera: / / Obtener el nmero de das en el mes, por ejemplo, 28 $ DaysInMonth = date ("t", mktime (0,0,0, $ mes, 1, $ ao));
La representacin numrica del da de la semana va de 0 a 6. 0 es Domingo y 6 es Sbado. Una vez ms, para llegar el da numrica primero de este mes, la funcin mktime viene muy bien. / / Obtiene el primer da del mes, por ejemplo, 4 $ FirstDay = date ("w", mktime (0,0,0, $ mes, 1, $ ao));
Entonces queremos saber el nmero de lneas necesarias. / / Calcula el total de filas necesitaba $ weeksInMonth techo = ($ tempDays / 7);
$ contador ;
La magia de desplazamiento
Como puede ver, por encima de la matriz no es correcto. El primer da de abril, es decir, un valor debe estar en (0,6) en lugar de (0,0). Recuerde que la variable $ FirstDay? Es la representacin numrica del primer da del mes que pasa a ser 6 en abril de 2006. Si restamos $ FirstDay de todos los valores de la matriz, vamos a obtener la matriz de la siguiente manera: -5 -4 -3 -2 -1 0 1
2 9 16 23 30
3 10 17 24 31
4 11 18 25 32
5 12 19 26 33
6 13 20 27 34
7 14 21 28 35
8 15 22 29 36
Ahora debera ser capaz de adivinar lo que vamos a hacer a continuacin. En cuanto a la matriz anterior, se ve que ya tiene los valores que queremos, pero tambin tenemos algunos valores no deseados. Cualquier nmero menor que 1 o ms de $ DaysInMonth (nmero de das en un mes) debe ser ignorado.
? <Php funcin de funcin fillarray () { / / crear una matriz 2-d de ( $ j = 0 ; $ j < $ this -> weeksInMonth ; $ j + +) { for ( $ i = 0 ; $ i < 7 ; $ i + +) { $ contador + +; $ this -> semana [ $ j ] [ $ i ] = / / compensar los das $ this -> semana [ $ j ] [ $ i ] - = > semana [ $ j ] [ $ i ]> } } } } ?>
Esta es la funcin bsica en el algoritmo de calendario de toda una generacin.
if (( $ this -> semana [ $ j ] [ $ i ] < $ this -> DaysInMonth )) { $ this -> semana [ $ j ] [ $ i ] =
foreach funcin.
<table border="1" width="400" cellpadding="2" cellspacing="2"> <tr> <th colspan='7'> <? = date ('M', mktime (0,0,0 , $ mes, 1, $ ao)). '$ Al ao.; ($ Semana as $ key => $ val) { echo "<tr>"; for ($ i = 0; $ i <7; $ i + +) { echo "<td align='center'> $ fecha </ td > "; } echo "</ tr>"; } ?> </ table>
La presentacin final ser como este: 04 2006 Sol Lun Mar Casarse Jue Vie Sab 1 2 9 16 23 30 Ahora tenemos un calendario claro. 3 10 17 24 4 11 18 25 5 12 19 26 6 13 20 27 7 14 21 28 8 15 22 29
CREATE TABLE calendario ( id INT NOT NULL, da VARCHAR (2) NOT NULL, mes VARCHAR (2) NOT NULL, ao VARCHAR (4) NOT NULL, enlace VARCHAR (255) NOT NULL, TEXT desc NOT NULL, PRIMARY KEY (id) );
A continuacin, deber insertar algunos datos en la tabla para la prueba: INSERT INTO calendario (id, da, mes, ao, enlace, desc) VALORES ( '', '24 ',' * ', '2006', 'Http://www.sitecritic.net', 'Asegrate de que cccount web el da 24 de cada mes. 2006 slo! " ), ( '', '5 ', '11', '2006 ',' Some_javascript_funtion ',' los Juegos Olmpicos, no olvide comprar un billete de Alice. " ), ( '', '2 ', '1', '2007 ',' Some_javascript_funtion ',' a principios de 2007. Todos los nuevos planes para el ao? ), ( '', '9 ',' * ',' * ',' Http://www.evolt.org ',' Recuerde comprobar las actualizaciones de evolt.org cada mes. " );
El * en el mes o la columna del ao significa que cada mes o ao. A continuacin, hacemos una consulta y extraer las fechas importantes para un mes determinado y almacenarlo en una matriz.
? <Php $ sql '"*)" ; $ rs = $ db -> consulta ( $ sql ); = $ rs -> FetchRow ( )) { while ( $ rw = "SELECT * FROM agenda WHERE (mes = '$ mes y ao = $ ao) | | (mes =' * 'y ao = $ ao) | | (mes = $ mes y ao = '*') | | (mes = '*' y ao =
extracto ( $ rw ); $ enlaces [] = array ( 'da' => $ dia ',' meses '=> $ mes,' aos '=> $ al ao,' enlace '=> link $' desc => $ desc ); } ?>
Si creamos una clase para generar el calendario, tenemos que pasar la matriz $ vnculos en la clase de esta manera:
= & new
calendario ( $ CArray ,
$ hoy ,
$ enlaces ,
$ css ;)
CArray $ es una clase que contiene la matriz para el calendario normal, como se muestra en el paso da de hoy $ variable es la fecha de hoy. El $ vnculos variable contiene las fechas importantes CSS $ variable, podemos decorar la mesa el calendario y hacer que se vea ms bonito.
6. El
Despus de obtener una respuesta de la funcin de AJAX, es necesario que actualice el calendario. El calendario se envuelve alrededor de la etiqueta div llamado "quickCalender '. Slo necesito volver a escribir el contenido de la etiqueta sobre la marcha. . document.getElementById ("quickCalender") innerHTML = http.responseText;