Calendario Php Texto Completo

download Calendario Php Texto Completo

of 25

Transcript of Calendario Php Texto Completo

  • 8/17/2019 Calendario Php Texto Completo

    1/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    Calendario PHP Aplicación práctica de PHP en la que construimos un calendario que muestra el mes y año actualy permite moverse a otro mes y año.

    Autores del manual

    Este manual ha sido realizado por los siguientes colaboradores de DesarrolloWeb.com:

    Miguel Angel AlvarezDirector de DesarrolloWeb.comhttp://www.desarrolloweb.com (13 capítulos)

    Ricardo Norambuena Nelis (1 capítulo)

    Héctor A. Pinto Fngeniero en n!orm"tica. #antiago de$hile.(1 capítulo)

    Tomas Isasia$onsultor %nalista de #istemas(1 capítulo)

    Manual de creación de un calendario con PHP: 

    www.desarrolloweb.com/manuales/24/& 'os manuales de DesarrolloWeb.com tienen el copright de sus autores. o reproducir sin autorizaci*n.

    1

    http://www.desarrolloweb.com/http://www.desarrolloweb.com/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/

  • 8/17/2019 Calendario Php Texto Completo

    2/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    Parte 1:

    Calendario PHP sencillo$omenzamos este manual con +arios artículos ,ue nos audar"n a hacer un calendario-- sencillo. $onstruiremos un sistema para mostrar el calendario de un mes cual,uiera un sistema para poder na+egar entre meses anterior siguiente para poder irr"pidamente a cual,uier mes a0o ,ue necesitemos.

    1.1.- Introduccin al calendario PHPVemos rápidamente los aspectos generales del ejercicio y proporcionamos unas referencias para poderseguirlo.

    En este pequeño manual vamos a construir una página en PHP con un calendario, donde inicialmente se muestra el mes yaño actual y por el que podremos navegar, a través de un formulario y enlaces, para mostrar otro mes y año cualquiera.

    Podemos  ver el ejercicio en funcionamiento para obtener una idea más exacta de los objetivos.

    Este calendario, por si slo, no tiene muc!a utilidad, pero lo podremos utili"ar para cualquier lugar donde necesitemosseleccionar fec!as, por ejemplo una aplicacin que implemente una agenda o, en general, en cualquier formulario dondequeramos evitar que el usuario escriba las fec!as a mano.

     #unque no se trata de un ejercicio demasiado dif$cil, resulta bastante largo de explicar. Es por ello que !emos preferidomostrarlo a lo largo de varios cap$tulos antes que !acer uno demasiado largo que canse al lector.

     Actualizado: El %anual del &alendario PHP es una práctica PHP en la que mostramos paso a paso cmo reali"ar un calendario. 'ue escritaen ())(, con lo que ya !an pasado años en los que incluso se !an presentado versiones nuevas de PHP. El cdigo original estaba creado paraPHP * y en noviembre de ()+) !emos revisado este manual para actuali"ar el cdigo, de manera que se pueda ejecutar sin problemas en PHP.

    -riginalmente el calendario fue creado por %iguel #ngel #lvare", de esarrollo/eb.com, pero luego varias personas se animaron aactuali"arlo y a presentar modificaciones en las que se implementan nuevas funcionalidades. #lgunas de estas personas nos enviaron el cdigode los calendarios, tal como los !ab$an modificado y nosotros los !emos ido publicando en este mismo manual en cap$tulos siguientes.

    e modo que en este manual se ofrecen en realidad diversos calendarios, todos creados a partir de la misma base. 0a base se relata en loscap$tulos iniciales 1!asta el art$culo 2-tras funciones de la librer$a del calendario23 y a partir de all$ se muestran varias modificaciones quepueden resultar de interés para las personas.

    ebemos aclarar que en esarrollo/eb.com !emos actuali"ado el cdigo del calendario PHP básico, pero no !emos tocado los cdigosenviados por otros colaboradores 1que pueden requerir una revisin para adaptarse a la versin de PHP más actual3, ya que son materiales quetienen otra autor$a de los cuales no nos responsabili"amos.

     #demás, a partir del art$culo 4tili"ar el calendario para seleccionar una fec!a se puede ver una modificacin al calendario reali"ada por m$mismo y que en ()+) todav$a sigue funcionando sin problemas. Esta modificacin tampoco la !e revisado en esta actuali"acin, por la ra"nde que sigue ejecutándose correctamente en PHP .

    Manual de creación de un calendario con PHP: 

    www.desarrolloweb.com/manuales/24/& 'os manuales de DesarrolloWeb.com tienen el copright de sus autores. o reproducir sin autorizaci*n.

    2

    http://www.desarrolloweb.com/http://www.desarrolloweb.com/articulos/ejemplos/calendario_php/http://www.desarrolloweb.com/articulos/ejemplos/calendario_php/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/articulos/687.phphttp://www.desarrolloweb.com/articulos/687.phphttp://www.desarrolloweb.com/articulos/1160.phphttp://www.desarrolloweb.com/articulos/1160.phphttp://www.desarrolloweb.com/articulos/1160.phphttp://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/articulos/ejemplos/calendario_php/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/articulos/687.phphttp://www.desarrolloweb.com/articulos/1160.phphttp://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/

  • 8/17/2019 Calendario Php Texto Completo

    3/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    1.1.1.- Resumen del e!ercicio

    0a aplicacin calendario va a componerse por tres arc!ivos, pod$a !acerse en uno, pero as$ creemos que resulta más claro ala !ora de documentar y posteriormente al utili"arlo en otras aplicaciones.

    • Página $nice, index.p!p, donde el usuario accederá para ver el calendario.

    • 0ibrer$a de funciones, calendario.p!p. &on varias funciones que vamos a utili"ar dentro de la aplicacin. Estará lafuncin mostrar5calendario13 y otras funciones de manejo de fec!as. Esta librer$a es el elemento 2portable2 quepodremos utili"ar el otras aplicaciones.

    • Hoja de estilos, estilos.css. Esta !oja de estilos nos permitirá definir la forma del calendario, es decir, el tipo deletra, los colores, etc. 6i alguno de vosotros desea cambiar estos estilos solamente deber$a actuali"ar esta declaracin&66.

     7odos los arc!ivos fuente del calendario se pueden descargar desde este enlace. 8os servirán para ponerlo en marc!a ennuestro propio servidor y utili"arlo para otras aplicaciones que lo requieran. En el arc!ivo de la descarga encontraréis varias

     versiones del calendario, puesto que se !an !ec!o varias modificaciones, tal como podréis ver en el %anual del &alendario.

    1.1.".- Re#erenciasPara entender este ejercicio es fundamental que el lector tenga conocimientos sobre diversas áreas del desarrollo de páginas

     9eb. En esarrollo/eb.com podemos aprender todo lo que nos !ace falta. #qu$ tenemos los enlaces:

    • 6eccin sobre PHP. &on manuales y talleres que cubren los aspectos más importantes aspectos del lenguaje.

    • %anual de &66. Para el que desee aprender el manejo de las !ojas de estilo.

    Nota: 6i lo deseamos, podemos acceder a un calendario con ;avascript. 6er$a otra forma de reali"ar un calendario sin utili"ar PHP

    Para acabar, dejamos un enlace para  ver el calendario en funcionamiento. < os encaminamos al siguiente art$culo, donde veremos el arc!ivo $ndice del calendario.

    Artículo por Miguel Angel Alvarez 

    1.".- Arc$ivo %ndice del calendario PHPVemos el archivo index.php que es el lugar donde se puede visuali!ar el calendario PHP y donde se haceuso de las funciones más importantes.

    Hemos !ec!o un arc!ivo $ndice lo más pequeño posible, con nombre index.p!p. &omo dec$amos, la complejidad de esteejercicio nos la guardamos para la librer$a calendario que es donde están las funciones realmente portables. Este arc!ivo, portanto, no interesa muc!o a la !ora de trasladar este calendario a otras aplicaciones, pero ec!arle un vista"o nos preparará

    para saber las funciones que debemos utili"ar de la librer$a.

    0o que va a !acer este arc!ivo, la primera ve" que se accede, es mostrar el calendario del año y mes actuales. Posteriormente,el usuario puede cambiar el mes o año del calendario a través de los enlaces o el formulario disponibles para tal efecto. Enéste caso, se accederá otra ve" al arc!ivo $ndice pasándole por P-67 o =E7 el nuevo mes y año que !a de mostrar.

    Podemos ver el cdigo de index.p!p a continuacin.

  • 8/17/2019 Calendario Php Texto Completo

    4/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    ET;"n%o9ano"7=%s%:  8ti%$+o9ata ( ti$%567  8$%s ( &at%5"n"? 8ti%$+o9ata67  8ano ( &at%5"Y"? 8ti%$+o9ata67=

    $ostrar9a%n&ario58$%s?8ano67or$arioCa%n&ario58$%s?8ano672

  • 8/17/2019 Calendario Php Texto Completo

    5/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    1.&.- Mostrar calendario PHP I"xplicamos la función encargada de imprimir el calendario en la página #e$. "s la función más

    improtante del ejercicio y tam$i%n la más compleja.

    Estamos explicando cmo se podr$a construir un calendario de un mes, configurable para mostrar cualquier mes y año quese desee, con PHP. 6e trata de una práctica PHP a la que se le puede dar seguimiento a partir del manual del calendario PHP. En el art$culo anterior se mostr cmo podr$a reali"arse una página para mostrar un calendario. En ese index !ac$amosllamadas a funciones de la librer$a calendario.p!p que vamos a comen"ar a explicar en este art$culo.

     #!ora vamos a construir una funcin que crea el calendario de un mes y un año determinados. Por ejemplo, si indicamosque se cree el calendario de febrero de ())(, obtendr$amos algo como lo que se puede ver en la imagen siguiente:

    Este ejemplo presenta una ligera complejidad, aunque esperamos que con nuestras explicaciones podáis entender cmo!emos resuelto el problema.

    1.&.1.- Funcin mostrar'calendario()mes*)ano+

    Es la funcin más importante de nuestra librer$a. 6e encarga de dibujar en pantalla el calendario con todos sus d$as. Elcalendario lo !aremos en una tabla de H7%0, as$ que iremos escribiendo el calendario por arriba, utili"ando lascorrespondientes etiquetas H7%0.

    Empe"aremos escribir el mes y año que se están visuali"ando. 8os debemos fijar que a los lados del mes y año tenemosunas flec!itas para ir al mes anterior o siguiente. Estas flec!itas son enlaces al $ndice en los que pasamos por parámetro elmes y año que debe visuali"arse. Cemos el cdigo de todo esto y lo comentamos más adelante.

    Nota: Este cdigo se ve un poco mal en este documento porque tiene l$neas muy largas y se !acen saltos de l$neas que no permiten verl conclaridad. Es recomendable que os miréis también el ejemplo en el arc!ivo del cdigo fuente que se puede descargar de este calendario PHP.

    //to$o % no$r% &% $%s % #a* % i$+ri$ir8no$r%9$%s ( &a$%9no$r%9$%s58$%s67

    //onstr*o a taa 1%n%ra%#o @

  • 8/17/2019 Calendario Php Texto Completo

    6/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    %#o @

  • 8/17/2019 Calendario Php Texto Completo

    7/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    nBmeros en el calendario.

    Estas ser$an las siguientes l$neas de cdigo para obtener todos los datos de control que estamos señalado.

    //aria% +ara %ar a %nta &% &ia ata8&ia9ata ( 7

    //ao % n$%ro &% &ia &% a s%$ana &% +ri$%r &ia8n$%ro9&ia ( aa9n$%ro9&ia9s%$ana5?8$%s?8ano67

    //ao % Nti$o &ia &% $%s8ti$o9&ia ( ti$oDia58$%s?8ano67

    Nota: #cabamos de utili"ar 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.

     #!ora tenemos toda la informacin necesaria para escribir la primera fila de d$as en el calendario. Aecordar que varias de lascasillas de esta fila deben aparecer vac$as porque el mes no tiene por qué empe"ar en lunes.

    //%srio a +ri$%ra ia &% a s%$ana%#o "

  • 8/17/2019 Calendario Php Texto Completo

    8/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

      8n$%ro9&ia ( 07  %#o "tr@ y >Jtr@. Para éllo, vamos a llevar la cuenta, con Fnumero5dia, del d$a de la semana queestamos imprimiendo.

    6i estamos al principio de la semana 1Fnumero5dia )3 entonces escribo el inicio de fila con >tr@K 6i estamos al final de lafila 1Fnumero5dia I3 entonces pongo el final de la fila con >Jtr@.

    Entre medias de cada iteracin se incrementa el Fd$a5actual 1que lleva la cuenta de todos los d$as del mes3 y el Fnumero5d$a1que indicábamos que serv$a para saber en qué parte de la fila estamos3.

    0as Bltimas l$neas de cdigo de la funcin las vemos a!ora.

    //o$+r%o % %&as $% atan +or %sriir aias &% a Nti$a s%$ana &% $%s

    or 58i(8n$%ro9&ia78i

  • 8/17/2019 Calendario Php Texto Completo

    9/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

      %#o @

  • 8/17/2019 Calendario Php Texto Completo

    10/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    1./.- Mostrar #ormulario del calendario*a segunda función en importancia es la que se encarga de mostrar el formulario que nos sirve para

    cam$iar el mes y el año del calendario.

    &ontinuamos avan"ando en la práctica de construccin de un calendario en PHP. #!ora que !emos visto cmo reali"ar lafuncin que muestra el calendario, podremos pasar a ver cmo reali"ar el formulario que !ay debajo, que permite seleccionarrápidamente cualquier mesJaño para visuali"arlo en el calendario.

     7odo lo !aremos a través de una funcin llamada formulario&alendario13. Esta funcin sirve para imprimir en pantalla elformulario que utili"amos para seleccionar cualquier otro mes y año que deseemos visuali"ar en la página. 8o deber$asignificar un problema muy gordo, pues se trata de un simple formulario. 0o Bnico que complica un poco el cdigo es quedeseamos que el formulario presente inicialmente los valores de mes y año que está mostrando el calendario, pero veremosrápido cmo !acerlo.

    1./.1.- Funcin #ormularioalendario ()mes*)ano+

    Para empe"ar, vemos que la funcin recibe el mes y el año, que nos servirá para saber el valor por defecto a mostrar ennuestro formulario. El cdigo lo podemos ver por partes a continuacin.

    %#o @

  • 8/17/2019 Calendario Php Texto Completo

    11/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    i 58$%s((6%#o "s%%t%&"7

    %#o @)%+ti%$r%

  • 8/17/2019 Calendario Php Texto Completo

    12/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

     

  • 8/17/2019 Calendario Php Texto Completo

    13/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

     

  • 8/17/2019 Calendario Php Texto Completo

    14/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

      r%trn 8ti$o9&ia7

    Para !allar ese dato vamos a utili"ar una pequeña treta que consiste en suponer que el mes tiene (O d$as como m$nimo y

    empe"ar a validar cada uno de los d$as siguientes !asta que la fec!a que estamos construyendo sea incorrecta. En ese casoquerrá decir que el nBmero de d$as es + menos que los que tenemos en el momento de fallar la fec!a.

    Por poner un ejemplo, para enero, empe"ar$amos por (O. Entonces validamos el d$a siguiente 1(3. &omo es correcta lafec!a 2( de enero de una año cualquiera2, acumulamos + en la variable Fultimo5dia para situarnos en esa fec!a válida.Posteriormente, validamos el N) de enero, que también es correcta, entonces volvemos a acumular + en la variable parasituarnos en esa nueva fec!a correcta... as$ !asta que intentemos validar la fec!a 2N( de enero2 que será la primera que falle.Entonces paramos el bucle y dejamos de acumular a la fec!a que ten$amos, que era válida. Esto funciona bien para cualquiermes, incluso para febrero, sea el año bisiesto o no.

    1.0.&.- Funcin dame'nombre'mes()mes+

    evuelve el nombre del mes que recibe como nBmero en el parámetro. Ejemplo sencillo donde los !aya, slo tiene unaestructura s9itc! que asigna un mombre de mes para cada valor del parámetro.

    ntion &a$%9no$r%9$%s58$%s6:sit# 58$%s6:

    as% Q8no$r%9$%s("En%ro"7r%a'7

    as% AQ8no$r%9$%s("R%r%ro"7r%a'7

    as% 3Q8no$r%9$%s("Maro"7r%a'7

    as% 4Q8no$r%9$%s("Sri"7r%a'7

    as% Q8no$r%9$%s("Ma*o"7r%a'7

    as% Q8no$r%9$%s("nio"7r%a'7

    as% Q8no$r%9$%s("io"7r%a'7

    as% VQ8no$r%9$%s("S1osto"7r%a'7

    as% Q8no$r%9$%s(")%+ti%$r%"7r%a'7

    as% 0Q

    8no$r%9$%s("Otr%"7r%a'7

    as% Q8no$r%9$%s("oi%$r%"7r%a'7

    as% AQ8no$r%9$%s("Dii%$r%"7r%a'7

    =r%trn 8no$r%9$%s7

    =

    &on esto !emos acabado el ejercicio del calendario PHP. #unque seguro que !abrá !ec!o falta un esfuer"o por vuestraparte, esperamos que las explicaciones !ayan sido suficientes y podáis entenderlo bien.

    Manual de creación de un calendario con PHP: 

    www.desarrolloweb.com/manuales/24/& 'os manuales de DesarrolloWeb.com tienen el copright de sus autores. o reproducir sin autorizaci*n.

    14

    http://www.desarrolloweb.com/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/

  • 8/17/2019 Calendario Php Texto Completo

    15/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    Para acabar, dejamos un enlace para Cer el calendario en funcionamiento. 

    Nota: Hasta aqu$ !emos construido un calendario más o menos funcional, que permite mostrar cualquier mes y año. &laro que para ponerlo

    en produccin seguramente necesitaremos trabajar un poco más para !acer cosas como que se pueda seleccionar un d$a, se marquen los d$asfestivos con otro color, etc. En los prximos art$culos del %anual del &alendario PHP abordaremos algunas de las necesidades que losdesarrolladores se puedan plantear para usar este calendario.

    Artículo por Miguel Angel Alvarez 

    Parte 2:

     Ampliación de

     funcionalidad en el

    calendario PHPna +ez ,ue tenemos la base con la ,ue podemos mostrar cual,uier calendario de

    cual,uier mes +amos a realizar algunas modi!icaciones encaminadas a me2orar las!uncionalidades del calendario. Especí!icamente +eremos cosas como colorear días!esti+os usar el calendario para seleccionar una !echa dada etc.

    ".1.- alendario PHP modi#icado,eali!ación del calendario con tres modificaciones- *os sá$ados y los domingos aparecen en rojo seseñala el da actual y hay un campo de texto donde aparece el da seleccionado.

    4n usuario que !a utili"ado nuestro calendario en PHP lo necesitaba modificar en algunos aspectos para que reali"ase unasfunciones adicionales.

    Ha sido tan amable de mandarnos los arc!ivos con sus modificaciones y este comentario que explica un poco las mejorasreali"adas:

    Recien hoy me inscribí para bajar el calendario de php, el cual, para mi necesidad, era insuficiente. Por lo tanto tuve que modificar el código, ahora permite, no solo ver el calendario, además, destaca el fin de semana, el día actual y permite seleccionar un día determinado y mostrarlo en un 'tet',espero que lo publiquen, qui!as a alguien mas le pueda servir... 

    4na imagen del resultado obtenido se puede ver a continuacin:

    Manual de creación de un calendario con PHP: 

    www.desarrolloweb.com/manuales/24/& 'os manuales de DesarrolloWeb.com tienen el copright de sus autores. o reproducir sin autorizaci*n.

    15

    http://www.desarrolloweb.com/http://www.desarrolloweb.com/articulos/ejemplos/calendario_php/http://www.desarrolloweb.com/articulos/ejemplos/calendario_php/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/articulos/ejemplos/calendario_php/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/

  • 8/17/2019 Calendario Php Texto Completo

    16/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

     #!ora, para el que lo necesite, puede descargar los arc!ivos del calendario modificado, para utili"arlo libremente es sus

    creaciones.

    Artículo por Ricardo Norambuena Nelis 

    ".".- 3lculo de los d%as de un mes en PHP,eali!amos una función que calcula el n/mero de das de un mes en PHP. 0ue podremos utili!ar en elcalendario en PHP.

     # continuacin vamos a ver una sencilla manera de codificar una funcin en PHP que reali"a el cálculo de los d$as de un

    mes, teniendo en cuenta si el mes tiene N) o N+ d$as as$ como si es febrero de un mes bisiesto, etc.Esta funcin es 4ltimoia13 que !emos utili"ado ya en alguna ocasin para el manual de calendario en PHP. Está creada demanera 2artesanal2, #unque PHP actualmente contiene algunas funciones que nos pueden ayudar a !acer este mismotrabajo sin tener que reali"ar nosotros mismos los cálculos.

    Nota: 0a funcin 4ltimoia13 !ace un cálculo de cuál es el Bltimo d$a de un mes. 0a !emos utili"ado con anterioridad 1una versin distintade la presente3 para reali"ar el %anual del calendario en PHP.

    8o es necesario !acer un ciclo repetitivo para la funcin 4ltimoia13, es un poco más simple de resolver.

    0os meses +,N,,I,O,+),+( siempre tienen N+ d$as, los meses *,M,,++ siempre tienen N) d$as, el Bnico problema es el mes defebrero dependiendo del año puede tener (O o ( d$as, pero ese cálculo tampoco es dificil.

     #qu$ env$o el cdigo para la funcin 4ltimo$a13, que ojalá les sirva...

    Nota: Por favor, leer los comentarios que !an enviado otros visitantes de esarrollo/eb.com que proponen cdigos para !acer esta mismafuncionalidad pero de una manera muc!$simo más elegante, corta, sencilla y sin posibilidad de errores. =racias a todas las personas que !ancomentado y aportado algo más a este art$culoQQQQQ

    ntion Uti$oDia58an#o?8$%s6:i 555$o&58an#o?46((06 an& 5$o&58an#o?006!(066 or 5$o&58an#o?4006((066 :

    8&ias9%r%ro ( A7= %s% :

    8&ias9%r%ro ( AV7=sit#58$%s6 :

    as% 0Q r%trn 37 r%a'7

    Manual de creación de un calendario con PHP: 

    www.desarrolloweb.com/manuales/24/& 'os manuales de DesarrolloWeb.com tienen el copright de sus autores. o reproducir sin autorizaci*n.

    16

    http://www.desarrolloweb.com/http://www.desarrolloweb.com/descargas/descargar.php?descarga=5088http://www.desarrolloweb.com/descargas/descargar.php?descarga=5088http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/descargas/descargar.php?descarga=5088http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/

  • 8/17/2019 Calendario Php Texto Completo

    17/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

      as% 0AQ r%trn 8&ias9%r%ro7 r%a'7as% 03Q r%trn 37 r%a'7as% 04Q r%trn 307 r%a'7as% 0Q r%trn 37 r%a'7as% 0Q r%trn 307 r%a'7as% 0Q r%trn 37 r%a'7as% 0VQ r%trn 37 r%a'7as% 0Q r%trn 307 r%a'7as% 0Q r%trn 37 r%a'7as% Q r%trn 307 r%a'7as% AQ r%trn 37 r%a'7

    ==

    Artículo por Héctor A. Pinto F 

    ".&.- 4tilizar el calendario ara seleccionar una #ec$a+ómo utili!ar el calendario en un campo de formulario donde deseamos que se introdu!ca una fecha.

     Camos a ver cmo podemos utili"ar la librer$a del calendario PHP para seleccionar una fec!a en un elemento de formulario,que ser$a una de las acciones más t$picas a reali"ar con la librer$a del calendario vista anteriormente.

    Referencia: 6e encontrará informacin del calendario y la introduccin necesaria para seguir este art$culo en elmanual &alendario en PHP. 

    0o que pretendemos conseguir es disponer de un campo de texto donde se deber$a introducir una fec!a y la opcin depulsar un botn para abrir una ventana independiente con el calendario. En el calendario deber$amos poder pulsar un d$aconcreto y la fec!a deber$a escribirse en el formulario de origen.

    El ejercicio se puede ver pulsando este enlace.

    Para completar este ejercicio se deben reali"ar una gran cantidad de pasos, ninguno de ellos demasiado complicado o largo,técnicamente !ablando, pero s$ bastante espec$ficos. Aealmente el bloque principal del trabajo ya está reali"ado con laslibrer$as del calendario relatadas en este manual, pero aun queda una adaptacin bastante laboriosa.

    Hemos puesto a vuestra disposicin para descargar los scripts y librer$as utili"ados en este ejercicio. 

    El formulario 

    Para empe"ar vamos a ver cmo ser$a el formulario donde se seleccionar$a una fec!a ayudado por el calendario.

  • 8/17/2019 Calendario Php Texto Completo

    18/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    ".,.- Funcin 5avascrit ara abrir el calendario1entro de las acciones encaminadas a seleccionar una fecha de$emos incluir una función 2avascript que

     permita a$rir un popup con el calendario.

    El calendario, al pulsar uno de sus d$as, deberá escribir en el campo de texto origen la fec!a seleccionada. Por tanto, para queel calendario sepa cuál es el campo de texto que debe actuali"ar, deberemos mandarle el nombre del formulario y del campode texto donde colocar la fec!a.

    Referencia: 6e encontrará informacin del calendario y la introduccin necesaria para seguir este art$culo en elmanual &alendario en PHP. 

    Para que el calendario cono"ca esos datos 1nombre del formulario y el campo de texto3 debemos mandarlos comoparámetro a través de la 4A0. El calendario tendrá que memori"arlos !asta que finalmente se !aya seleccionado la fec!a.

     #s$ pues, la funcin que abre el calendario y le pasa los datos del formulario y campo que actuali"ar tendrá una forma similar

    a la que se puede ver a continuacin. Por cierto, la funcin estará escrita en ;avascript ya que es el lenguaje con el quepodemos abrir una ventana secundaria con el calendario como respuesta a la pulsacin del botn.

    ar %ntanaCa%n&ario(as%

    ntion $%straCa%n&ario5rai?or$ario9&%stino?a$+o9&%stino?$%s9&%stino?ano9&%stino6://nion +ara arir na %ntana on n a%n&ario.//)% &%%n in&iar os &atos &% or$ario * a$+os % s% &%s%an %&itar on % a%n&ario? %s

    &%ir? os a$+os &on&% a a %#a.i 5t*+%o %ntanaCa%n&ario.&o$%nt (( "oX%t"6 :

    %ntanaCa%n&ario.os%56=%ntanaCa%n&ario ( in&o.o+%n5"a%n&ario/in&%,.+#+2or$ario(" or$ario9&%stino

    "Gno$a$+o(" a$+o9&%stino?"a%n&ario"? "i&t#(300?#%i1#t(300? %t(00?to+(00?sroars(no?$%nars(no?statsar(O? stats(O? r%sia%(YE)?oation(O"6=

    -tro detalle menos relevante para este ejercicio pero importante para no liarse con el cdigo ;avascript es que la ventana delcalendario puede o no estar abierta cuando se pulsa el botn. En nuestro caso, si se detecta que está abierta, se ordenacerrarse y luego se vuelve a abrir. #s$ nos aseguramos que la ventana se queda siempre abierta en el mes actual y siempre

     visible, al abrirse por encima de la ventana donde estaba el formulario.

    En nuestro ejemplo vamos a colocar la funcin en un arc!ivo a parte llamado javascripts.js, que incluiremos desde lacabecera del documento H7%0 que pretenda utili"ar el calendario. 0a manera de incluir scripts ;avascript en arc!ivosexternos la vimos en el primer manual de ;avascript.

  • 8/17/2019 Calendario Php Texto Completo

    19/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    acciones bien definidas.

    +. 7odos los d$as del calendario deberán ser enlaces para que se puedan pulsar, lo que significará que se !aseleccionado ese d$a concreto.

    (. Habrá que crear una funcin ;avascript para, una ve" seleccionada una fec!a, actuali"ar el valor del campo de textoindicado y cerrar la ventana del calendario.

    N. El calendario puede llamarse a si mismo para mostrar un mes yJo año distinto. En esas llamadas es muyimportante que se pasen los datos del nombre del formulario y el campo de texto para que el calendario losrecuerde a fin de utili"arlos cuando se seleccione una fec!a concreta.

    *. 7ambién !emos ampliado la RinteligenciaS del calendario para que coloree sus d$as. 0os domingos en rojo, el d$aactual en a"ul y los demás en negro.

    Esas tres modificaciones se pueden ver en las páginas del calendario modificado. e todos modos, escribimos aqu$ losscripts para que queden constancia junto con sus explicaciones.

    1) Los días son enlaces 

    Para que los d$as del calendario se puedan pulsar se !an convertido en enlaces. El cdigo asociado con esta funcionalidad es

    el siguiente:

    %#o "

  • 8/17/2019 Calendario Php Texto Completo

    20/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    Esta funcin tiene tres complicaciones fundamentales. 0a primera se trata de el campo donde copiar la informacin seencuentra en otra página 9eb que está en otra ventana de navegador. Esto no es problema, porque sabemos acceder desdeuna ventana secundaria 1el calendario3 a la ventana que la abri 1la que contiene el formulario3, a través de la variable opener,que contiene una referencia, como dec$amos, a la ventana origen. -pener es como el objeto 9indo9 de la ventana que abriel popup y a rai" de dic!a variable cuelga toda la jerarqu$a de objetos de la ventana del formulario.

    Referencia: Para dominar estos conceptos de trabajo con ventanas secundarias es interesante leer el manual&ontrol de ventanas secundarias con ;avascript. 

    0a segunda complicacin consiste en que la funcin debe conocer el nombre del formulario y del campo de texto dondecopiar el valor de la fec!a seleccionada. ic!os nombres fueron pasados al abrir la ventana del calendario y estaban en

     variables PHP. 6in embargo, necesitamos utili"ar las variables en ;avascript y donde están declaradas es en el ámbito de PHP.Para pasar las variables desde el ámbito de PHP al de ;avascript se utili"an las l$neas de cdigo:

    ar or$ario9&%stino ( @ET;"or$ario"2@ar a$+o9&%stino ( @ET;"no$a$+o"2@

    Referencia: El tema de pasar variables de un lenguaje a otro lo !ab$amos tratado en la '#T Pasar variables de

     #6P o PHP !acia ;avascript o viceversa. 

    0a tercera y Bltima complicacin que quer$amos destacar consiste en la ra"n de la utili"acin de la funcin eval. Es tal ve" lacomplejidad más complicada de explicar, y de comprender por las personas poco acostumbradas a ;avascript. 0a funcineval13 sirve para evaluar, o lo que es lo mismo: ejecutar, una sentencia ;avascript. 0o que !ay entre los paréntesis de eval13 esla composicin de la sentencia que se debe ejecutar para colocar la fec!a en el campo de formulario. < en su caso, eval13,después de componerse la sentencia, la ejecuta, dando como resultado el efecto buscado.

    Nota: 0a ra"n de utili"ar eval13 está bien clara. 8osotros podemos concatenar todos los elementos necesariospara crear una sentencia ;avascript, pero lo Bnico que podr$amos obtener como resultado es una variable quecontuviese un cdigo ;avascript. 6i queremos ejecutarlo necesitamos for"osamente de la ayuda de la funcineval13. Es dif$cil encontrar ejemplos tan interesantes donde la utili"acin de eval13 es crucial para resolver unproblema. e todos modos, si no llegamos a entender puede ser interesante acceder al manual de ;avascript LL,

    donde !ablamos de la librer$a de funciones ;avascript y de ejemplos de las mismas, donde encontraremos otroejemplo de uso de eval13.

    Artículo por Miguel Angel Alvarez 

    ".6.- Modi#icaciones en el calendario III3ás modificaciones en la li$rera del calendario correspondientes con la conservación de las varia$lesdel nom$re del formulario y del campo.

    &) Conservaci"n de las varia'les del nom're del formulario del cam$o 

     #l llamar al calendario, como ya se !a dic!o, se pasan el nombre del campo de texto y del fomulario donde copiar la fec!a.6in embargo, el calendario puede recorrer varias páginas distintas !asta que se llega a la fec!a que se desea pulsar, ya sea através de los enlaces superiores para avan"ar o retroceder un mes o a través del formulario inferior para escoger un mes y unaño concretos.

    Para que no se pierdan los valores del nombre del campo y del formulario !ay que pasarlos una y otra ve" al calendariocuando éste se llama a si mismo a la !ora de mostrar un mes distinto del inicial.

    Por esa ra"n componemos las variables que se reciben por la 4A0 en una variable string que se concatenará a la 4A0 delcalendario utili"ada para volver a llamarse a si mismo.

    8+ara$%tros9or$ario ( "or$ario(" . 89>ET;"or$ario" . "Gno$a$+o(" . 89>ET;"no$a$+o"7

    Manual de creación de un calendario con PHP: 

    www.desarrolloweb.com/manuales/24/& 'os manuales de DesarrolloWeb.com tienen el copright de sus autores. o reproducir sin autorizaci*n.

    20

    http://www.desarrolloweb.com/http://www.desarrolloweb.com/manuales/40/http://www.desarrolloweb.com/manuales/40/http://www.desarrolloweb.com/faq/44.phphttp://www.desarrolloweb.com/faq/44.phphttp://www.desarrolloweb.com/faq/44.phphttp://www.desarrolloweb.com/manuales/26/http://www.desarrolloweb.com/articulos/705.phphttp://www.desarrolloweb.com/articulos/705.phphttp://www.desarrolloweb.com/articulos/705.phphttp://www.desarrolloweb.com/articulos/706.phphttp://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/manuales/40/http://www.desarrolloweb.com/faq/44.phphttp://www.desarrolloweb.com/faq/44.phphttp://www.desarrolloweb.com/manuales/26/http://www.desarrolloweb.com/articulos/705.phphttp://www.desarrolloweb.com/articulos/706.phphttp://www.desarrolloweb.com/manuales/24/http://www.desarrolloweb.com/

  • 8/17/2019 Calendario Php Texto Completo

    21/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    Esta era la recuperacin de las variables y se colocan en los enlaces !acia el mes siguiente o anterior del calendario:

    %#o "

  • 8/17/2019 Calendario Php Texto Completo

    22/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

      8%stio ( " ass(@&o$in1o@"7=%s%:

    //si %s ai%r &ia8%stio ( " ass(@&iario@"7

    ==r%trn 8%stio7

    =

    0a funcin utili"a varias variables globales como son el mes y el año del calendario que se está mostrando, el d$a que es !oyen nBmero 1variable Fdia5solo5!oy3 y el timestamp del momento actual 1variable Ftiempo5actual3.

    0o primero que se comprueba es si el nBmero de d$a que se pretende imprimir es el mismo que el nBmero de d$a de !oy y siel mes y año que se está imprimiendo es el mismo que el mes y año actuales. En este caso es que el d$a, mes y añoconcuerdan con lo que devolverá el estilo 2!oy2. 0uego se comprueba si el d$a de la semana es domingo, devolviendo en esecaso el estilo 2domingo2. En caso contrario devuelve el estilo 2diario2.

    Artículo por Miguel Angel Alvarez 

    ".9.- :eleccin de una #ec$a en marc$a5erminamos el ejercicio de selección de una fecha y ofrecemos una función PHP que generara los camposde formulario para rellenar las fechas junto con su $otón para a$rir el calendario.

    &reo que ya está todo explicado más o menos detalladamente. Aecono"co que no es muy fácil de explicar, por sucomplejidad y abstraccin de conceptos. e todos modos, queda una librer$a muy cerrada que se puede utili"ar fácilmente apartir de una funcin PHP, que también !emos creado y colocado dentro de la librer$a del calendario, que escribe un campode formulario junto con su correspondiente botn para mostrar la ventana secundaria con el calendario.

    ntion %sri%9or$ario9%#a9aio58no$r%a$+o?8no$r%or$ario6:1oa 8rai7%#o @

  • 8/17/2019 Calendario Php Texto Completo

    23/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    ".1;.- alendario PHP con d%as #estivos6tro calendario que nos ha mandado un lector que tiene como novedad que da color a todos los das

     festivos.

    eseo reali"ar mi propia aportacin al calendario PHP, por ello os mando un script de un calendario que !e desarrolladobasandome en codigo que encontre por la red y que es totalmente configurable en el aspecto.

    &omo novedad slo deciros que marca los dias festivos 1en este caso los de %adrid3 pero que son facilmente adaptables a lacomunidad o pais que se quiera.

  • 8/17/2019 Calendario Php Texto Completo

    24/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    //Tra&o os $%s%s &% in1%s a Es+aosit# 58&at%9ino;@$on@6 :as% "anar*" Q 8&at%9ino;8$ont#("En%ro"7r%a'7as% "R%rar*" Q 8&at%9ino;8$ont#("R%r%ro"7r%a'7as% "Mar#" Q 8&at%9ino;8$ont#("Maro"7r%a'7as% "S+ri" Q 8&at%9ino;8$ont#("Sri"7r%a'7as% "Ma*" Q 8&at%9ino;8$ont#("Ma*o"7r%a'7as% "n%" Q 8&at%9ino;8$ont#("nio"7r%a'7as% "*" Q 8&at%9ino;8$ont#("io"7r%a'7as% "S1st" Q 8&at%9ino;8$ont#("S1osto"7r%a'7as% ")%+t%$%r"Q 8&at%9ino;8$ont#(")%+ti%$r%"7r%a'7as% "Oto%r" Q 8&at%9ino;8$ont#("Otr%"7r%a'7as% "o%$%r" Q 8&at%9ino;8$ont#("oi%$r%"7r%a'7as% "D%%$%r" Q 8&at%9ino;8$ont#("Dii%$r%"7r%a'7=7

    //Co$i%no a taa % onti%n% % a%n&ario8a%n&ar ( 5"

  • 8/17/2019 Calendario Php Texto Completo

    25/25

    Tu mejor ayuda para aprender a hacer webswww.desarrolloweb.com

    8%sR%stio ( 078t$+9&at%(8&a*."/".8$ont#7or 58i(078i