Академический Документы
Профессиональный Документы
Культура Документы
DE TIANGUISTENCO
INFRME TCNICO
[SISTEMA PARA EL PROCESO DE RESIDNECIAS
PROFESIONALES]
NOMBRE DEL ALUMNO
[ERICK JIMNEZ SOTO]
[201023025]
NOMBRE DEL ASESOR INTERNO
[ING. HUGO ARMANDO LEN GARCA]
[ISC, 901]
TIANGUISTENCO, MEXICO, [2014]
NDICE
I INTRODUCCIN......................................................................................................... 4
Il JUSTIFICACIN.......................................................................................................... 6
lll OBJETIVOS............................................................................................................... 7
3.1 OBJETIVO GENERAL............................................................................................ 7
3.2 OBJETIVOS ESPECFICOS.................................................................................... 7
lV CARACTERIZACIN DEL REA EN LA QUE PARTICIPO..............................................8
4.1 NOMBRE DE LA EMPRESA Y/O RAZN SOCIAL...................................................8
4.2 DOMICILIO.......................................................................................................... 8
V PROBLEMAS A RESOLVER......................................................................................... 9
VI ALCANCES Y LIMITACIONES..................................................................................... 9
VII FUNDAMENTO TERICO....................................................................................... 10
CAPITULO 1. LENGUAJE DE PROGRAMACIN..........................................................10
1.1Introduccin al HTML........................................................................................ 10
1.1.1Sintaxis del HTML........................................................................................... 12
1.1.2Tablas en HTML. Atributos de la tabla y conclusin........................................15
1.1.3Formularios HTML.......................................................................................... 19
1.2Introduccin a la maquetacin con CSS............................................................23
1.2.1Formas de aplicar estilos en maquetacin CSS..............................................28
1.3PHP................................................................................................................... 31
1.3.1 Qu puede hacer PHP?................................................................................ 34
1.3.2 Qu necesito?.............................................................................................. 36
1.3.3Etiquetas de PHP............................................................................................ 38
Salir de HTML......................................................................................................... 39
Inicio de la sesin en PHP con session_start..........................................................42
Formularios HTML (GET y POST)............................................................................48
Introduccin a AJAX................................................................................................ 51
Sintaxis.................................................................................................................. 55
Variables................................................................................................................ 57
Palabras reservadas............................................................................................... 61
MANUAL DE USUARIOS.................................................................................... 89
B.
CONTROL............................................................................................................. 108
Ajax...................................................................................................................... 108
PHP...................................................................................................................... 113
INTERFACES......................................................................................................... 137
ESTRUCTURA Y UBICACIN DE LOS ARCHIVOS DEL SISTEMA..................................151
C. NDICE DE FIGURAS....................................................................................... 155
D. NDICE DE TABLAS......................................................................................... 155
I INTRODUCCIN.
En una empresa de carcter privado, tiene un giro de manufactura, perteneciente al
grupo Emerson, en una de sus ramas, como tal empez con el nombre de Fisher, se
dedicaba a la elaboracin de vlvulas para el control de flujo de slidos, lquidos y gas,
ya que constantemente est innovando en la elaboracin de sus productos, se tiene
que capacitar al personal. Por otra parte la logstica de las capacitaciones se considera
como un punto de oportunidad ya que los registros se hacen va fsica, causando la
perdida de informacin y complicando su gestin.
La elaboracin de un sistema que logre gestionar la informacin, ser el que ayude a
realizar los registros de forma eficaz y de manera digital para un fcil acceso, con lo
cual logrremos tener beneficios palpables, por ejemplo: la disminucin del uso del
papel.
WAMP SERVER, su acrnimo hace referencia a las herramientas que est utiliza
Windows, Apache, Mysql y Php, cada una de estas herramientas son bsicas para el
desarrollo web, por lo que nos adentraremos en puntualizar qu es? y cmo
funciona?, as como tambin definiremos cada una de las herramientas, se utiliz este
paquete de herramientas ya que es un software que no tiene costo alguno, dando as
un ahorro en la compra de licencias, debo hacer mencin que dicha herramienta ya se
encontraba instalada, por lo que le dimos mayor utilidad, esta herramienta es de fcil
implementacin ya que es soportable para pequeos desarrollos web.
Hablemos de Apache, este se define como un servidor web que nos dar la
comunicacin para que nuestro sistema pueda ser de alguna forma palpable, es decir;
para visualizar las pginas web y este se encarga de que funcionen, este servidor ya
viene predeterminado en WAMP SERVER, por lo que tiene mayor soporte y
adaptabilidad al desarrollar.
Il JUSTIFICACIN.
Se requiere un manejo eficaz de la informacin con respecto al registro del personal
en los cursos de capacitacin, el registro que actualmente se utiliza es de manera
manual, por lo que se cae en la perdida de informacin, el sistema ayudar a que se
pueda obtener un registro acertado y un control adecuado, esto aumenta la eficacia
y elimina la redundancia, existe ahorro de papel porque el registro ser digital, solo
en casos puntales se crear de manera fsica.
El desarrollo web se realiza atendiendo a diversos problemas del software del que
se tiene autorizado utilizar; por ejemplo la instalacin de ciertas versiones de java, la
empresa tiene un sistema de administracin propio sus requerimientos conllevan al
fallo de diversas aplicaciones, por tanto se opta en prescindir
en utilizar
programacin en java, otro de los factores es que las maquinas que se utilizan
suelen ser cambiadas en determinado momento o movidas a otro sitio, eso implica
la instalacin continua del software en los equipos de cmputo.
Se utiliz un software de uso libre que se encuentra dentro de la empresa, el costo
por utilizacin es nulo, el software se adecua fcilmente a lo requerido, en tanto la
red de la empresa este activa este sistema podr operar eficazmente, si el sistema
necesita asistencia tcnica se realizara en un solo punto haciendo la modificacin
para cualquiera que lo utilice, es una de las ventajas de tener un desarrollo web.
lll OBJETIVOS.
3.1 OBJETIVO GENERAL.
Desarrollar un sistema integral para el rea de Recursos Humanos el cual les permita
gestionar la informacin referente a capacitacin y asistencias de los empleados de la
empresa.
4.2 DOMICILIO.
Localidad: zona industrial.
Municipio: Toluca.
Estado: Mxico.
Direccin: Calle Industrias Qumicas 203, Zona Industrial. Mxico. C.P. 50071.
Telfono: (722) 2799809.
Frank
Gerente mantenimiento
Medina
Alvaro
coordinador de proyectos
Martinez
Oscar
Jefes
Rodriguez
Becarios
Rodolfo
Cruz
Erick
Jimenez
Soto
directo, las actividades a realizar son dar soporte tcnico a los usuarios de la empresa,
solucionar problemas en la conexin de red y telefona, las actividades se llevan a cabo
en conjunto al desarrollo del sistema, la asignacin la realiza el jefe de proyectos del
departamento.
V PROBLEMAS A RESOLVER
El departamento de R.H. administra la informacin de los empleados de manera manual
eso significa duplicar informacin, perdida de informacin y desperdicio de horas
hombre. El manejo de la informacin es realizado mediante herramientas bsicas como
hojas de Excel, pequeos desarrollos en Access y hojas de papel.
VI ALCANCES Y LIMITACIONES.
ALCANCES:
a. Contar con un sistema integral que permita la consolidacin de la
informacin de una manera rpida sencilla y eficiente.
b. Permitir al personal de R.H. el uso de informacin para la toma de
decisiones.
c. Se contara con la posibilidad de generar registros de asistencia.
d. Se podrn generar reportes en tablas con respecto a los parmetros
indicados en el sistema.
e. Se podr generar una lista en pdf de los que asistan a los cursos de
capacitacin.
f. Se podrn crear los cursos que se impartirn a los empleados de la
empresa y registrarlos en la base de datos.
g. El sistema llegar a la etapa de implementacin.
LIMITACIONES:
h.
i.
j.
k.
10
11
12
Adems del navegador necesario para ver los resultados de nuestro trabajo,
necesitamos evidentemente otra herramienta capaz de crear la pgina en si. Un archivo
HTML (una pgina) no es ms que un texto. Es por ello que para programar en HTML
necesitamos un editor de textos.
Es recomendable usar el Bloc de notas que viene con windows, u otro editor de textos
sencillo. Hay que tener cuidado con algunos editores ms complejos como Wordpad o
Microsoft Word, pues colocan su propio cdigo especial al guardar las pginas y HTML
es nicamente texto plano, con lo que podremos tener problemas.
Existen otro tipo de editores especficos para la creacin de pginas web los cuales
ofrecen muchas facilidades que nos permiten aumentar nuestra productividad. No
obstante, es aconsejable en un principio utilizar una herramienta lo ms sencilla posible
para poder prestar la mxima atencin a nuestro cdigo y familiarizarnos lo antes
posible con l. Siempre tendremos tiempo ms delante de pasarnos a editores ms
verstiles con la consiguiente ganancia de tiempo.
Tambin puedes acceder a descripciones editores ms complejos que el Block de
Notas, pero ms potentes como Homesite o UltraEdit.
Es importante tener claro todo ello puesto que en funcin de vuestros objetivos puede
que, ms que aprender HTML, resulte ms interesante aprender el uso de una
aplicacin para la creacin de pginas.
As pues, una pgina es un archivo donde est contenido el cdigo HTML en forma de
texto. Estos archivos tienen extensin .html o .htm (es indiferente cul utilizar). De modo
que cuando programemos en HTML lo haremos con un editor de textos y guardaremos
nuestros trabajos con extensin .html, por ejemplo mipgina.htm.
13
14
15
16
Esta tabla est alineada a la derecha (aling="right"). Solo tiene una celda.Para que se
vea el efecto de alineado a la tabla debemos colocar un texto al lado y el texto rodear
la tabla, igual que ocurra con las imgenes alineadas a un lado.
Ejemplo de tabla alineada a la izquierda
Esta tabla est alineada a la izquierda (aling="left"). Solo tiene una celda.Para que se
vea el efecto de alineado a la tabla debemos colocar un texto al lado y el texto rodear
la tabla, igual que ocurra con las imgenes alineadas a un lado.
Los atributos cellpading y cellspacing nos ayudaran a dar a nuestra tabla un aspecto
ms esttico. En un principio puede parecernos un poco confuso su uso pero un poco
de practica ser suficiente para hacerse con ellos.
En la siguiente imagen podemos ver grficamente el significado de estos atributos.
Modelo de Cellpading y Cellspacing
Podis comprobar vosotros mismos que los atributos definidos para una celda tienen
prioridad con respecto a los definidos para una tabla. Podemos definir, por ejemplo, una
tabla con color de fondo rojo y una de las celdas de color de fondo verde y se ver toda
la tabla de color rojo menos la celda verde. Del mismo modo, podemos definir un color
azul para los bordes de la tabla y hacer que una celda particular sea mostrada con un
borde rojo. (Aunque esto no funcionar en todos los navegadores debido a que algunos
no reconocen el atributo bordercolor.
Tabla de color rojo de fondo
Celda normal
Tablas anidadas
Muy til tambin es el uso de tablas anidadas. De la misma forma que podamos incluir
listas dentro de otras listas, las tablas pueden ser incluidas dentro de otras. As,
podemos incluir una tabla dentro de la celda de otra. El modo de funcionamiento sigue
siendo el mismo aunque la situacin puede complicarse si el nmero de tablas
embebidas dentro de otras es elevado.
Vamos a ver un cdigo de anidacin de tablas. Veamos primero el resultado y luego el
cdigo, as conseguiremos entenderlo mejor.
Celda de la tabla principal
Tabla anidada, celda 1
</tr>
</table>
</td>
</tr> </table>
Ejemplos prcticos
Hasta aqu la informacin que pretendamos transmitiros sobre las tablas en HTML.
Sera importante ahora realizar algn ejemplo de realizacin de una tabla un poco
compleja. Por ejemplo la siguiente:
Animales en peligro de extincin
Nombre
Cabezas
Previsin 2010
Ballena
Oso Pardo
50
Previsin 2020
18
Lince 10
Tigre 300
210
Se puede ver esta tabla en otra ventana, donde tambin podremos examinar su cdigo
fuente.
Otro ejemplo de tabla con el que podemos practicar:
Climas de Amrica del Sur
Venezuela
Colombia
Ecuador
Per Parte de arriba de Amrica del Sur. Pases como:
Argentina
Chile
Uruguay
Paraguay Parte de abajo de Amrica del Sur. Pases como:
Bosque tropical, clima de sabana, clima martimo con inviernos secos. Climas
martimos con veranos secos, con inviernos secos, climas frios, clima de estepa, clima
desrtico.
Tambin la podemos ver en una ventana a parte para extraer su cdigo fuente.
Maquetar con tablas
En HTML tradicional se utilizan las tablas, aparte de mostrar informacin tabulada como
hemos visto en este artculo, para maquetar pginas web. Con las tablas podemos
generar una serie de espacios donde podemos mostrar contenidos estructurados en
columnas y filas, como la maquetacin de una revista o un portal. La maquetacin por
tablas la comentamos en un taller de HTML. Es muy recomendable su lectura para
hacerse una idea del proceso de creacin de pginas medianamente avanzadas y con
informacin bien estructurada.
19
ms sencilla es utilizar los programs prediseados que nos ofrecen un gran nmero de
servidores de alojamiento y que nos permiten almacenar y procesar los datos en forma
de archivos u otros formatos. Si vuestras pginas estn alojadas en un servidor que no
os propone este tipo de ventajas, siempre podis recurrir a servidores de terceros que
ofrecen este u otro tipo de servicios gratuitos para webs. Por supuesto, existe otra
alternativa que es la de aprender lenguajes como ASP o PHP que nos permitirn, entre
otras cosas, el tratamiento de formularios.
As pues, en resumen, con HTML podremos construir los formularios, con diversos tipos
de campos, como cajas de texto, botones de radio, cajas de seleccin, mens
desplegables, etc. Sin embargo, debe quedar claro que desde HTML no se puede
enviar directamente el correo, sino que se generar un email en el ordenador del
visitante, que ste tendr que enviar "manualmente" por medio de su programa de
correo. Si queremos que el formulario se enve automticamente o se procese en el
servidor
para
generar
otro
tipo
de
respuesta,
necesitaremos
lenguajes
de
programacin.
21
22
23
Las tablas solucionaron por un buen tiempo las necesidades de los diseadores de
webs, pero tenan diversos problemas, aparte de no facilitar mucho la estructura de
sitios con un diseo complejo.
El contenido se mezcla con las reglas de presentacin o formato. Lo que hace que el
cdigo de tu pgina web sea innecesariamente grande y ello deriva en pginas ms
pesadas. Al final, con tablas tenemos una web ms lenta y la transferencia de datos de
nuestro servidor tambin aumenta, con lo que tu servidor podra atender a menos
usuarios al mismo tiempo y te saldr ms caro de mantener.
El rediseo de una web se hace mucho ms complicado, porque para cambiar la forma
con la que se ve tu pgina tendrs que actualizar todo el cdigo. Si maquetas utilizando
CSS slo tendrs que cambiar el cdigo CSS para que el aspecto de tu pgina sea tan
distinto como desees.
Tu pgina tendr problemas serios al verse en otros dispositivos, como Palms o
telfonos mviles, que tienen pantallas menores.
Tendrs que remar contra corriente para intentar que tu pgina se vea como quieres,
porque ests utilizando unas herramientas, las tablas, que no te ofrecen las
posibilidades necesarias para maquetar a voluntad. Tendrs que aprender mil truqillos
para saltarte las limitaciones de las tablas y a medida que los apliques, tu cdigo se
har ms y ms pesado, menos entendible y su mantenimiento ser cada da ms
complicado.
25
26
h1, p{
color: red;
}
En este caso se define que los encabezados de nivel 1 y los prrafos, tengan letra roja.
Definicin de clases
Podemos utilizar una clase si deseamos crear un estilo especfico, para luego aplicarlo
a distintos elementos de la pgina. Las clases en la declaracin de estilos se declaran
con un punto antes del nombre de la clase.
.miclase{
color: blue;
}
Para asignar el estilo definido por una clase en un elemento HTML, simplemente se
aade el atributo class a la etiqueta que queremos aplicar dicha clase. El atributo class
se asigna al nombre de la clase a aplicar. Por ejemplo:
<p class="miclase">este prrafo tiene el estilo definido en la clase "miclase".</p>
El prrafo anterior se presentara con color azul. La definicin de clases y su utilizacin
es sencilla, pero veamos un ejemplo ms detallado:
Para la siguiente declaracin de estilos:
body, td, p{
background-color: #000000;
color: #ffffff;
27
}
.inverso{
background-color: #ffffff;
color: #000000;
}
Se ha definido un fondo negro y color del texto blanco para el cuerpo de la pgina, as
como las celdas y los prrafos. Luego se ha declarado una clase, de nombre "inverso",
con los colores al revs, es decir, fondo blanco y texto negro.
<body>
<p>Hola esto es un parrafo normal</p>
<p class="inverso">Prrafo con los colores invertidos</p>
<table>
<tr>
<td class="inverso">INVERSO</td>
<td>NORMAL</td>
</tr>
</table>
</body>
Esta pgina tiene, generalmente, el fondo negro y el texto blanco. El primer prrafo, que
es un prrafo normal, sigue esa definicin general de estilos, pero el segundo prrafo,
al que se ha aplicado la clase "inverso", tiene el fondo blanco y el texto en negro. Por lo
que respecta a la tabla, en su primera celda se ha asignado la clase "inverso", por lo
28
que se ver con fondo blanco y color de texto en negro. Mientras que la segunda celda,
que no tiene asignada ninguna clase, se presentar como se defini en la regla general.
Para conocer los resultados obtenidos en el anterior ejemplo podemos verlo en una
pgina aparte.
Estilos que slo se utilizan una vez
Tambin podemos tener un estilo especfico para un nico elemento, que no va a
repetirse en ningn otro caso. Para ello tenemos los estilos asignados por identificador.
Los identificadores se definen en HTML utilizando el atributo id en la etiqueta que
deseamos identificar. El valor del atributo id ser el que definamos nosotros.
<div id="capa1">
En la hoja de estilos, para definir el aspecto de ese elemento con id nico, se escribe el
carcter almohadilla, seguido del identificador indicado en la etiqueta y entre llaves los
atributos css que deseemos.
#capa1{
font-size: 12pt;
font-family: arial;
}
En este caso se ha asignado fuente de tamao 12 puntos y cuerpo arial.
Como se puede concluir en la lectura de estas lneas, generalmente se prefiere utilizar
estilos definidos en clases a los definidos con identificadores, a no ser que estemos
seguros que ese estilo no se va a repetir en todo el documento.
29
1.3 PHP
PHP (acrnimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de cdigo
abierto muy popular especialmente adecuado para el desarrollo web y que puede ser
incrustado en HTML.
Bien, pero qu significa realmente? Un ejemplo nos aclarar las cosas:
Ejemplo #1 Un ejemplo introductorio
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
<?php
echo "Hola, soy un script de PHP!";
?>
</body></html>
En lugar de usar muchos comandos para mostrar HTML (como en C o en Perl), las
pginas de PHP contienen HTML con cdigo incrustado que hace "algo" (en este caso,
mostrar "Hola, soy un script de PHP!). El cdigo de PHP est encerrado entre las
etiquetas especiales de comienzo y final <?php y ?> que permiten entrar y salir del
"modo PHP".
30
Lo que distingue a PHP de algo del lado del cliente como Javascript es que el cdigo es
ejecutado en el servidor, generando HTML y envindolo al cliente. El cliente recibir el
resultado de ejecutar el script, aunque no se sabr el cdigo subyacente que era. El
servidor web puede ser configurado incluso para que procese todos los ficheros HTML
con PHP, por lo que no hay manera de que los usuarios puedan saber qu se tiene
debajo de la manga.
Lo mejor de utilizar PHP es su extrema simplicidad para el principiante, pero a su vez
ofrece muchas caractersticas avanzadas para los programadores profesionales. No
sienta miedo de leer la larga lista de caractersticas de PHP. En unas pocas horas podr
empezar a escribir sus primeros scripts.
Aunque el desarrollo de PHP est centrado en la programacin de scripts del lado del
servidor, se puede utilizar para muchas otras cosas. Siga leyendo y descubra ms en la
seccin Qu puede hacer PHP?, o vaya directo al tutorial introductorio si solamente
est interesado en programacin web.
31
PHP puede emplearse en todos los sistemas operativos principales, incluyendo Linux,
muchas variantes de Unix (incluyendo HP-UX, Solaris y OpenBSD), Microsoft Windows,
Mac OS X, RISC OS y probablemente otros ms. PHP admite la mayora de servidores
web de hoy en da, incluyendo Apache, IIS, y muchos otros. Esto incluye cualquier
servidor web que pueda utilizar el binario de PHP FastCGI, como lighttpd y nginx. PHP
funciona tanto como mdulo como procesador de CGI.
De modo que con PHP, se tiene la libertad de elegir el sistema operativo y el servidor
web. Adems, se tiene la posibilidad de utilizar programacin por procedimientos o
programacin orientada a objetos (POO), o una mezcla de ambas.
Con PHP no se est limitado a generar HTML. Entre las capacidades de PHP se
incluyen la creacin de imgenes, ficheros PDF e incluso pelculas Flash (usando libswf
y Ming) generadas sobre la marcha. Tambin se puede generar fcilmente cualquier
tipo de texto, como XHTML y cualquier otro tipo de fichero XML. PHP puede
autogenerar estos ficheros y guardarlos en el sistema de ficheros en vez de imprimirlos
en pantalla, creando una cach en el lado del servidor para contenido dinmico.
Una de las caractersticas ms potentes y destacables de PHP es su soporte para un
amplio abanico de bases de datos. Escribir una pgina web con acceso a una base de
datos es increblemente simple utilizando una de las extensiones especficas de bases
de datos (p.ej., para mysql), o utilizar una capa de abstraccin como PDO, o conectarse
a cualquier base de datos que admita el estndar de Conexin Abierta a Bases de
Datos por medio de la extensin ODBC. Otras bases de datos podran utilizar cURL o
sockets, como lo hace CouchDB.
PHP tambin cuenta con soporte para comunicarse con otros servicios usando
protocolos tales como LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (en Windows) y
muchos otros. Tambin se pueden crear sockets de red puros e interactuar usando
cualquier otro protocolo. PHP tiene soporte para el intercambio de datos complejos de
WDDX entre virtualmente todos los lenguajes de programacin web. Y hablando de
33
1.3.2 Qu necesito?
En este manual se asume que se cuenta con un servidor que tiene soporte activado
para PHP y que todos los ficheros con la extensin .php son tratados por PHP. En la
mayora de servidores, esta es la extensin predeterminada para los ficheros de PHP,
aunque puede preguntar al administrador de su servidor para estar seguro. Si el
servidor tiene soporte para PHP, entonces no es necesario hacer nada. Simplemente
cree sus ficheros .php, gurdelos en su directorio web y el servidor los analizar por
usted. No hay necesidad de compilar nada o instalar otras herramientas. Piense en
estos ficheros habilitados para PHP como simples ficheros HTML con el aadido de una
nueva familia de etiquetas mgicas que permiten todo tipo de cosas.
34
Digamos que quiere ahorrar el preciado ancho de banda y trabajar localmente. En este
caso, querr instalar un servidor web, como Apache, y por supuesto PHP. Lo ms
seguro es que tambin quiera instalar una base de datos como MySQL.
Puede instalarlos de forma independiente o bien puede elegir una manera ms sencilla.
Este manual contiene Instrucciones de instalacin de PHP (asumiendo que tiene algn
tipo de servidor web ya configurado). Si tuviera problemas con la instalacin, sugerimos
que formule sus preguntas en nuestra lista de correo de instalacin. Si elige la
manera ms sencilla, localice un paquete preconfigurado para su sistema operativo,
el cual instala automticamente todo esto con nicamente unos pocos clics de ratn. Es
sencillo configurar un servidor web con soporte para PHP en cualquier sistema
operativo, incluyendo MacOSX, Linux y Windows. En Linux, podra encontrar til
rpmfind y PBone para localizar los RPM. Tambin puede visitar apt-get para buscar
paquetes para Debian.
35
1.3.3Etiquetas de PHP
Cuando PHP interpreta un fichero, busca las etiquetas de apertura y cierre, que son <?
php y ?>, y que indican a PHP dnde empezar y finalizar la interpretacin del cdigo.
Este mecanismo permite a PHP ser incrustado en todo tipo de documentos, ya que todo
lo que est fuera de las etiquetas de PHP ser ignorado por el intrprete.
PHP tambin permite las etiquetas abreviadas <? y ?> (las cuales estn
desaconsejadas debido a que slo estn disponibles si se habilitan con la directiva
short_open_tag del fichero de configuracin php.ini, o si PHP se configur con la opcin
--enable-short-tags .
Si un fichero contiene cdigo PHP puro, es preferible omitir la etiqueta de cierre de PHP
al final del fichero. Esto impide que se aadan espacios en blanco o nuevas lneas
despus de la etiqueta de cierre de PHP, los cuales pueden causar efectos no
deseados debido a que PHP iniciar la salida del buffer cuando no haba intencin por
parte del programador de enviar ninguna salida en ese punto del script.
<?php
echo "Hola mundo";
// ... ms cdigo
echo "ltima sentencia";
// el script finaliza aqu sin etiqueta de cierre de PHP
36
1.3.4Salir de HTML
Cualquier cosa fuera del par de etiquetas de apertura y cierre es ignorado por el
intrprete de PHP, el cual permite que los ficheros de PHP tengan contenido mixto. Esto
permite que PHP sea embebido en documentos HTML para, por ejemplo, crear
plantillas.
<p>Esto va a ser ignorado por PHP y mostrado por el navegador.</p>
<?php echo 'Mientras que esto va a ser interpretado.'; ?>
<p>Esto tambin ser ignorado por PHP y mostrado por el navegador.</p>
Esto funciona como se espera, porque cuando PHP intercepta las etiquetas de cierre ?
>, simplemente comienza a imprimir cualquier cosa que encuentre (a excepcin de un
una nueva lnea inmediatamente despus - vase separacin de instrucciones) haste
que d con otra etiqueta de apertura a menos que se encuentre en mitad de una
sentencia condicional, en cuyo caso el intrprete determinar el resultado de la
condicin antes de tomar una decisin de qu es lo que tiene que saltar. Vea el
siguiente ejemplo.
Usar estructuras con condiciones
Ejemplo #1 Salida avanzada usando condiciones
<?php if ($expresin == true): ?>
Esto se mostrar si la expresin es verdadera.
<?php else: ?>
En caso contrario se mostrar esto.
<?php endif; ?>
En este ejemplo, PHP saltar los bloques donde la condicin no se cumpla, incluso si
estn fuera de las etiquetas de apertura/cierre de PHP, PHP los saltar segn la
37
condicin, ya que el intrprete saltar por encima de los bloques contenidos dentro de
una condicin que no se cumpla.
Para imprimir bloques de texto grandes, es ms eficiente abandonar el modo intrprete
de PHP que enviar todo el texto a travs de echo o print.
Existen cuatro tipos de pares de etiquetas de apertura y de cierre que se pueden usar
en PHP. Dos de estas, <?php ?> y <script language="php"> </script>, siempre estn
disponibles. Las otras dos son las etiquetas abreviadas y las etiquetas estilo ASP, que
se pueden activar o desactivar desde el fichero de configuracin php.ini Aunque
algunas personas encuentran las etiquetas abreviadas y las etiquetas estilo ASP ms
convenientes, son menos portables y generalmente no se recomiendan.
Nota:
Observe tambin que si se est incrustando PHP dentro de XML o XHTML necesitar
usar las etiquetas <?php ?> para seguir los estndares.
Ejemplo #2 Etiquetas de apertura y de cierre de PHP
1. <?php echo 'si se quiere mostrar documentos XHTML o XML, debe hacerse as'; ?>
2. <script language="php">
echo 'algunos editores (como FrontPage) no les gusta
las instruciones de proceso';
</script>
3. <? echo 'esta es la forma ms simple, una instrucin de procesado SGML'; ?>
<?= expresin ?> Esto es una forma abreviada de "<? echo expresin ?>"
4. <% echo 'Quiz use de forma opcional etiquetas de estilo ASP'; %>
<%= $variable; %> Esto es una forma abreviada de "<% echo $variable; %>"
38
Las etiquetas vistas en los ejemplos uno y dos estn siempre disponibles; el ejemplo
uno es el ms comn y recomendado de los dos.
Las etiquetas abreviadas (ejemplo tres) estn solo disponibles cuando se activan
mediante la directiva short_open_tag del fichero de configuracin php.ini o si PHP se
configur con la opcin --enable-short-tags .
Las etiquetas de estilo ASP (ejemplo cuatro) estn solo disponibles cuando se activan
mediante la directiva asp_tags del fichero de configuracin php.ini.
Nota:
Se debe evitar el uso de etiquetas abreviadas cuando se desarrollen aplicaciones o
bibliotecas que estn pensadas para su redistribucin o despliegue en servidores PHP
que no estn bajo su control, porque puede que las etiquetas abreviadas no estn
soportadas en un servidor determinado. Por portabilidad y cdigo redistribuible,
asegrese de no usar etiquetas abreviadas.
Nota:
En PHP 5.2 y anteriores, el intrprete no permite que un fichero contenga nicamente la
etiqueta de apertura <?php. A partir de PHP 5.3 s se permite siempre que existan uno o
ms caracteres espacio en blanco despus de la etiqueta de apertura.
Nota:
Desde PHP 5.4, la etiqueta abreviada de echo <?= siempre es reconocida y vlida, sin
tener en cuenta la configuracin de short_open_tag.
39
40
registrar
una
variable
de
sesin
establecer
un
valor
usaremos
41
43
44
unset($_SESSION["nombre_cliente"]):
45
46
despues
del
smbolo
'?'
en
una
URL).
Por
ejemplo
47
48
49
Figura 1.2 Comparacin grfica del modelo tradicional de aplicacin web y del nuevo modelo
propuesto por AJAX. (Imagen original creada por Adaptive Path y utilizada con su permiso)
50
Esta tcnica tradicional para crear aplicaciones web funciona correctamente, pero no
crea una buena sensacin al usuario. Al realizar peticiones continuas al servidor, el
usuario debe esperar a que se recargue la pgina con los cambios solicitados. Si la
aplicacin debe realizar peticiones continuas, su uso se convierte en algo molesto
AJAX permite mejorar completamente la interaccin del usuario con la aplicacin,
evitando las recargas constantes de la pgina, ya que el intercambio de informacin con
el servidor se produce en un segundo plano.
Las aplicaciones construidas con AJAX eliminan la recarga constante de pginas
mediante la creacin de un elemento intermedio entre el usuario y el servidor. La nueva
capa intermedia de AJAX mejora la respuesta de la aplicacin, ya que el usuario nunca
se encuentra con una ventana del navegador vaca esperando la respuesta del servidor.
El siguiente esquema muestra la diferencia ms importante entre una aplicacin web
tradicional y una aplicacin web creada con AJAX. La imagen superior muestra la
interaccin sncrona propia de las aplicaciones web tradicionales. La imagen inferior
muestra la comunicacin asncrona de las aplicaciones creadas con AJAX.
51
Figura 1.3 Comparacin entre las comunicaciones sncronas de las aplicaciones web
tradicionales y las comunicaciones asncronas de las aplicaciones AJAX (Imagen original
creada por Adaptive Path y utilizada con su permiso)
Las peticiones HTTP al servidor se sustituyen por peticiones JavaScript que se realizan
al elemento encargado de AJAX. Las peticiones ms simples no requieren intervencin
del servidor, por lo que la respuesta es inmediata. Si la interaccin requiere una
respuesta del servidor, la peticin se realiza de forma asncrona mediante AJAX. En
52
este caso, la interaccin del usuario tampoco se ve interrumpida por recargas de pgina
o largas esperas por la respuesta del servidor.
Desde su aparicin, se han creado cientos de aplicaciones web basadas en AJAX. En
la mayora de casos, AJAX puede sustituir completamente a otras tcnicas como Flash.
Adems, en el caso de las aplicaciones web ms avanzadas, pueden llegar a sustituir a
las aplicaciones de escritorio.
1.4.1Sintaxis
La sintaxis de un lenguaje de programacin se define como el conjunto de reglas que
deben seguirse al escribir el cdigo fuente de los programas para considerarse como
correctos para ese lenguaje de programacin.
La sintaxis de JavaScript es muy similar a la de otros lenguajes como Java y C. Las
normas bsicas que definen la sintaxis de JavaScript son las siguientes:
No se tienen en cuenta los espacios en blanco y las nuevas lneas: como sucede con
XHTML, el intrprete de JavaScript ignora cualquier espacio en blanco sobrante, por lo
que el cdigo se puede ordenar de forma adecuada para su manejo (tabulando las
lneas, aadiendo espacios, creando nuevas lneas, etc.)
Se distinguen las maysculas y minsculas: al igual que sucede con la sintaxis de las
etiquetas y elementos XHTML. Sin embargo, si en una pgina XHTML se utilizan
indistintamente maysculas y minsculas, la pgina se visualiza correctamente y el
nico problema es que la pgina no valida. Por el contrario, si en JavaScript se
intercambian maysculas y minsculas, las aplicaciones no funcionan correctamente.
No se define el tipo de las variables: al definir una variable, no es necesario indicar el
tipo de dato que almacenar. De esta forma, una misma variable puede almacenar
diferentes tipos de datos durante la ejecucin del programa.
No es obligatorio terminar cada sentencia con el carcter del punto y coma (;): al
contrario de la mayora de lenguajes de programacin, en JavaScript no es obligatorio
53
terminar cada sentencia con el carcter del punto y coma (;). No obstante, es muy
recomendable seguir la tradicin de terminar cada sentencia con el carcter ;
Se pueden incluir comentarios: los comentarios se utilizan para aadir alguna
informacin relevante al cdigo fuente del programa. Aunque no se visualizan por
pantalla, su contenido se enva al navegador del usuario junto con el resto del
programa, por lo que es necesario extremar las precauciones sobre el contenido de los
comentarios.
JavaScript define dos tipos de comentarios: los de una sola lnea y los que ocupan
varias lneas. Los comentarios de una sola lnea se definen aadiendo dos barras
oblicuas (//) al principio de cada lnea que forma el comentario:
// a continuacin se muestra un mensaje
alert("mensaje de prueba");
Tambin se pueden incluir varios comentarios seguidos de una sola lnea:
// a continuacin se muestra un mensaje
// y despus se muestra otro mensaje
alert("mensaje de prueba");
Cuando un comentario ocupa ms de una lnea, es ms eficiente utilizar los
comentarios multilnea, que se definen encerrando el texto del comentario entre los
caracteres /* y */
/* Los comentarios de varias lneas son muy tiles
cuando se necesita incluir bastante informacin
en los comentarios */
alert("mensaje de prueba");
54
1.4.2 Variables
Las variables se definen mediante la palabra reservada var, que permite definir una o
varias variables simultneamente:
var variable1 = 16;
var variable2 = "hola", variable3 = "mundo";
var variable4 = 16, variable5 = "hola";
El nombre de las variables debe cumplir las dos siguientes condiciones:
El primer carcter debe ser una letra o un guin bajo (_) o un dlar ($).
El resto de caracteres pueden ser letras, nmeros, guiones bajos (_) y smbolos de
dlar ($).
No es obligatorio inicializar una variable al declararla:
var variable6;
Si la variable no se declara mediante el operador var, automticamente se crea una
variable global con ese identificador y su valor. Ejemplo:
var variable1 = 16;
variable2 = variable1 + 4;
En el ejemplo anterior, la variable2 no ha sido declarada, por lo que al llegar a esa
instruccin, JavaScript crea automticamente una variable global llamada variable2 y le
asigna el valor correspondiente.
El mbito de una variable (llamado scope en ingls) es la zona del programa en la que
se define la variable. JavaScript define dos mbitos para las variables: global y local.
55
56
57
alert(mensaje);
muestraMensaje();
alert(mensaje);
El cdigo anterior muestra por pantalla los siguientes mensajes:
gana la de fuera
gana la de dentro
gana la de fuera
La variable local llamada mensaje dentro de la funcin tiene ms prioridad que la
variable global del mismo nombre, pero solamente dentro de la funcin.
Si no se define la variable dentro de la funcin con la palabra reservada var, en realidad
se est modificando el valor de la variable global:
var mensaje = "gana la de fuera";
function muestraMensaje() {
mensaje = "gana la de dentro";
alert(mensaje);
}
alert(mensaje);
muestraMensaje();
alert(mensaje);
58
1.4.3Palabras reservadas
Como cualquier otro lenguaje de programacin, JavaScript utiliza una serie de palabras
para crear las instrucciones que forman cada programa. Por este motivo, estas palabras
se consideran reservadas y no se pueden utilizar como nombre de una variable o
funcin.
El estndar ECMA-262 incluye la lista de las palabras reservadas que utiliza
actualmente JavaScript y la lista de las palabras reservadas para su uso futuro.
Utilizadas actualmente:
break, else, new, var, case, finally, return, void, catch, for, switch, while, continue,
function, this, with, default, if, throw, delete, in, try, do, instanceof, typeof
Reservadas para su uso futuro:
abstract, enum, int, short, boolean, export, interface, static, byte, extends, long, super,
char, final, native, synchronized, class, float, package, throws, const, goto, private,
transient, debugger, implements, protected, volatile, double, import, public
59
60
2.1.1 INSTALACIN
61
2.1.2 FUNCIONALIDADES
Funcionalidades de WAMPServer son muy completas y fciles de usar por lo que no
vamos a explicar aqu cmo usarlos.
Con un clic izquierdo en el icono de WampServer, usted ser capaz de:
2.2 APACHE
Apache es el servidor web hecho por excelencia, su configuracion, robustez y
estabilidad hacen que cada vez millones de servidores reiteren su confianza en este
programa.
La historia de Apache se remonta a febrero de 1995, donde empieza el proyecto del
grupo Apache, el cual est basado en el servidor Apache httpd de la aplicacin original
de NCSA. El desarrollo de esta aplicacin original se estanc por algn tiempo tras la
marcha de Rob McCool por lo que varios webmaster siguieron creando sus parches
para sus servidores web hasta que se contactaron va email para seguir en conjunto el
mantenimiento del servidor web, fue ah cuando formaron el grupo Apache.
Fueron Brian Behlendorf y Cliff Skolnick quienes a travs de una lista de correo
coordinaron el trabajo y lograron establecer un espacio compartido de libre acceso para
los desarrolladores.
62
Fue as como fue creciendo el grupo Apache, hasta lo que es hoy :) Aquella primera
versin y sus sucesivas evoluciones y mejoras alcanzaron una gran implantacin como
software de servidor inicialmente solo para sistemas operativos UNIX y fruto de esa
evolucin es la versin para Windows .
Apache es una muestra, al igual que el sistema operativo Linux (un Unix desarrollado
inicialmente para PC), de que el trabajo voluntario y cooperativo dentro de Internet es
capaz de producir aplicaciones de calidad profesional difciles de igualar.
La licencia Apache es una descendiente de la licencias BSD, no es GPL. Esta licencia
te permite hacer lo que quieras con el cdigo fuente (incluso forks y productos
propietarios) siempre que les reconozcas su trabajo.
Ahora te preguntars porqu esa popularidad de este software libre grandemente
reconocido en muchos mbitos empresariales y tecnolgicos, pues aqu algunas
razones:
universal.
Apache es una tecnologa gratuita de cdigo fuente abierto. El hecho de ser
gratuita es importante pero no tanto como que se trate de cdigo fuente abierto.
Esto le da una transparencia a este software de manera que si queremos ver que
es lo que estamos instalando como servidor, lo podemos saber, sin ningn
63
con soporte CGI como con soporte mod perl. Tambin trabaja con Java y pginas
jsp. Teniendo todo el soporte que se necesita para tener pginas dinmicas.
Apache te permite personalizar la respuesta ante los posibles errores que se
puedan dar en el servidor. Es posible configurar Apache para que ejecute un
64
65
3.2Bases de datos
MySQL almacena las bases de datos en la carpeta data que est en la carpeta raz de
la instalacin del programa. Cada base de datos crea una carpeta en la que aparecen
los archivos necesarios para el correcto funcionamiento de la aplicacin. comando show
databases El comando show databases permite visualizar las bases de datos
actualmente activas. Ejemplo:
66
3.3Tablas
67
3.3.1Mostrar tablas
El comando show tables; muestra las tablas de la base de datos actual.
Ejemplo: mysql> use mysql Database changed mysql> show tables;
+-----------------+
| Tables_in_mysql |
+------------------------+
| columns_priv
|
| db
|
| func
|
| host
|
| tables_priv
|
| user |
+------------------------+
6 rows in set (0.00 sec)
Se puede utilizar la sintaxis show tables from bd, donde bd es el nombre de una base
de datos que no tiene por qu estar en uso.
3.3.2Crear tablas
Esta es ya una operacin muy importante. Es el comando create table el que la realiza.
Este comando funciona con esta sintaxis:
create table nombreTabla
tipodatos(tamao),....);
(nombrecampo1
tipodatos(tamao),
nombrecampo2
68
3.4.1Update
Permite modificar campos. Su sintaxis bsica es: update tabla set columna1=valor1,
columna2=valor2,... where condicin;
Ejemplos: update artculos set iva=0.12;
update personas set nacionalidad=estados unidos where nacionalidad=USA;
update personas set edad=edad+1;
update artculos set precio=precio*1,16, descuento=descuento/2;
3.4.2Delete
Permite borrar registros de las tablas. Su sintaxis bsica es:
delete from tabla where condicin;
Ejemplos: delete from clientes where deudor=y;
69
Vlll
PROCEDIMIENTO
DESCIPCIN
DE
LAS
ACTIVIDADES REALIZADAS.
Modelo en Cascada
El Modelo en Cascada o tambin conocido como Ciclo de Vida del software da las
pautas que permiten la organizacin en el desarrollo del software a travs de la
implementacin de sus caractersticas etapas, esto quiere decir que cuando se este
llevando a cabo todas las tareas pertinentes dentro de esa etapa, no se podr avanzar
a la siguiente etapa hasta no concluir con todas las tareas.
A continuacin una breve descripcin de cada proceso que constituye este modelo:
70
posibles
costos
que
pueden
surgir
mediante
su
implementacin.
71
72
PLANIFICACIN
Establecimiento del mbito del proyecto.
El mbito del software describir las funciones y caractersticas que se entregaran a los
usuarios
finales.
Por lo tanto, el software que se desarrollar lleva por nombre Human resource
integral system, es un sistema de integracin donde sus funciones principales sern:
datos.
Reporteo de cada curso que se ha dado.
Reporteo de cada persona por cursos que ha tomado.
Reporteo de exponentes por cursos que ha dado.
Reporteo de cursos por intervalo de fechas.
Insercin de cada curso y asistencia a la base de datos (creada por nuestro
proyecto).
Determinacin de la factibilidad.
El anlisis de lo requerido a simple vista parece factible, por tanto, todo lo que se
coment en el mbito del proyecto se puede decir que es basado en consultas e
insercin de la base de datos, la parte de la interfaz podra ser sencilla a cuestin de
tiempo pero, no implica que no se pueda dar un formato sensible y adecuado para darle
suavidad, todo esto ser despus de que la generacin del negocio sea satisfactorio.
Anlisis de riesgos.
El anlisis de riesgos se realiza por la cuestin de que el proyecto se desarrolle de la
manera ms ptima posible, como riesgos podramos tomar los siguientes:
1.
ACTIVIDAD
SEPTIEMBRE
OCTUBRE
NOVIEMBRE
DICIEMBRE
ENERO
FEBRERO
OBSERVACIONE
S
Establecer
lineamiento
s
Alcances
Recursos
Tiempos
Desarrollo
modulo
base
Reportes
Actualizacio
nes (altas,
bajas,
modificacio
nes)
Interaccin
con otras
aplicacione
s
Tuning de
aplicacin
75
76
DISEO
77
ingresados.
Sistema
FA
mostrar la
interfaz
administrativa
FA: El sistema mostrar la interfaz principal sin acceso
2
acceso
Podr acceder al
modo
administrativo
78
El usuario
selecciona men
curso-
Sistema
Flujo
Alterno
Flujo de
Excepci
n
El sistema
muestra el
formulario de
79
>capacitacin.
registro.
Con los datos de
empleado:
El usuario
introduce el id de
la nmina,
(teclado o cdigo
de barras).
idNomina
(Va a ser
ledo
mediante
cdigo de
barras o
teclado).
Fecha del
curso.
(Campo no
modificable
) R1
Muestra la
informacin
relacionada al
empleado:
Nombre
Apellidos
rea
Puesto
FA
EX1
El sistema
agrega al
empleado en la
lista de
asistencia, con
las opciones de:
Borrar del
registro de
asistencia
Agregar
uno nuevo
80
3b.
El usuario
selecciona la
opcin de agregar
nuevo.
El usuario
selecciona la
opcin de eliminar
del registro de
asistencia.
Se ejecutan los
pasos desde el 2.
El sistema borra
el usuario
seleccionado
registro de la
tabla de
asistencia.
FA: El sistema muestra un mensaje de que no se encontr el registro
introducido. M1
EX1: Muestra al usuario un error en el servidor, y re direcciona al men
principal.
Mensajes del sistema
M1: Mensaje de no se encontr registro o datos
R1: Las fechas se deben mostrar en formato DD/MM/AA hh:mm
81
82
sistema
Llenar los datos
El sistema
pertinentes para
validara los datos
el registro de
para su insercin.
cursos.R1
Registrar
curso.M1
3
Si deseas eliminar Mostrar un
un curso solo
mensaje de
deber dar clic
confirmacin.
sobre el mismo
M1: No debes dejar campos vacos.
R1: No se deber dejar ningn campo vaco.
R2: Las fechas se deben mostrar en formato DD/MM/AA hh:mm
2
84
85
86
Selecciona en el men
la opcin reporte.
Tendrs opciones para
realizar el reporte
tales como:
Nombre del
expositor.
Intervalo de
fecha.
Nombre del
curso.
Nombre de la
sala
Regresa un formulario
Procesa la informacin
generando la consulta
enviada y devuelve
una tabla con la
consulta generada..
87
88
89
IX CONCLUSIONES Y RECOMENDACIONES.
El mtodo en el que se desarroll el sistema fue el ptimo, no podas avanzar hasta no
terminar la etapa inicial, por lo que utilizar el modelo en cascada nos llev de la mano
terminando cada proceso en su tiempo, cada una de las etapas del sistema no tuvo
problema alguno salvo la falta de informacin inicial, lo que hizo que me retrasara en
ms de una ocasin, lo primero que se realizo fue una interfaz estndar para poder
avanzar con la lgica del sistema, as mismo recabamos la informacin necesaria para
la lgica y no detenernos en las interfaces, la investigacin de algunas herramientas
desconocidas se realiz en paralelo con la programacin dando buenos resultados.
Por lo que podemos decir que una de las desventajas de este modelo si la informacin
no se da en tiempo y forma o lo requerimientos quedan inconclusos puede ser un
problema para desarrollar por que no puedes saltarte etapas de desarrollo, sin
embargo, logramos avanzar en el procedimiento.
El desarrollar con tecnologas nuevas para m como lo son Ajax, php, css, fue un reto
personal que recomiendo a todos ya que no te quedas estancado en una sola lnea de
desarrollo, claro que costo un poco la realizacin, pero con los fundamentos bsicos de
programacin tu entendimiento se vuelve ms capaz.
Fue enriquecedora la experiencia de estar desarrollando para una empresa que
monitorea y pide resultados, pude gozar de un ambiente agradable ya que siempre se
tuvo resultados como esperaban, por lo que puedo decir que se adentren mucho en ese
hbito, cumplir en tiempo lo que se te pide
90
X REFERENCIAS BIBLIOGRAFA.
Angel Cobo, P. G. (2005). PHP Yy MySQL tecnologas para el desarrollo de
aplicaciones web. mexico: Diaz de satntos.
Avi Silberschatz, H. K. (2006). Fundamentos de Bases de datos. Mexico: Mc Graw Hill.
Firtman, M. R. (2010). Ajax web 2.0 con JQuery para profesionales. Argentina: Alfa
Omega Grupo Editor Argentino.
Quijado, J. L. (marzo 2008). Domain HTML y DHTML. mexico, D.F.: Alfa Omega Grupo
Editor.
Quijado, J. L. (Septiembre 2010). Domain PHP y My SQL. Mexico: Alfa Omega Grupo
Editor.
Referencias digitales
http://downloads.mysql.com/docs/refman-5.0-es.pdf
http://linux.ciberaula.com/articulo/linux_apache_intro
https://php.net/manual/es/index.php
http://librosweb.es/ajax/
http://www.desarrolloweb.com/manuales/21/
http://www.cartagena99.com/recursos/programacion/apuntes/mysql.pdf
91
XI ANEXOS.
92
A. MANUAL DE USUARIOS.
1. como abrir el sistema.
3. Ingreso a capacitacin.
93
94
manualmente.
Paso 5. Dar clic en el botn agregar
.
Al finalizar debera verse el registro de esta manera.
Nota en caso de error en alguno de los campos deber dar clic sobre el
registro y este se borrar de manera inmediata.
95
Paso 1. Al final del registro de todos los usuarios se deber dar clic en el
botn lista
96
Como puede observar se genera la lista con todos los datos referentes al
curso tomado y a los asistentes de la misma, posteriormente proceda a
guardar el documento dando clic en la figura del disquete
o si lo prefiere
. Deber aparecer la
97
7. Generacin de Reportes.
98
Por expositor.
Por empleado.
Por curso.
Por intervalo de fechas.
Reporte por expositor.
Paso1. Seleccionar un expositor de la lista que ah aparece ya que
99
100
101
para realizar la
102
8. Registro de cursos.
. deber mostrar la
103
104
B. MANUAL TCNICO.
Manual de Tcnico
Manual de Resource integral system
105
Contents
DISEO DE INTERFACES...................................................................................... 2
CONTROL............................................................................................................ 6
Ajax.................................................................................................................. 6
PHP................................................................................................................ 11
INTERFACES...................................................................................................... 32
ESTRUCTURA Y UBICACIN DE LOS ARCHIVOS DEL SISTEMA............................46
106
DISEO DE INTERFACES
Para la creacin del diseo de nuestro sistema se utilizo el mecanismo Css.
Qu es CSS?
Hojas de Estilo en Cascada (Cascading Style Sheets), es un mecanismo simple que
describe cmo se va a mostrar un documento en la pantalla, o cmo se va a imprimir, o
incluso cmo va a ser pronunciada la informacin presente en ese documento a travs
de un dispositivo de lectura. Esta forma de descripcin de estilos ofrece a los
desarrolladores el control total sobre estilo y formato de sus documentos.
Para qu sirve?
CSS se utiliza para dar estilo a documentos HTML y XML, separando el contenido de la
presentacin. Los Estilos definen la forma de mostrar los elementos HTML y XML. CSS
permite a los desarrolladores Web controlar el estilo y el formato de mltiples pginas
Web al mismo tiempo. Cualquier cambio en el estilo marcado para un elemento en la
CSS afectar a todas las pginas vinculadas a esa CSS en las que aparezca ese
elemento.
Cmo funciona?
CSS funciona a base de reglas, es decir, declaraciones sobre el estilo de uno o ms
elementos. Las hojas de estilo estn compuestas por una o ms de esas reglas
aplicadas a un documento HTML o XML. La regla tiene dos partes: un selector y la
declaracin. A su vez la declaracin est compuesta por una propiedad y el valor que se
le asigne.
h1 {color: red;}
h1 es el selector
{color: red;} es la declaracin
El selector funciona como enlace entre el documento y el estilo, especificando los
elementos que se van a ver afectados por esa declaracin. La declaracin es la parte
de la regla que establece cul ser el efecto. En el ejemplo anterior, el
selector h1 indica que todos los elementos h1 se vern afectados por la declaracin
donde se establece que la propiedad color va a tener el valor red (rojo) para todos los
elementos h1 del documento o documentos que estn vinculados a esa hoja de estilos.
107
Selector
Funcionalidad
#contenedor{}
#cabecera{}
#cabeceraiz{}
#cabecerace{}
#cabecerade{}
#menu{}
ul, ol{}
.nav li a {}
.nav li a:hover{}
.nav > li {}
.nav li ul {}
#contenido{ }
.datos{}
.datos, td{}
#resultado{}
.datagrid table { }
Cabecera izquierda.
Cabecera central.
Cabecera derecha.
.datagrid {}
.datagrid table thead th {}
.datagrid table thead th:first-child { }
.datagrid table tbody td { }
.datagrid table tbody .alt td {}
.datagrid table tbody td:first-child {}
.datagrid table tbody tr:last-child td
{}
#pie{}
#pieiz{}
#piece{}
#piede{}
Pie izquierdo.
Pie central.
Pie derecho.
109
Cabecera
Men
110
Contenido-Datos
Resultado
Datagrid-Table
Pie de pgina
111
CONTROL
Ajax
El trmino AJAX se present por primera vez en el artculo "Ajax: A New Approach to
Web Applications" publicado por Jesse James Garrett el 18 de Febrero de 2005. Hasta
ese momento, no exista un trmino normalizado que hiciera referencia a un nuevo tipo
de aplicacin web que estaba apareciendo.
En realidad, el trmino AJAX es un acrnimo de Asynchronous JavaScript + XML, que
se puede traducir como "JavaScript asncrono + XML".
El artculo define AJAX de la siguiente forma:
Ajax no es una tecnologa en s mismo. En realidad, se trata de varias tecnologas
independientes que se unen de formas nuevas y sorprendentes.
Las tecnologas que forman AJAX son:
En las aplicaciones web tradicionales, las acciones del usuario en la pgina (pinchar en
un botn, seleccionar un valor de una lista, etc.) desencadenan llamadas al servidor.
Una vez procesada la peticin del usuario, el servidor devuelve una nueva pgina
HTML al navegador del usuario.
En el siguiente esquema, la imagen de la izquierda muestra el modelo tradicional de las
aplicaciones web. La imagen de la derecha muestra el nuevo modelo propuesto por
AJAX:
Figura 1.2 Comparacin grfica del modelo tradicional de aplicacin web y del nuevo
modelo propuesto por AJAX. (Imagen original creada por Adaptive Path y utilizada con
su permiso).
113
Mtodo
Funcin
function crearXMLHttpRequest() {
var xmlHttp=null;
if (window.ActiveXObject)
xmlHttp = new
ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
return xmlHttp;
}
function procesarEvento(){
var detalles =
document.getElementById("body");
if(conexion.readyState == 4) {
detalles.innerHTML =
conexion.responseText;
}
else
{
detalles.innerHTML = 'Cargando...';
}
}
function insertacur(valor,valor2,
valor3,valor4,valor5,valor6,valor7){
conexion=crearXMLHttpRequest();
conexion.onreadystatechange =
procesarEventos;
if (valor==""||valor2==""||valor3==""||
valor4==""||valor5==""||valor6==""||valor7=="")
{
alert("No debes dejar campos vacios!");
}
114
else{
conexion.open("GET", "php/insertacur.php?
curso=" +
valor+"&objetivo="+valor2+"&expositor="+valo
r3+"&tipo="+valor4+"&lugar="+valor5+"&horar
io="+valor6+"&fecha="+valor7, true);
}
conexion.send(null);
}
function borracur(idfila)
{
var elTableRow =
document.getElementById(idfila);
elTableRow.style.backgroundColor
=(elTableRow.style.backgroundColor=="green"
)?'cyan':'green';
if(elTableRow.style.backgroundColor ==
'green'){
var elTableCells =
elTableRow.getElementsByTagName("td");
}
conexion=crearXMLHttpRequest();
conexion.onreadystatechange =
procesarEventos;
conexion.open("GET", "php/borracur.php?
nombre="+elTableCells[0].innerHTML
+"&objetivo="+elTableCells[1].innerHTML+"&e
xpositor="+elTableCells[2].innerHTML+"&tipo=
"+elTableCells[3].innerHTML+"&lugar="+elTabl
eCells[4].innerHTML+"&fecha="+elTableCells[6
].innerHTML, true);
conexion.send(null);
}
function
agregacap(valor,valor2,valor3,valor4,valor5,
115
valor6,valor7,valor8){
conexion=crearXMLHttpRequest();
conexion.onreadystatechange =
procesarEventos;
if(valor4==""){
if (valor==""||valor2==""||valor3==""||
valor5==""||valor6==""||valor7==""||valor8=="")
{
alert("No debes dejar campos vacios!");
}
else{
conexion.open("GET", "php/capacitacion.php?
sala="+
valor+"&curso="+valor2+"&turno="+valor3+"&
nomina="+valor4+"&nombre="+valor5+"&apep
a="+valor6+"&apema="+valor7+"&puesto="+va
lor8, true);
}}
else{
conexion.open("GET", "php/capacitacion.php?
sala="+
valor+"&curso="+valor2+"&turno="+valor3+"&
nomina="+valor4+"&nombre="+valor5+"&apep
a="+valor6+"&apema="+valor7+"&puesto="+va
lor8, true);
}
conexion.send(null);
}
function borracap(idfila)
{
var elTableRow =
document.getElementById(idfila);
elTableRow.style.backgroundColor
=(elTableRow.style.backgroundColor=="green"
)?'cyan':'green';
if(elTableRow.style.backgroundColor ==
116
'green'){
var elTableCells =
elTableRow.getElementsByTagName("td");
}
conexion=crearXMLHttpRequest();
conexion.onreadystatechange =
procesarEventos;
conexion.open("GET", "php/borracap.php?
nombre="+elTableCells[0].innerHTML
+"&curso="+elTableCells[1].innerHTML+"&num
ero="+elTableCells[2].innerHTML, true);
conexion.send(null);
}
function
reporte(valor,valor2,valor3,valor4,valor5){
conexion=crearXMLHttpRequest();
conexion.onreadystatechange =
procesarEventos;
if (valor==""&&
valor2==""&&valor3==""&&valor5==""){
alert("No debes dejar campos vacios!");
}
else{
conexion.open("GET", "php/reporte.php?
expositor="+
valor+"&curso="+valor2+"&persona="+valor3+
"&fechai="+valor4+"&fechaf="+valor5, true);
}
conexion.send(null);
}
117
PHP
PHP (acrnimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de cdigo
abierto muy popular especialmente adecuado para el desarrollo web y que puede ser
incrustado en HTML.
Bien, pero qu significa realmente? Un ejemplo nos aclarar las cosas:
Ejemplo #1 Un ejemplo introductorio
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo</title>
</head>
<body>
<?php
echo "Hola, soy un script de PHP!";
?>
</body>
</html>
En lugar de usar muchos comandos para mostrar HTML (como en C o en Perl), las
pginas de PHP contienen HTML con cdigo incrustado que hace "algo" (en este caso,
mostrar "Hola, soy un script de PHP!). El cdigo de PHP est encerrado entre
las etiquetas especiales de comienzo y final <?php y ?> que permiten entrar y salir del
"modo PHP".
Lo que distingue a PHP de algo del lado del cliente como Javascript es que el cdigo es
ejecutado en el servidor, generando HTML y envindolo al cliente. El cliente recibir el
resultado de ejecutar el script, aunque no se sabr el cdigo subyacente que era. El
servidor web puede ser configurado incluso para que procese todos los ficheros HTML
con PHP, por lo que no hay manera de que los usuarios puedan saber qu se tiene
debajo de la manga.
Empezaremos con describir cada archivo .php que se encuentra en nuestro sistema:
118
Archivo Logueo.php
$bd_base = "rh";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password); Creamos la
conexin.
mysql_select_db($bd_base, $con);
if(isset($_POST['enviar'])){ Se valida que los daos del formulario hayan
sido enviados, si esto fue hecho se
$user=$_POST['user'];
almacenan los valores user y pass en las
variables $user y $pass respectivamente.
$pass=$_POST['pass'];
$select="select id,user,pass from
users where user='".$user."' AND pass='".$pass."'";
$sql=mysql_query($select,$con);
if($row=mysql_fetch_array($sql))
{
$_SESSION['user']=$row['user'];
$_SESSION['pass']=$row['pass'];
$_SESSION['id']=$row['id'];
Header("Location: ..\index.php");
}else{
?>
<?php
Header("Location: ..\index.php");
}}?>
Archivo logout.php
<?php
session_start();
if(isset($_SESSION['user'])){
session_destroy();
header("Location: ..\index.php");
}else{
echo "Error!";
}
?>
Archivo capacitacin.php
<html>
Agregamos el archivo
de diseo y el
120
JavaScript, para que
podamos ocupar sus
funciones.
<head>
<link rel="stylesheet" href="../css/maquetacion.css" type="text/css" media="screen">
<script language="JavaScript" type="text/javascript" src="../js/ajax.js"></script>
<?php
Creacin del
divisor
datagrid y la
cabecera de
la tabla
$c=1;
$hoy = date("y/m/d");
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "";
$bd_base = "rh";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
Creacin de
la conexin a
$sql=mysql_query("select * from cursos where id=".$_GET['curso'].";"); base de
datos y la
consulta.
mysql_select_db($bd_base, $con);
121
while($row = mysql_fetch_array($sql)){
$id=$row['id'];
$nombre=$row['nombre'];
$horario=$row['horario'];
$Dcurso=$row['nombre'];
$Dobjetivo=$row['objetivo'];
$Dexpositor=$row['expositor'];
$Dtipo=$row['tipo'];
$Dfecha=$row['fecha'];
$Dhorario=$row['horario'];
if($_GET['nomina']==''){
$com=mysql_query("select * from capacitacion where
NOMBRE='".$_GET['nombre']."'&&
tipo= '".$row['tipo']."'&&
puesto='".$_GET['puesto']."'&&
nom_curso='".$row['nombre']."'&&
objetivo='".$row['objetivo']."'&&
Fecha='".$row['fecha']."'&&
expositor='".$row['expositor']."'&&
sala='".$_GET['sala']."'&&
turno='".$_GET['turno']."'");
if(mysql_fetch_array($com)){
echo"<tr>registro ya ha sido ingresado</tr>";
}else{
mysql_query("insert into capacitacion values(
'".$_GET['nomina']."','".$_GET['nombre']."
".$_GET['apepa']."".$_GET['apema']."',
'".$row['tipo']."','".$_GET['puesto']."',
'".$row['nombre']."','".$row['objetivo']."',
'".$row['fecha']."','".$row['horario']."',
122
'".$hoy."','".$row['expositor']."',
'".$_GET['sala']."','".$_GET['turno']."',
'".$id."')",$con);
}}
else{
$com2=mysql_query("select *
from empleados where NO_nomina='".$_GET['nomina']."'");
while($row2 = mysql_fetch_array($com2)){
$NOMBRE=$row2['NOMBRE'];
$APEPA=$row2['APEPA'];
$APEMA=$row2['APEMA'];
$PUESTO=$row2['PUESTO'];}
$com3=mysql_query("select *
from capacitacion where
NOMBRE='".$NOMBRE."'&& tipo= '".$row['tipo']."'&& puesto='".
$PUESTO."'&&nom_curso='".$row['nombre']."'&&
Al igual que lo
anterior hacemos
las mismas
validaciones
ahora con la
diferencia que
solo enviamos el
numero de
123
objetivo='".$row['objetivo']."'&&Fecha='".$row['fecha']."'&&
horario='".$row['horario']."'&&Fechar='".$hoy."'&&
expositor='".$row['expositor']."'&& sala='".$_GET['sala']."'&&
turno='".$_GET['turno']."'");
if(mysql_fetch_array($com3)){
echo"<tr>registro ya ha sido ingresado</tr>";
}else{
mysql_query("insert into capacitacion values('".$_GET['nomina']."',
'".$NOMBRE." ".$APEPA." ".$APEMA."','".$row['tipo']."',
'".$PUESTO."','".$row['nombre']."',
'".$row['objetivo']."','".$row['fecha']."',
'".$row['horario']."','".$hoy."','".$row['expositor']."',
'".$_GET['sala']."','".$_GET['turno']."','".$id."')",$con);}}}
$c=$c+1;
}
?>
</tbody>
</table>
</div>
</body>
</html>
125
Archivo borracap.php
<html>
<head>
<link rel="stylesheet" href="../css/maquetacion.css" type="text/css" media="screen">
<script language="JavaScript" type="text/javascript" src="../js/ajax.js"></script>
Agregamos el archivo
de diseo y el
JavaScript, para que
podamos ocupar sus
funciones.
Creacin del
divisor
datagrid y la
cabecera de
la tabla
<tbody>
<?php
$c=1;
$hoy = date("y/m/d");
echo$_GET['nombre'];
echo $_GET['numero'];;
Creacin de las variables a ocupar en
echo$_GET['curso'];
lenguaje php.
echo "ha sido eliminado";
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "";
$bd_base = "rh";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
mysql_query("delete from capacitacion where
NOMBRE='".$_GET['nombre']."' && id_curso='".$_GET['numero']."'");
Creacin de
la conexin a
base de
datos y la
eliminacin
del registro.
126
127
Archivo Insertacur.php
<html>
<head>
<link rel="stylesheet" href="../css/maquetacion.css" type="text/css" media="screen">
<script language="JavaScript" type="text/javascript" src="../js/ajax.js"></script>
Agregamos el archivo
de diseo y el
JavaScript, para que
podamos ocupar sus
funciones.
<?php
$hoy = date("y/m/d");
Creacin de las variables a ocupar en
$c=1;
lenguaje php.
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "";
$bd_base = "rh";
Creacin de
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
la conexin a
mysql_select_db($bd_base, $con);
base de
$com=mysql_query("select * from cursos where
datos y
nombre='".$_GET['curso']."' && objetivo='".$_GET['objetivo']."' && expositor='".
consulta de
$_GET['expositor']."'&& tipo='".$_GET['tipo']."'&&
registro para
lugar='".$_GET['lugar']."'&& horario='".$_GET['horario']."'");
validacin.
128
else{
Insertamos el registro del curso
mysql_query("insert into cursos values('','".$_GET['curso']."',
despus de validar que este no existe
'".$_GET['objetivo']."','".$_GET['expositor']."','".$_GET['tipo']."',
en la base de datos.
'".$_GET['lugar']."','".$_GET['horario']."','".$_GET['fecha']."')",$con);
$sql=mysql_query("select * from cursos ");
while($row = mysql_fetch_array($sql)){
if($c % 2==0){
$cl="alt";}
else{
$cl="al";}
?>
Generamos la tabla con cada celda,
<tr class="<?php echo $cl; ?>" id="<?php echo $c; ?>
pero las filas cambiaran de nombre,
" onclick="javascript: borracur(this.id)">
esto se debe a que as podrn tener un
<td ><?php echo $row['nombre']; ?></td>
diseo de colores en grid.
<td><?php echo $row['objetivo']; ?></td>
Por ltimo cerramos la tabla, el divisor
<td><?php echo $row['expositor']; ?></td>
grid y el cdigo html.
<td><?php echo $row['tipo']; ?></td>
<td><?php echo $row['lugar']; ?></td>
<td><?php echo $row['horario']; ?></td>
<td width="20%"><?php echo $row['fecha']; ?></td>
</tr>
<?php
$c=$c+1;}}
?>
</table>
</body>
</html>
129
Archivo borracur.php
<head>
<link rel="stylesheet" href="../css/maquetacion.css" type="text/css" media="screen">
<script language="JavaScript" type="text/javascript" src="../js/ajax.js"></script>
Agregamos el archivo
de diseo y el
JavaScript, para que
podamos ocupar sus
funciones.
Creacin del
divisor
datagrid y la
cabecera de
la tabla
<?php
$c=1;
$hoy = date("y/m/d");
Creacin de las variables a ocupar en
echo "el registro ha sido eliminado!";
lenguaje php.
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "";
$bd_base = "rh";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
Creacin de
mysql_select_db($bd_base, $con);
la conexin a
mysql_query("delete from cursos where nombre='".$_GET['nombre']."' && objetivo='".
base de
$_GET['objetivo']."' && expositor='".$_GET['expositor']."'&& tipo='".$_GET['tipo']."'&&
datos y la
lugar='".$_GET['lugar']."'&& fecha='".$_GET['fecha']."'");
eliminacin
del registro.
130
131
Archivo Reporte.php
<head>
<link rel="stylesheet" href="../css/maquetacion.css" type="text/css" media="screen">
<script language="JavaScript" type="text/javascript" src="../js/ajax.js"></script>
Agregamos el archivo
de diseo y el
JavaScript, para que
podamos ocupar sus
funciones.
?>
<tr class="<?php echo $cl; ?>" ><td ><?php echo $row['nom_curso']; ?></td><td><?php
echo $row['objetivo']; ?></td><td><?php echo $row['Fecha']; ?></td><td><?php echo
$row['horario']; ?></td><td><?php echo $row['tipo']; ?></td><td><?php echo $row['sala'];
?></td><td><?php echo $row['id_curso']; ?></td> </tr>
<?php
$c=$c+1;}
echo"</tbody>
</table>
</div>";
}
elseif($_GET['curso']!=''){
?>
<div class="datagrid">
<table>
<thead><tr >
<th>Nombre</th>
<th>tipo</th>
<th>Puesto</th>
<th>Fecha</th>
</tr>
</thead>
<?php
$sql=mysql_query("select * from capacitacion where id_curso='".$_GET['curso']."' ");
while($row = mysql_fetch_array($sql)){
if($c % 2==0){
$cl="alt";}
else{
$cl="al";}
?>
<tr class="<?php echo $cl; ?>" ><td ><?php echo $row['NOMBRE']; ?></td><td><?php
echo $row['tipo']; ?></td><td><?php echo $row['puesto']; ?></td><td><?php echo
$row['Fechar']; ?></td> </tr>
<?php $c=$c+1;
}
echo"</tbody>
</table>
133
</div>";}
elseif($_GET['persona']!=''){
?>
<div class="datagrid">
<table>
<thead><tr><th>Nombre</th><th>Objetivo</th><th>Fecha</th><th>Horario</th><th>Ti
po</th><th>Sala</th></tr></thead>
<?php
$sql=mysql_query("select * from capacitacion where NOMBRE='".$_GET['persona']."' ");
while($row = mysql_fetch_array($sql)){
if($c % 2==0){
$cl="alt";}
else{
$cl="al";}
?>
<tr class="<?php echo $cl; ?>" ><td ><?php echo $row['nom_curso']; ?></td><td><?php
echo $row['objetivo']; ?></td><td><?php echo $row['Fecha']; ?></td><td><?php echo
$row['horario']; ?></td><td><?php echo $row['tipo']; ?></td><td><?php echo $row['sala'];
?></td><td><?php echo $row['id_curso']; ?></td> </tr>
<?php $c=$c+1;
}
echo"</tbody>
</table>
</div>";
}
if($_GET['fechai']!=''&& $_GET['fechaf']!=''){
?>
<div class="datagrid">
<table>
<thead><tr><th>Nombre</th><th>Objetivo</th><th>Fecha</th><th>Horario</th><th>Ti
po</th><th>Sala</th></tr></thead>
<?php
$sql=mysql_query("select * from capacitacion where Fecha between '".$_GET['fechai']."'
and '".$_GET['fechaf']."' group by id_curso");
while($row = mysql_fetch_array($sql)){
if($c % 2==0){
134
$cl="alt";}
else{
$cl="al";}
?>
<tr class="<?php echo $cl; ?>"><td ><?php echo $row['nom_curso']; ?></td><td><?php
echo $row['objetivo']; ?></td><td><?php echo $row['Fecha']; ?></td><td><?php echo
$row['horario']; ?></td><td><?php echo $row['tipo']; ?></td><td><?php echo $row['sala'];
?></td><td><?php echo $row['id_curso']; ?></td> </tr>
<?php
$c=$c+1;
}echo"</tbody>
</table>
</div>";
}?>/body>
</html>
135
136
function Header(){
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "";
$bd_base = "rh";
137
$this->Image('fisher.png',9,8,33);
$this->Image('se.png',160,8,45);
$this->SetFont('Arial','B',11);
$this->Cell(40,20);
$this->Ln();
$this->Cell(95,8,"CURSO: ".$nombre,1,0,'l');
$this->Cell(45,8,"*NIVEL: ",1,0,'l');
$this->Cell(55,8,"FECHA: ".date("d/m/y"),1,0,'l');
$this->ln();
$this->Cell(95,8,"LUGAR: ".$_REQUEST['sala'],1,0,'l');
$this->Cell(55,8,"HORARIO: ".$horario,1,0,'l');
$this->Cell(45,8,'Hoja: '.$this->PageNo().' de:{nb} ',1,0,'l');
$this->Ln();
$this->SetX(90);
$this->Cell(30,9,'ASISTENTES ',0,0,'l');
$this->Ln();
$this->Cell(10,12,'No.',1,0,'l');
$this->Cell(22,12,'No.Nmina',1,0,'l');
$this->Cell(19,12,'TURNO',1,0,'l');
$this->Cell(67,12,'NOMBRE',1,0,'l');
$this->Cell(57,12,'PUESTO',1,0,'l');
$this->Cell(20,12,'FIRMA',1,0,'l');
$this->Ln();
}
138
$this->SetY(-100);
$this->SetFont('Arial','B',8);
$this->SetDrawColor(1, 1, 1);
$this->Line(10, 265 , 50, 265);
$this->Line(150, 265 , 190, 265);
$this->SetFont('Arial','B',11);
$this->SetXY(0, 245);
$this->Cell(0,0,"EL INSTRUCTOR",0,0,'C');
$this->SetFont('Arial','B',8);
$this->SetXY(10, 263);
$this->Cell(28,2,"".$expositor,0,0,'C');
$this->SetXY(0, 267);
$this->Cell(58,0,"NOMBRE",0,0,'C');
$this->Cell(228,0,"FIRMA",0,0,'C');
$this->Ln();
$this->SetXY(10,270);
$this->MultiCell(40,5,'*NIVEL= nivel de revisin de procedimiento ISO
9002.','','J','');
$this->SetXY(80,270);
$this->MultiCell(120,5,'NOTA.Los firmantes hemos sido capacitados/actualizados
en el tema de referencia y nos obligamos a participar/generar acciones
correctivas/preventivas en caso de detectar no-conformidades con el mismo.','','J','');
139
$this->SetXY(150, 285);
$this->MultiCell(40,5,'Formato F4.18B
Rev.5.','','c','');
}}
$pdf=new PDF();
Creamos la variable pdf de la clase PDF,
$pdf->AddPage();
para poder manejar sus atributos, y
$pdf->AliasNbPages();
$count=0;
Creamos el ciclo while, para que se genere
while($row= mysql_fetch_array($sql3))el cuerpo del documento con los registros de
$count=$count+1;
la consulta antes hecha.
if($count<25){
$pdf->SetFont('Arial','',8);
Creamos la estructura al mismo
$pdf->Cell(10,7,$count,1,0,'l');
$pdf->Cell(22,7,$row['NO_nomina'],1,0,'l'); tiempo que llenamos las celdas con
datos de la base de datos, siempre
$pdf->Cell(19,7,$row['turno'],1,0,'l');
y cuando el registro no sea mayor a
$pdf->Cell(67,7,$row['NOMBRE'],1,0,'l');
25; de lo contrario se ira a una
$pdf->Cell(57,7,$row['puesto'],1,0,'l');
$pdf->Cell(20,7,"",1,0,'l');
$pdf->Ln();
} else{
Esta excepcin dice que si el registro
$pdf->Cell(10,7,$count,1,0,'l');
es mayor de 25 se genera un ltimo
$pdf->Cell(22,7,$row['NO_nomina'],1,0,'l'); registro y el contador se disminuye a
$pdf->Cell(19,7,$row['turno'],1,0,'l');
0.
$pdf->Cell(67,7,$row['NOMBRE'],1,0,'l');
Por ltimo se cierra el ciclo, ya
$pdf->Cell(57,7,$row['puesto'],1,0,'l');
cuando no hay mas registros que
$pdf->Cell(20,7,"",1,0,'l');
$pdf->Ln();
$pdf->SetY(275);
$count=0;}}
140
if($count>0){
for ($i = $count; $i <25; $i++) {
$pdf->SetFont('Arial','',8);
$pdf->Cell(10,7,$i+1,1,0,'l');
$pdf->Cell(22,7,"",1,0,'l');
$pdf->Cell(19,7,"",1,0,'l');
$pdf->Cell(67,7,"",1,0,'l');
$pdf->Cell(57,7,"",1,0,'l');
$pdf->Cell(20,7,"",1,0,'l');
$pdf->Ln();}}
$pdf->Output();
?>
141
INTERFACES
Archivo Index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>INICIO</title>
<link rel="stylesheet" href="css/maquetacion.css" type="text/css" media="screen">
</head>
<?php
Con sta instruccin inicializamos una sesin e indicamos que
session_start();
if(isset($_SESSION['user'])){si tenemos activo algn usuario nos mostrar la pgina dentro
de esta condicin.
?>
<body>
Este divisor contendr elementos dentro de s que irn dando formato
<div id='contenedor'>
Este divisor solo se enfocar en la cabecera de la pgina.
<div id="cabecera">
Definimos una subdivisin para cada elemento de la cabecera dando 3, dentro de ellos
habr una imagen de fondo, cada una se identifica por cabecera derecha, izquierda, y
<div id='cabeceraiz'><h1 class ="normal"><img src="imagenes/fisher.png"
width="100%" height="100%" longdesc="fisher.png" /></div>
<div id='cabecerade'><h1 class ="normal"><img src="imagenes/emerson.png"
width="100%" height="50%" longdesc="emerson.png" /></div>
<div id='cabecerace'><h1 class ="normal"><img src="imagenes/titulo.png"
width="100%" height="50%" longdesc="titulo.png" /></div>
</div>
Hola <strong ><?php echo$_SESSION['user']?></strong> ya has iniciado sesion<a
href="php/logout.php">Cerrar sesion</a>
<div id='menu'>
<ul class="nav">
<li><a href="index.php" >
<img src="imagenes/inicio.jpg" width="15%" height="5%"
longdesc="fisher.jpg" /></a></li>
<li><a href="reporte.php"><img src="imagenes/reporte.jpg" width="15%" height="5%"
longdesc="fisher.jpg" /></a></li>
<li><a href="capacitacion.php"> <img src="imagenes/capa.jpg" width="15%"
height="5%" longdesc="fisher.jpg" /></a></li>
<li><a href="registro_cur.php"> <img src="imagenes/curso.jpg" width="15%"
142
143
<table>
<form method="post" action="php\logueo.php">
<tr>
<td ><FONT COLOR="0000FF" size="2%">User:</td>
<td><input type="text" name="user"/></td>
</tr>
<tr>
<td><FONT COLOR="0000FF" size="2%">Pass:</td>
<td><input type="password" name="pass"/></td>
</tr>
<tr>
<td aling="center" colspan="2"><input type="submit" name="enviar"
value="Accesar"></td>
</tr>
</form>
</table>
<li><a href="index.php" >
<img src="imagenes/inicio.jpg" width="15%" height="5%"
longdesc="fisher.jpg" /></a></li>
<li><a href="capacitacion.php"> <img src="imagenes/capa.jpg" width="15%"
height="5%" longdesc="fisher.jpg" /></a></li>
</ul>
</div>
<div id='pie' >
<div id='pieiz'><h1 class ="normal"><img src="imagenes/fisher.jpg"
Aqu cerramos la condicin y el cdigo php.
width="100%" height="100%" longdesc="fisher.png" /></div>
<div id='piece'><h1 class ="normal"><img src="imagenes/emerson_group.jpg"
width="100%" height="100%" longdesc="fisher.png" /></div>
<div id='piede'><h1 class ="normal"><img src="imagenes/valvule.jpg" width="100%"
height="100%" longdesc="fisher.png" /></div>
</div>
</div>
</body>
<?php
}?>
</html>
144
Archivo Capacitacin.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Creamos una conexin a la base de datos, el servidor localhost, usuario root,
password no tiene y la base de datos rh, despus consultamos la tabla
cursos y almacenamos los datos para posteriormente ocuparlos.
<?php
$server = 'localhost';
$username = 'root';
$password = '';
$database = 'rh';
$conexion = @new mysqli($server, $username, $password, $database);
if ($conexion->connect_error) {
die('Error de conexin: ' . $conexion->connect_error); }
$sql
="SELECT * from cursos";
$result = $conexion->query($sql);?>
En el diseo HTML de la pgina todo se conserva igual que las dems a
excepcin de los datos que ms adelante se detallarn.
<head>
<title>Capacitacin</title>
<link rel="stylesheet" href="css/maquetacion.css" type="text/css" media="screen">
<script language="JavaScript" type="text/javascript" src="js/ajax.js"></script>
</head>
<body>
<div id='contenedor'>
<div id="cabecera">
<div id='cabeceraiz'><h1 class ="normal"><img src="imagenes/fisher.png"
width="100%" height="100%" longdesc="fisher.png" /></div>
<div id='cabecerade'><h1 class ="normal"><img src="imagenes/emerson.png"
width="100%" height="50%" longdesc="emerson.png" /></div>
<div id='cabecerace'><h1 class ="normal"><img src="imagenes/titulo.png"
width="100%" height="50%" longdesc="titulo.png" /></div>
</div>
<div id='menu'>
<ul class="nav">
<li><a href="index.php" >
<img src="imagenes/inicio.jpg" width="15%" height="5%"
145
longdesc="fisher.jpg" /></a></li>
</ul>
</div>
<div id="contenido">
Creamos una tabla y un formulario para la insercin
de datos.
<table
class="datos" >
<form method="get" action="pdf/Lista.php">
<tr>
<td colspan="3">
<label for="Datos" >Datos curso </label>
</td>
</tr> <tr>
<td>
Generamos un selector de opciones desplegables, cada opcin tiene el nombre
de las salas a elegir.
<label for="sala">Sala: </label>
<select id="sala" name="sala">
<option value="Avandaro" >Avandaro</option>
<option value="Expansion">Expansion</option>
<option value="Malinalco">Malinalco</option>
<option value="Nevado">Nevado</option>
<option value="Teotihuacan">Teotihuacan</option>
<option value="Metepec">Metepec</option>
<option value="Valle de Bravo">Valle de Bravo</option>
</select>
</td>
<td>
Generamos un selector de opciones desplegables, a diferencia del anterior
implementamos cdigo php que nos dar las opciones con los datos
almacenados de la consulta que se realiz anteriormente.
<label for="curso">curso: </label>
<select id="curso" name="curso" >
<option value=''> </option>
Generamos un ciclo while que nos dice que mientras haya un registro se
generar un opcin con los datos de antes almacenados.
<?php
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
146
</tr><tr>
<td><label for="nombre">Nombre: </label>
<input type="text" name="nombre" id="nombre" />
</td>
<td>
<label for="apepa">Apellido Paterno: </label>
<input type="text" name="apepa " id="apepa" />
</td>
<td>
<label for="apema">Apellido Materno: </label>
<input type="text" name="apema" id="apema" />
</td>
147
148
<td>
<label for="curso">Curso: </label>
<input type="text" id="curso"name="curso"/>
</td>
<td>
<label for="tipo">Tipo: </label>
<input type="text" id="tipo"name="tipo"/>
</td>
<td>
<label for="expositor">Expositor: </label>
<input type="text" id="expositor" name="expositor" />
</td>
</tr>
<tr>
<td colspan="3">
<label for="objetivo">Objetivo: </label>
<textarea rows="4" cols="50" id="objetivo" name="objetivo">
Objetivo
</textarea>
</td>
</tr>
<tr>
<td>
<label for="horario">Horario: </label>
<input type="text" id="horario"name="horario"/>
</td>
<td>
<label for="fecha">Fecha(yyyy-mm-dd): </label>
<input type="text" id="fecha"name="fecha"/>
</td>
</tr>
<tr>
<td>
<label for="turno">Sala: </label>
<select id="sala" name="sala">
<option value="Avandaro">Avandaro</option>
<option value="Expansion">Expansion</option>
<option value="Malinalco">Malinalco</option>
<option value="Nevado">Nevado</option>
150
<option value="Teotihuacan">Teotihuacan</option>
<option value="Metepec">Metepec</option>
<option value="Valle de Bravo">Valle de Bravo</option>
</select>
</td>
<td>
<input type="button" value="Agregar" onclick="javascript:
insertacur(curso.value,objetivo.value,expositor.value,tipo.value,sala.value,horario.value,f
echa.value);">
</td>
</tr>
</form>
</table>
<div id="resultado" style="height:420px;width:850px;overflow:scroll;"></div>
</div>
</div>
<div id='pie' >
<div id='pieiz'><h1 class ="normal"><img src="imagenes/fisher.jpg"
width="100%" height="100%" longdesc="fisher.png" /></div>
<div id='piede'><h1 class ="normal"><img src="imagenes/valvule.jpg" width="100%"
height="100%" longdesc="fisher.png" /></div>
<div id='piece'><h1 class ="normal"><img src="imagenes/emerson_group.jpg"
width="100%" height="100%" longdesc="fisher.png" /></div>
</div>
</body>
Esta es la otra condicin en caso de no haber iniciado sesin, lo que har es
direccionarte al index para que te logues.
<?php
}
else{
Header("Location: index.php");
}?>
</html>
151
Archivo reporte.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
Creamos una conexin a la base de datos, el servidor localhost, usuario root, password
no tiene y la base de datos rh, despus consultamos la tabla cursos y almacenamos los
<?php
$server = 'localhost';
$username = 'root';
$password = '';
$database = 'rh';
$conexion = @new mysqli($server, $username, $password, $database);
if ($conexion->connect_error) {
die('Error de conexin: ' . $conexion->connect_error);
}
$sql
$result
?>
<head>
<title>Reporte</title>
<link rel="stylesheet" href="css/maquetacion.css" type="text/css" media="screen">
<script language="JavaScript" type="text/javascript" src="js/ajax.js"></script>
</head>
Creamos una sesin y condicionamos el que haya una sesin iniciada si es as
muestra la pagina de lo contrario, se cumple otra condicin.
<?php
session_start();
if(isset($_SESSION['user']))
{?>
<body>
<div id='contenedor'>
<div id="cabecera">
<div id='cabeceraiz'><h1 class ="normal"><img src="imagenes/fisher.png"
width="100%" height="100%" longdesc="fisher.png" /></div>
<div id='cabecerade'><h1 class ="normal"><img src="imagenes/emerson.png"
width="100%" height="50%" longdesc="emerson.png" /></div>
<div id='cabecerace'><h1 class ="normal"><img src="imagenes/titulo.png"
width="100%" height="50%" longdesc="titulo.png" /></div>
152
</div>
<div id='menu'>
<ul class="nav">
<li><a href="index.php" >
<img src="imagenes/inicio.jpg" width="15%"
height="5%" longdesc="fisher.jpg" /></a></li>
</ul>
</div>
<div id="contenido">
<table class="datos" >
<form method="get" action="pdf/Lista.php">
<tr>
<td colspan="3">
<label for="Datos">Reporte de cursos por: </label>
</td>
</tr>
<tr>
<td>
<label for="expositor">Expositor: </label>
<select id="expositor" name="expositor" >
<option value=''> </option>
Generamos un ciclo while que nos dice que mientras haya un registro se
generar un opcin con los datos de antes almacenados.
<?php
while ($row = $result->fetch_array(MYSQLI_ASSOC))
{
echo " <option value='".$row['expositor']."'>".$row['expositor']."</option>";
}
$sql1
="SELECT NOMBRE from capacitacion group by NOMBRE ";
$result1 = $conexion->query($sql1);
?>
</select>
</td>
<td>
</td>
</tr>
<tr>
<td>
<label for="persona">Persona: </label>
153
Generamos un ciclo while que nos dice que mientras haya un registro se
generar un opcin con los datos de antes almacenados.
<?php
while ($row1 = $result1->fetch_array(MYSQLI_ASSOC)) {
echo " <option value='".$row1['NOMBRE']."' >".$row1['NOMBRE']."</option>";
}
$sql2
="SELECT * from cursos order by nombre";
$result2 = $conexion->query($sql2);
?>
</select>
</td>
<td>
<label for="curso">curso: </label>
<select id="curso" name="curso" >
<option value=''> </option>
Generamos un ciclo while que nos dice que mientras haya un registro se
generar un opcin con los datos de antes almacenados.
<?php
while ($row2 = $result2->fetch_array(MYSQLI_ASSOC))
{
echo " <option value='".$row2['id']."'>".$row2['nombre'].",".$row2['objetivo'].",".
$row2['expositor'].",".$row2['fecha'].",".$row2['horario'].",".$row2['tipo']."</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>
<label for="fecha">Fecha inicio: </label>
<input type="text" name="fechai" id="fechai" />
</td>
<td>
154
155
156
157
158
Archivos de interfaces.
159
160
C. NDICE DE FIGURAS.
Figura 1.1 Tecnologas agrupadas bajo el concepto de AJAX31
Figura 1.2 Comparacin grfica del modelo tradicional de aplicacin web y del nuevo
modelo propuesto por AJAX. (Imagen original creada por Adaptive Path y utilizada con
su permiso)...33
Figura 1.3 Comparacin entre las comunicaciones sncronas de las aplicaciones web
tradicionales y las comunicaciones asncronas de las aplicaciones AJAX (Imagen
original creada por Adaptive Path y utilizada con su permiso)34
161