Post on 27-Dec-2019
TRABAJO FIN DE CARRERA
TÍTULO: Instalación y desarrollo de aplicación Web, que permita interactuar en tiempo real, con parametros relativos al funcionamiento de empresa. NextCoffee, SL. TITULACIÓN: Ingeniería Técnica de Telecomunicación, especialidad Telemática. AUTOR: Antonio Jiménez Viguer CONSULTOR: Antoni Morell Pérez
TFC
1
ÍNDICE 1. INTRODUCCIÓN...........................................................................................................................................3
1.1Presentaciónyobjetivos..................................................................................................................3
1.2Contexto...................................................................................................................................................3
1.3Planteamientodelproblema..........................................................................................................3
1.4Estructuradeldocumento...............................................................................................................4
2. REQUISITOSFUNCIONALES...................................................................................................................4
2.1Introducción..........................................................................................................................................4
2.1.1Ámbito............................................................................................................................................................4
2.1.2Definicionesysiglas..................................................................................................................................4
2.1.3Referencias....................................................................................................................................................5
2.2Descripcióngeneral............................................................................................................................5
2.2.1Perspectivadelaaplicación...................................................................................................................5
2.2.2Funcionesdelproducto...........................................................................................................................5
2.2.3Restricciones................................................................................................................................................6
2.2.4SupuestosYDependencias.....................................................................................................................6
2.3INTERFACES..........................................................................................................................................7
2.3.1Interfazprincipaldeusuario.................................................................................................................7
2.3.2Interfazdehardware................................................................................................................................7
2.3.3Interfazdesoftware..................................................................................................................................7
2.3.4Interfazdecomunicaciones...................................................................................................................7
2.3.5Requerimientosdeeficiencia................................................................................................................7
2.4OBLIGACIONESDEDISEÑO............................................................................................................8
2.4.1Estándarescumplidos..............................................................................................................................8
2.4.2Limitacioneshardware............................................................................................................................8
2.4.3Facilidadesdemantenimiento.............................................................................................................8
2.4.4Tecnologíasutilizadas..............................................................................................................................8
3. INSTALACIÓNYCONFIGURACIÓNDELENTORNO.....................................................................8
3.1Tipologíadelared..............................................................................................................................8
3.2InstalacióndeservidorWebIIS8................................................................................................9
3.3InstalacióndePHP5.4....................................................................................................................11
3.4CreaciónusuarioaccesoaSQLSERVER08..........................................................................12
3.5CreaciónyconfiguraciónODBC.................................................................................................13
3.6Configuraciónfirewallparapermitirelaccesoalpuerto8080deserver..............14
TFC
2
4.DISEÑO..........................................................................................................................................................15
4.1Introducción.......................................................................................................................................15
4.2Capadepresentación......................................................................................................................16
4.3Capadenegocioológicadelaaplicación..............................................................................17
4.4Capadepersistenciaodatos.......................................................................................................19
5.IMPLEMENTACIÓN.................................................................................................................................20
5.1Tecnologíasutilizadaseneldesarrollo..................................................................................20
5.2Estructuradelaaplicación...........................................................................................................21
5.3Estructuradelcódigo......................................................................................................................23
5.3.1Capadepresentación............................................................................................................................23
5.3.2Capadenegocioológicadelaaplicación.....................................................................................25
5.3.3Capadepersistenciaodatos..............................................................................................................26
6.EVALUACIÓN..............................................................................................................................................26
7.VIABILIDADECONÓMICA....................................................................................................................27
8.BIBLIOGRAFÍA...........................................................................................................................................27
9.CONCLUSIÓN..............................................................................................................................................28
9.1Valoraciónpersonal........................................................................................................................28
9.2Principalesproblemasencontrados........................................................................................28
10.EVOLUCIÓNDELPROYECTO...........................................................................................................28
10.1Listadodeactividadesycostes...............................................................................................28
10.2DiagramadeGantt.........................................................................................................................28
10.3Diagramadered.............................................................................................................................30
11.ANEXOS......................................................................................................................................................32
11.1Técnicos.............................................................................................................................................32
11.1.1Códigodefuncióndeconexión.......................................................................................................32
11.1.2Códigodefuncióngráficos...............................................................................................................34
11.1.3Códigodefuncionesdevisualizaciónderesultados.............................................................36
11.2Capturasdepantalla.....................................................................................................................46
TFC
3
1. INTRODUCCIÓN
1.1 Presentación y objetivos La presentememoria describe el trabajo realizado en el proyectode fin de carrera,para laobtencióndel títulode ingeniero técnicoen telecomunicacionesespecialidadtelemática.Elproyectoconsisteeneldesarrolloypuestaenmarchadeunsitiowebprivado para la compañía Nextcoffee SL, la cual tiene diferentes centros de trabajoseparadosgeográficamente.El objetivo principal de este sitio web es proporcionar información fidedigna y entiempo real, de ciertos parámetros relativos al funcionamiento empresarial de cadacentrodetrabajoofranquicia.Ademásdeestafuncionalidadquepodríamosresumircomoauditoríaen tiemporeal,aprovecharemos laplataformaparapermitir realizarcambiosenlabasededatosdeclientes,loscualessoncomunes.
1.2 Contexto ElproyectoseharealizadoparalaempresaNextcoffeeSLconsedeenBarcelona.Parael desarrollo de la aplicación se han llevado a cabo varias reuniones y undetalladoanálisis,conladireccióndelaempresaymásdetalladamenteconeldepartamentodeoperaciones y expansión. Tras estas reuniones, concretamos que los datos debenextraersedediferentesprocedimientosysoftwaredeterceros,queyautilizanalgunosdepartamentosdelaempresacomorecursoshumanosycontabilidad.Apartirdeestemomento sedistribuye el trabajo en4partes: buqueda y formade conseguir estasvariables, para poder tener la información siempre actualizada, visualización deresultados,diseñoyacceso.
1.3 Planteamiento del problema Desarrollodesitiowebparafacilitarlaauditoriaentiemporealdelocalescomercialesquelaempresaexplotaoco‐explota.Objetivosagrandesrasgos:
Debeserentiemporeal. Debeserrápidoyágil. Accesibledesdecualquierdispositivoconconexiónainternet. Laviabilidadeconómicavendrádefacto,sicumpleconlosobjetivosprevistos.
Porunladoproporcionaráinformacióndelfuncionamientodelnegocio,locualpermitirácorregiraspectosenmenortiempodelactual,evitaráelfraude,alnopoder manipular los datos y se obtendrá un ahorro directo en costes deauditoríasinsitu,quepasarándesertrimestralesaseranuales.
TFC
4
1.4 Estructura del documento Estamemoria,estádivididaenunaseriedecampos,quecoincidiráncon laspropiasetapasdedesarrollodelproyecto.Lasetapasson:
‐ Requisitos.Acuerdodefuncionalidadesentrelaspartes.‐ Análisis.Modeloconceptualdelaaplicación.‐ Desarrolloyconfiguración.Diseñoyejecucióndelapartetécnicaycódigo.‐ Fasedeevaluaciónypruebas.Demostracióndefuncionamientoyresultados.
2. REQUISITOS FUNCIONALES
2.1 Introducción
2.1.1 Ámbito El sitioweb está orientado a ofrecer contenido procedente de la base de datos delsistema de facturación. Una vez finalizada la fase de evaluación y pruebas, serestringirá el accesomediante contraseña. En esta primera versión se incorporaránúnicamente, dos locales propiedad de la empresa. En la siguiente fase se unirán elrestodelocalesfranquiciados.
2.1.2 Definiciones y siglas ‐ Sitioweb: colección de páginas web relacionadas y comunes a un dominio deinternet.
‐ Interfaz usuario (front‐end) y back‐end: hace referencia a la visualización einteraccióndelusuarioporun lado (front‐end), ydel administradordel sitio consusrespectivossistemasporelotro(back‐end).
‐ Navegador: es una aplicación que interpreta la información de archivos y sitioswebrelacionadosoeninternet,paraqueéstospuedanserleídos.
‐ Servidorweb: es un programa informático que procesa una aplicación del ladoservidorrealizandoconexionesbidireccionalesy/ounidireccionalesconelclientegenerandoocediendounarespuestaencualquierlenguaje.Elcódigorecibidoporelclientesuelesercompiladoyejecutadopornavegadorweb.Paralatransmisiónde todos estos datos suele utilizarse algún protocolo. Generalmente se utiliza elprotocolohttp.
‐ Cortafuegos (firewall): es unaparte deun sistemao una redque está diseñadapara bloquear el acceso no autorizado, permitiendo al mismo tiempocomunicacionesautorizadas.
‐ Basededatos: es un conjunto de datos pertenecientes a un mismo contexto yalmacenadossistemáticamenteparasuposterioruso.
‐ SistemadeGestióndeBasesdeDatos(SGBD):esunconjuntodeprogramasquepermiten el almacenamiento,modificación y extracciónde la información enunabasededatos.
TFC
5
2.1.3 Referencias ‐ Asignaturasdelacarrera:Proyectos,Basesdedatos,Estructurasdecomputadores,Protocolosyaplicaciones,Programación,Sistemas,Seguridad…
‐ EspecificaciónderequisitossegúnelestándarIEE830‐1998.
2.2 Descripción general
2.2.1 Perspectiva de la aplicación Laaplicacióndesarrolladapretendedarinformacióngeneralsobreelcolegioasícomoinformaciónmás específica para cada tipo de usuario que esté registrado. Se podráacceder a la aplicación desde cualquier sistema operativo y dispositivo, que tengaconexiónaInternetutilizandounnavegadorweb.
2.2.2 Funciones del producto Acontinuaciónsemuestranlasfuncionesqueconformanlaaplicación.Se establecen cinco áreas diferenciadas en la página principal de la aplicación, quepermitiráelaccesodirectoa:
FACTURACION:Datosrelativosaventasyperiodosdetiempo. RANKINGARTICULOS:Datosrelativosaartículosmásvendidosyperiodosde
tiempo. FIDELIZACION:Informaciónrelativaalprogramadefidelizacióndelaempresa
que incluyemovimientosde los clientesencuantoa recargaseneuros comopuntosobtenidosyconsumidos,relativoalperiododetiemposeleccionado.
FICHASDECLIENTE:Sedebepodermodificarlosdatospersonalesrelativosala ficha del cliente, accediendo a ellosmediante la numeración de seis cifrasquetienecada“tarjetadefidelización”.
REGISTRODEENTRADASYSALIDAS:Informaciónrelativaalfichajedetodoslosempleadosporcentro,únicamenteserequieredeldíaencurso.
TFC
6
DIAGRAMAFUNCIONAL
2.2.3 Restricciones Parapoderconectarseconelsitioweb,esnecesarioundispositivoconnavegadoryconexiónainternet,siseaccededesdefueradelaredlocal.
2.2.4 Supuestos Y Dependencias Estamosanteunaarquitecturaclient‐server.Laaplicaciónnorequeriráunhardwareosoftware especifico por parte del cliente, únicamente cumplir las restriccionesanterioresmencionadas.Porpartedelservidor,utilizaremoselquetieneactualmentelaempresaenlacentral,yaquetienecapacidadmásquesuficienteparacumplirsucometido.Detalle servidor:
DELL PowerEdge R420 TPM�Intel Xeon E5-2420 1.90GHz, 15M Cache, 7.2GT/s QPI, Turbo, 6C. SO:Windows server 2012 Std. SGBD: SQL SERVER2008
SeconfiguraráelroldeservidorwebyconfiguraráPHP5.4.9.
PAGINA PRINCIPAL
FACTURACIONREGISTROS FICHAJES
RANKING ARTICULOS
FIDELIZACIONFICHAS
CLIENTE
PERIODO TIEMPO
LOCAL
RESULTADO
RESULTADO
ENTRADA MANUAL
GUARDAR BBDD
OBTENCIONDATOS
UPDATE
RESULTADO
TFC
7
2.3 INTERFACES
2.3.1 Interfaz principal de usuario Esteseráeldiseñodelainterfazgráficaconlaqueactuaráelusuario:
2.3.2 Interfaz de hardware Alserunaaplicaciónweb,funcionarásobrecualquierdispositivoysistemaoperativo.
2.3.3 Interfaz de software Funcionarácorrectamentesobrecualquierdispositivoconnavegadorwebyconexiónainternet.
2.3.4 Interfaz de comunicaciones LasconfiguracionesserealizaránatravésdelprotocoloHTTP,atravésdeTCP/IPenelpuerto8080.
2.3.5 Requerimientos de eficiencia
TFC
8
Losfactoresqueinfluiránenelrendimiento,seránprincipalmente:
1. Capacidaddeprocesodelservidoramedidaquecrecelabasededatos.2. Optimizacióndefuturasconsultas.3. Velocidaddeaccesoainternetporambaspartas(clienteyservidor)
Hoyendíael servidorqueutilizará laempresa,paraestepropósitoesmásque
suficienteparaofreceresteservicio.De igualmodo, lasvelocidadesdeconexiónofrecidasporlosISP,garantizanunbuenrendimiento.
2.4 OBLIGACIONES DE DISEÑO
2.4.1 Estándares cumplidos El procedimiento empleado desde el inicio del diseño ha intentado mantener laindependenciadelcódigo,parafacilitarsufáciladaptaciónadiferentesdispositivos.Sehanadecuadolosestándaresdelosnavegadoresmáshabitualesylapropiaestructuramodular y muy parametrizada favorecerá la incorporación de nuevos filtros yversiones.
2.4.2 Limitaciones hardware Elservidorylosequiposqueintervienendelascomunicaciones,deberánestaron‐lineininterrumpidamenteparapoderteneraccesoalainformación.
2.4.3 Facilidades de mantenimiento Únicamente se debe realizar elmantenimiento propio de la base de datos, como lacompactaciónyre‐indexaciónperiódica.Estomejorarálaeficiencia.
2.4.4 Tecnologías utilizadas Partiendo de la estructura ya creada por el software que utiliza la empresa en elámbito de la facturación, hemos desarrollado sobre la base de datos común SQLSERVER.El lenguajeutilizadoprincipalmenteesPHP,dentrodelsehanencapsuladolasconsultasSQL,accediendoalmotordelabasededatosmedianteOBDC.
3. INSTALACIÓN Y CONFIGURACIÓN DEL ENTORNO
3.1 Tipología de la red Este es el diseño actual de la red de Nextcoffee, a partir de aquí, se procede aconfigurar o instalar los elementos necesarios que permitan el funcionamientocorrectodelaaplicación.
TFC
9
3.2 Instalación de servidor Web IIS 8 A continuación sedetallan los pasos y procedimientos básicos para añadir el rol deservidorWeb.Estas son las características básicas del servidor donde quedará funcionando laaplicación.
OFICINA CENTRAL NEXTCOFFEE SL
FirewallNeron.nextco.local
Centro trabajo N
Router
Internet
WEB SERVERBBDD
sever.nextco.local
LAN
TDM
ACCESO WEB
TFC
Prop
DesddirecdeW
Se vinicia
piedadesde
de el panelctamente seWindows,se
verifica queados:
lservidor:
de controleleccionamencargará
e el servido
l se agregaos los servdedejarlof
or web est
a el nuevo rvicios necesfuncionand
ta está en
rol que sesarios paradosinmásq
línea y los
erá servidosu ejecució
quehacer.
s servicios
r web (IISón, el insta
de public
10
8), ylador
ación
TFC
11
Verificamosatravésdelnavegadorqueelserviciofunciona:
3.3 Instalación de PHP 5.4
1. AccedemosalaplataformawebdeinstalacióndeWindows:
2. SeleccionamoselproductoainstalarPHP5.4.9:
TFC
12
3. Seleccionamos también las siguientes herramientas para realizar la conexión
conlaBD:
La plataforma de Windows se encarga de configurar los complementosautomáticamente.
VerificamosquePHPestáfuncionando,paraellocolocamosenlarutapordefectodelservidorWeb(c:\\inetpub\wwwroot)unarchivoconextensión.phpconelcontenido“<?phpphpinfo()?>”Al acceder desde el navegador, vemos que efectivamente, ya tenemos funcionandonuestroservidorWebconlaextensiónPHP.
3.4 Creación usuario acceso a SQL SERVER 08 EsnecesariocrearunusuariodeaccesoaSQLSERVER,enestecasosecreaelusuarioPHP,desdeel cliente "SQLSERVERManagementStudio2012”.AlusuarioPHPSe leconceden los permisos necesarios en la BD sobre la que operaremos(DILORENZOMNG), es la BD que contiene todos los datos relativos a la facturación,que deberemos desgranar y publicar on‐line. Por lo tanto esta será su BDpredeterminada y el idioma predeterminado Spanish. Esto es importante para elOBDCyelformatodeciertoscampos,enespeciallos“Datetime”.
TFC
3.5 CDesdAdmnomSem
Creación y c
de el menministraciónbre“sql”pa
muestraenla
configurac
ú de admde origen
araeluser“
aimagen:
ión ODBC
ministraciónde datos O“php”contr
n de WindODBC (32baelpropio
dows 2012bits), se creservidor,p
, con la hea un DSNorlotanto
herramientde sistema“localhost”.
13
ta dea, con.
TFC
14
3.6 Configuración firewall para permitir el acceso al puerto 8080 de server. El firewall “neron.nextco.local” funciona sobre clearOS, una distribución de Linuxespecialmentediseñadaparadesarrollarestetipodefunciones.Simplementeseañadeelpuerto8080deservercomopermitido.
TFC
4. D
4.1 IEnelmodes eldatopreteindepFigur
ISEÑO
ntroducció
lprocesodeladoconcel comúnmes). Estemoende ser unpendenciae
raderefere
ón
dediseñoseeptualyfunente conociodelo de arn sistemamencapauna
enciaalmod
eorganizayncional. Elido como mrquitectura,modular amadelascap
delodedes
yajustatodmodeloelemodelo de es elmásmpliable y aas.
arrollopor
doslosaspeegidopara3 capas (pválido paral estar bas
capas,reco
ectosdetectllevaracabpresentacióanuestro psado enwe
omendadop
tadosduranboeldesarn, de negoproyecto yaeb, otorga c
porMicroso
15
nteelrrollo,ocio ya quecierta
oft:
TFC
4.2 CEstacomunegoAlgu
Capa de pre
es la capaunicainformocio,sueles
nosejempl
esentación
a que intermaciónylaerlamásgr
osenlaapl
n
ractuará coacaptura.Eráficayami
icación:
n el usuariEstacapaseigablepara
io, presentaecomunicaelusuario.
a el sistemúnicament
ma al usuarteconlacap
16
rio, lepade
TFC
4.3 CEneprocestabEstaresulparalógicinterEjem
Capa de ne
stacapa, seeso. Se deblecentodacapa se coltadosycoalmacenarca para la vraccionesde
mploaplicac
gocio o lóg
e reciben lanomina aaslasreglasomunica con la capadrorecupervalidacióneusuarios.
ciónenelap
gica de la a
aspeticionemenudo dequedebenon la de prdedatospaardatos.Uen la entra
partadofich
plicación
esdelusuae lógica decumplirse.resentación,arasolicitarUna interfacada de cam
hasdeclient
arioy seenel negocio, para recibralgestordcedeusuarmpos, cálcul
te:
nvían las reya que es
bir solicitude labaseiorobustalos en tiem
espuestas tr aquí dond
des y presdedatosasnecesitará
mpo real u
17
raselde se
entarsí seade laotras
TFC
18
Visualmenteparaelusuario:card.php
card2.php
card3.php
TFC
card4
4.4 CEnescon“DILEjem
El panter
4.php
Capa de pe
stacapaenel repositORENZOMN
mplodeacce
roceso, seriorclase(c
rsistencia o
contramostorio de dNG”.Directa
esoadatos
encarga dcard3.php)
o datos
todosloscdatos, enamente“co
“card4.php
e recuperayactualizar
componenteeste caso
onectada”co
”:
ar los datorlabasede
esdesoftwa con la bonlacapad
os introducedatosconu
are(códigobase de ddenegocio.
idos por eunupdate.
o)queinterdatos. Prin
el usuario
19
actúancipal
en la
TFC
20
5. IMPLEMENTACIÓN
5.1 Tecnologías utilizadas en el desarrollo XHTML, Siglasdel inglés eXtensibleHyperTextMarkupLanguage. XHTMLes
básicamente HTML expresado como XML válido. Es más estricto a niveltécnico,peroestopermitequeposteriormenteseamásfácilalhacercambiosobuscarerroresentreotros. . SuobjetivoesavanzarenelproyectodelWorldWideWebConsortiumdelograrunawebsemántica,dondelainformación,ylaformadepresentarlaesténclaramenteseparadas
CSS,hojasdeestiloencascadao(CascadingStyleSheets)hacenreferencia
a un lenguaje de hojas de estilos usado para describir la presentaciónsemántica (el aspecto y formato) de un documento escrito en lenguaje demarcas.AlgunasventajasdeutilizarCSSson:
Controlcentralizadodelapresentacióndeunsitiowebcompletoconloqueseagilizadeformaconsiderablelaactualizacióndelmismo.
Separacióndelcontenidode lapresentación, loquefacilitaalcreador,diseñador, usuario o dispositivo electrónicoquemuestre la página, lamodificacióndelavisualizacióndeldocumentosinalterarelcontenidodelmismo,sólomodificandoalgunosparámetrosdelCSS.
Mejora en la accesibilidad del documento, pues con el uso del CSS seevitan antiguas prácticas necesarias para el control del diseño (comolas tablas),yque ibanenperjuiciodeciertosusosde losdocumentos,por parte de navegadores orientados a personas con algunaslimitacionessensoriales.
PHP es un lenguaje de programación de uso general de código del lado delservidordiseñadoparaeldesarrollowebdecontenidodinámico.Puedeserdesplegadoenlamayoríadelosservidoreswebyencasitodoslossistemas operativos y plataformas sin costo alguno. El lenguaje PHP seencuentra instalado enmás de 20millones de sitios web y en unmillón deservidores.
SQL, el lenguajede consultaestructurado (por sus siglasen inglés structuredquery language) es un lenguaje declarativo de acceso a bases de datosrelacionalesquepermiteespecificardiversostiposdeoperacionesenellas.Unade sus características es el manejo del álgebra y el cálculo relacional quepermiten efectuar consultas con el fin de recuperar de forma sencillainformacióndeinterésdebasesdedatos,asícomohacercambiosenella.
Adobe Dreamweaver, es una aplicación en forma de estudio que está
destinada a la construcción, diseño y edición de sitios, videos y aplicacionesWebbasadosenestándares. Lagranventajadeeste editor sobreotros es su
TFC
21
granpoderdeampliaciónypersonalizacióndelmismo,actualmentemantieneel90%delmercadodeeditoresHTML.
Server Management Studio 2012 es un entorno integrado para obteneracceso, configurar, administrar y desarrollar todos los componentes de SQLServer. SQL Server Management Studio combina un amplio grupo deherramientas gráficas con una serie de editores de script enriquecidos quepermiten a desarrolladores y administradores de todos los niveles obteneraccesoSQLServer.
5.2 Estructura de la aplicación Laaplicaciónsehadesarrolladoconestructuradeprogramaciónorientadaaobjetos.Demaneraqueresultesencillosuampliaciónomejora.o Porunladotenemoslosarchivosqueaglutinanlasfuncionesprincipales,estos
son:
conect.inc El archivo “conect.inc” incluye las funcionesde conexiónydesconexióna labasededatos.Esteprocesoseejecutaunsinfíndevecesenlaaplicaciónyaqueelobjetivoesobtenersiemprelosdatosmásactualizadosposibles(tiemporeal).
rpant.inc El archivo “rpant.inc” incluye las funciones que permiten visualizar el resultado deformaamigableparaelusuario.Esnecesario estructurar las salidas indeterminadasqueproducenciertasconsultasalabasededatos.
graph.php El archivo “graph.php” incluye la función que permite la visualización de graficodinámico, que se visualiza en los resultados de algunas consultas, utilizando laslibreríasdelcomplementoJGraph.
TFC
22
o Porotroladotenemostodoslosarchivosphppropiosdecadapartedenuestra
aplicación, además del index.php que muestra también la hora local delservidor para interpretar correctamente los resultados desde otras zonashorarias.
PAGINAPRINCIPAL:FACTURACION:
DAILY.php DAILYGLOBAL.php MONTHLY.php MONTHLYGLOBAL.php WEEKLY.php
WEEKLYGLOBAL.php YEARLY.php YEARLYGLOBAL.php CONTROLFICHAJES:
CONTROLCLOCK.PHP RANKINGARTICULOS:
RANKYEARLYGLOBAL.PHP RANKDAILY.PHP RANKDAILYGLOBAL.PHP
RANKMONTHLY.PHP RANKMONTHLYGLOBAL.PHP RANKWEEKLY.PHP
RANKWEEKLYGLOBAL.PHP RANKYEARLY.PHP
index.php
TFC
23
FIDELIZACION:
FIDELITYYEARLYGLOBAL.php FIDELITYDAILY.php FIDELITYDAILYGLOBAL.php
FIDELITYMONTHLY.php FIDELITYMONTHLYGLOBAL.php FIDELITYWEEKLY.php
FIDELITYWEEKLYGLOBAL.php FIDELITYYEARLY.php FICHASDECLIENTE:
card4.php card.php card2.php card3.php
5.3 Estructura del código
5.3.1 Capa de presentación Acontinuaciónsedetallaunodelosficherosqueconformanlacapadepresentación,encadapartedelcódigoañadiréuntextoexplicativo.<!DOCTYPE html PUBLIC "‐//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1‐transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp‐equiv="Content‐Type"content="text/html;charset=ISO‐8859‐1"/><title>..:NextCo:..</title></head><styletype="text/css">a:link{ color:#000; text‐decoration:none;}a:visited{ text‐decoration:none; color:#000;}a:hover{ text‐decoration:none;}a:active{ text‐decoration:none;}body{ background‐image:url(fondo.gif); background‐repeat:no‐repeat;}</style></head>
TFC
24
En esta primera parte de código se establecen los estándares utilizados, titulo y se
defineelcomportamientoyaspecto(imagendefondo…)conformandolaCSS.</blockquote></PRE><br><br><blockquote><tablewidth="248"height="267"align="center"cellpadding="1"cellspacing="6"bgcolor="#6699CC"><tr><thwidth="82"scope="row"><divalign="center">SEMANA</div></th><tdwidth="66"><strong>TICKETS</strong></td><tdwidth="62"><divalign="center"><strong>VENTAS</strong></div></td><tdwidth="62"><strong>T.MEDIO</strong></td></tr><tr><thscope="row"><divalign="center"><strong><input type = "text" readonly="readonly" name = "HOYFECHA" size = "2" maxlength = "2"value= "<?phpecho($result13);?>"/></strong></div></th><td><divalign="center"><input type = "text" readonly="readonly" name = "HOY2" size = "3" maxlength = "10"value= "<?phpecho($result14);?>"/></div></td></div></td></tr></table><p> </p><center><imgsrc="temp/file.jpg"width="450"height="250"/></center><FORM><palign="center"><inputtype="button"value="Inicio"style="color:#03c;border:3pxsolid#03c;padding:2px5px;"onclick="location.href='index.php'"> <inputtype="button"value="Salir"style="color:#0;border:3pxsolid#FF0000;padding:2px5px;"onclick="window.close();"/></p></form></blockquote></blockquote></FORM></body></html>
**Se han omitido trozos de código semejantes para facilitar la comprensión de estedocumento.
TFC
25
Enestasegundapartedecódigosedefinelatabladondesemostraránlosresultadosobtenidos, de las consultas a la base datos, así como los botones de navegación(JavaScript).Especialatenciónalalínearemarcadaenamarillo.Sufunciónespublicarlaimagenquehageneradolafunción“GenGraph”apartirdelosdatosprocedentesdelresultadodelaconsultaSQL.
5.3.2 Capa de negocio o lógica de la aplicación Dentrodelmismofichero,pasoadetallardelamismaformalapartecorrespondientealacapadenegocio.<body><h1 align="center"><strong><img src="logofondo.gif" width="406" height="67"/></strong></h1><h4align="center">VENTASSEMANALES</h4><?phpinclude('conect.inc');include('rpant.inc');include('graph.php'); $Iden=$_GET["Iden"];{$link=Connecta("sql","PHP","masterkey");//Semana1$SQL = "SELECTROUND(SUM(TOTALNETO),2,3)asventas,REPLACE(COUNT(TOTALNETO),',','.') astickets,REPLACE(ROUND(AVG(TOTALNETO),2,3),',','.')asavg";$SQL.="FROMfacturasventa";$SQL.="WHEREDATEDIFF(week,fecha,GETDATE())=0ANDCAJA='$Iden'";$CONS=odbc_exec($link,$SQL);$result10=trim(odbc_result($CONS,"ventas"));$result18=trim(odbc_result($CONS,"avg"));$result14=trim(odbc_result($CONS,"tickets"));$SQL="selectdatename(week,(fecha))asweek,fecha";$SQL.="FROMfacturasventa";$SQL.="WHEREDATEDIFF(week,fecha,GETDATE())=0GROUPBYFECHA";$CONS=odbc_exec($link,$SQL);$result13=trim(odbc_result($CONS,"week"));odbc_free_result($CONS);}$arrayticketsavg=array($result58,$result48,$result38,$result28,$result18);$arraysemanas=array($result53,$result43,$result33,$result23,$result13);$ydata=$arrayticketsavg;$totaldias=$arraysemanas;$legend=("TicketMedio"); GenGraph($ydata,$totaldias,$legend) ?>**Se han omitido trozos de código semejantes para facilitar la comprensión de estedocumento.
TFC
Enequedelalacopropporlgene
5.3.3Enes
6. EVCominterporvalidUtilizCom
stapartedcontienenlaURL,delaonexiónmedpia consultalamisma,serelaimage
3 Capa de pe
stecasoesl
VALUACIÓ
o última frnacionalesparte de ldación.
zaremoshtt
ovemosel
elcódigo,plosmétodoatributoquediantelafua SQL dentreformateanenconunfo
ersistencia o
lapropiata
ÓN
fase del prmásactualas organiz
tp://jigsaw
resultadoe
prácticamensanteriormeidentificaunciónConnro del formnparaqueormatoamig
o datos
ablaalaque
royecto, veles.Paraeszaciones co
w.w3.org/cs
estotalment
nteensutomentedescrelcentrodnectaatravmato que realenviarlogableyadec
eestamosa
erificaremoste fin,exisompetentes
s‐validator/
tesatisfacto
otalidadPHritos;seestdetrabajo(vvésdelOBDequiere PHPosparámetrcuadopara
accediendo“
os su calidtendiferens, que nos
/
orio:
HP,seincluytablecevalovariableIdeDC.DespuésP, los resulrosalafunelusuario.
“facturasve
dad contrantesherramrealizaran
yenlosarcor,extrayénen)yseefsseencapsultados devunciónGenG
enta”.
los estándmientasgratn la funció
26
hivosndolofectúaulalaueltosGraph,
darestuitasón de
TFC
7. VPartiquepuedHa srelacprimpasobeneactuaunidinfor
8. BI‐Wik‐Pág‐Com‐We‐Gui
IABILIDAD
iendodelala empresadeobservarido una cifcióncoste‐rmerañodevosolamenteeficio iniciaalizada, muadesdenegrmación.
IBLIOGRAF
kipedia,laginaoficialmunidaddebClientSoiaIEEEder
D ECONÓM
basedequa tenía estreneldesglfra total varesultado,evida,yaqueeaunaverifal intangibuy necesargocio,sinp
FÍA
enciclopedldePHPdeprogramoftwareFacrequerimie
MICA
uenosehate servidorlosedefuncalorada consmuypositeseprescindficacióndeble muchoria para cperdertiem
dialibre.
madoresctoryentossw
tenidoquer funcionanciones,enun la direcciótiva.Partiendirádeauddatosanua mayor, ycorregir tenmponineces
www
http:
ecomprarnndo, he valountotalde5ón de la emndodelabaditoríasexteal.Apartedya que pendencias nsitarperson
w.wikipediahttp://phttp://sthttp://m
//www.iee
nihardwarorado mi tr5520€.mpresa y pasequeseaernasfrecuedeestocreeermite tennegativas rnalqueext
a.orghp.net/tackoverflomsdn.microee.org
enisoftwarabajo, com
pensamos qamortizaráentes,paraemosquehaner informrespecto deraigaytabu
ow.com/osoft.com
27
areyamo se
que laeneldejarayunacióne lasulela
TFC
28
9. CONCLUSIÓN
9.1 Valoración personal
Mi valoración personal en conjunto es muy satisfactoria. Durante el proceso dedesarrolloypuestaenmarcha,sehantratadomuchospuntosdevariasasignaturasdela carrera, siendo esta mi primera inclusión en un proyecto tan centrado enprogramaciónweb.Mehasorprendidoelalcanceylamultituddeoportunidadesquepuedeofrecerellenguajeservidorsinponerenriesgolosdatos,yaquepuedeslimitarfácilmentelosmovimientosdelusuario.
Mealegrodehaberseguidolasrecomendacionesdeltutoryrealizaresteproyectoenunámbitorealconaplicacióndirecta.Yahacesemanasqueseestáutilizandoenfasebeta,conmuybuenosresultados;dehecho,eldesarrolloeimplementaciónenlarestadelocalesfranquiciadosempezaráelmesqueviene.
9.2 Principales problemas encontrados.
Elprincipalproblemasinlugaraduda,hasidoeltiempopararealizarelproyecto.Estohaprovocadomuchasprisasycuandotienesqueconsensuarconotraspersonasdelaorganización las expectativas y resultados, no es fácil ceñirte a un calendario tanestático.Técnicamentenohe tenidograndesproblemas,másalláde tenerqueprogramarenPHP,un lenguajequeapenasconocíadelquehaymuchasversionesycambiosentreellas;hededecirnohe llegadoaencontraruneditorágil, comosi lohayparaotroslenguajes.Porotroladoelserunlenguajevivohaymultituddeforosenlareddondeencontrarsoluciónalosproblemashabituales.Otradificultadimportantehasidoeltrabajarsobreunabasededatoscreadaporuntercero,locualhaprovocadotenerquehacermultituddeadaptacionesyformateodelosdatos,paraposteriormentepoderutilizarlos.
10. EVOLUCIÓN DEL PROYECTO
10.1 Listado de actividades y costes
10.2 Diagrama de Gantt
% Complete
Planned Start
# Predecessors
Flag Status
Given Planned Work
Planned Utilization
Actual Costs
TitleInfo#
TFC - ACTIVITIES ANTONIO JIMENEZ V. TFC 12/06/2013 16:40
0 APLICACION WEB 5.520,00€ 35% 24/02/13 100%
1 INICIO 0% 24/02/13 100%
3 Fase de Evaluación 100% 3 days 1 27/02/13 100%
4 Brainstorming 100% 2 days 27/02/13 100%
5 Documentar ideas y plan de trabajo 100% 1 day 4 01/03/13 100%
6 Preparación de entorno (SERVER) 240,00€ 16% 6 days 06/03/13 100%
7 Instalacion Software 240,00€ 80% 2 days 06/03/13 100%
8 IIS,SQL,PHP, FIREWALL 240,00€ 100% 2 days 06/03/13 100%
10 Entorno Probado 0% 6 23/03/13 100%
12 Fase de Concepción 1.440,00€ 83% 32 04/03/13 100%
13 Diseño Interface usuario 1.200,00€ 100% 04/03/13 100%
14 Diseño html,php Dreamweaver 1.200,00€ 100% 10 days 04/03/13 100%
16 Definición de funcionalidad 240,00€ 100% 10 days 13 18/03/13 100%
17 Reunión usuarios 240,00€ 100% 2 days 18/03/13 100%
19 Fase de Desarrollo 3.840,00€ 84% 12 01/04/13 100%
20 Diseño Flujo y pseudocódigo 120,00€ 100% 01/04/13 100%
21 Acceso a la BBDD 120,00€ 100% 1 day 01/04/13 100%
23 Diseño Back end 360,00€ 100% 20 03/04/13 100%
24 ODBC, Seguridad 360,00€ 100% 3 days 03/04/13 100%
26 Diseño de Funciones 2.400,00€ 100% 23 15/04/13 100%
27 Funciones PHP 2.400,00€ 100% 20 days 15/04/13 100%
29 Diseño y adaptación GUI 960,00€ 100% 26 13/05/13 100%
30 Visualización y control errores 960,00€ 100% 8 days 13/05/13 100%
32 Decisión de pasar a siguiente fase 0% 3 04/03/13 100%
34 Control de especificaciones completadas 0% 19 26/05/13 100%
36 Fase de testeo 26% 34 29/05/13 100%
44 Finalización de Proyecto 0% 36 13/06/13 100%
21 22 23 24 25 26 27 28 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20WK 8, febrero 2013 WK 9, febrero 2013 WK 10, marzo 2013 WK 11, marzo 2013 WK 12, marzo 2013 WK 13, marzo 2013 WK 14, abril 2013 WK 15, abril 2013 WK 16, abril 2013
TFC - ACTIVITIES ANTONIO JIMENEZ V. TFC 12/06/2013 16:43
APLICACION WEB
INICIO A.J.V.
Fase de Evaluación
Brainstorming 2 days
Documentar ideas y plan de trabajo 1 day
Preparación de entorno (SERVER)
Instalacion Software
IIS,SQL,PHP, FIREWALL 2 days A.J.V.
Entorno Probado A.J.V.
Fase de Concepción
Diseño Interface usuario
Diseño html,php Dreamweaver 2 weeks A.J.V.
Definición de funcionalidad
Reunión usuarios 2 days A.J.V.
Fase de Desarrollo
Diseño Flujo y pseudocódigo
Acceso a la BBDD 1 day A.J.V.
Diseño Back end
ODBC, Seguridad 3 days A.J.V.
Diseño de Funciones
Funciones PHP 1 month
Decisión de pasar a siguiente fase A.J.V.
20 21 22 23 24 25 26 27 28 29 30 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15WK 16, abril 2013 WK 17, abril 2013 WK 18, mayo 2013 WK 19, mayo 2013 WK 20, mayo 2013 WK 21, mayo 2013 WK 22, mayo 2013 WK 23, junio 2013 WK 24, junio 2013
TFC - ACTIVITIES ANTONIO JIMENEZ V. TFC 12/06/2013 16:43
1 month A.J.V.
Diseño y adaptación GUI
Visualización y control errores 1,6 weeks A.J.V.
Control de especificaciones completadas A.J.V.
Fase de testeo 1,2 weeks A.J.V.
Finalización de Proyecto A.J.V.
TFC
30
10.3 Diagrama de red
Diseño y adaptación GUIWork: 1,6 weeksStart: 13/05/13Com: 1End: 22/05/13
Res: A.J.V.
Fase de ConcepciónWork: 2,4 weeksStart: 04/03/13Com: 1End: 23/03/13
Res: A.J.V.
Funciones PHPWork: 1 monthStart: 15/04/13Com: 1End: 10/05/13
Res: A.J.V.
Diseño Interface usuarioWork: 2 weeksStart: 04/03/13Com: 1End: 18/03/13
Res: A.J.V.
Diseño html,php DreamweaverWork: 2 weeksStart: 04/03/13Com: 1End: 18/03/13
Res: A.J.V.
Documentar ideas y plan de trabajoWork: 1 dayStart: 01/03/13Com: 1End: 04/03/13
Control de especificaciones complet…Start: 26/05/13
Com: 1End: 26/05/13Res: A.J.V.
Fase de DesarrolloWork: 1,6 monthsStart: 01/04/13Com: 1End: 22/05/13
Res: A.J.V.
BrainstormingWork: 2 daysStart: 27/02/13Com: 1End: 01/03/13
Definición de funcionalidadWork: 2 daysStart: 18/03/13Com: 1End: 20/03/13
Res: A.J.V.
Diseño Back endWork: 3 daysStart: 03/04/13Com: 1End: 08/04/13
Res: A.J.V.
Fase de testeoWork: 1,2 weeksStart: 29/05/13Com: 1End: 13/06/13
Res: A.J.V.
Finalización de ProyectoStart: 13/06/13
Com: 1End: 13/06/13Res: A.J.V.
Diseño Flujo y pseudocódigoWork: 1 dayStart: 01/04/13Com: 1End: 01/04/13
Res: A.J.V.
IIS,SQL,PHP, FIREWALLWork: 2 daysStart: 06/03/13Com: 1End: 08/03/13
Res: A.J.V.
APLICACION WEBWork: 2,75 mo…Start: 24/02/13Com: 1End: 13/06/13
Res: A.J.V.
Decisión de pasar a siguiente faseStart: 04/03/13
Com: 1End: 04/03/13Res: A.J.V.
Instalacion Software Work: 2 daysStart: 06/03/13Com: 1End: 09/03/13
Res: A.J.V.
Preparación de entorno (SERVER)Work: 2 daysStart: 06/03/13Com: 1End: 23/03/13
Res: A.J.V.
Acceso a la BBDDWork: 1 dayStart: 01/04/13Com: 1End: 01/04/13
Res: A.J.V.
Diseño de FuncionesWork: 1 monthStart: 15/04/13Com: 1End: 10/05/13
Res: A.J.V.
Fase de EvaluaciónWork: 3 daysStart: 27/02/13Com: 1End: 04/03/13
Visualización y control erroresWork: 1,6 weeksStart: 13/05/13Com: 1End: 22/05/13
Res: A.J.V.
ODBC, SeguridadWork: 3 daysStart: 03/04/13Com: 1End: 08/04/13
Res: A.J.V.
INICIOStart: 24/02/13
Com: 1End: 24/02/13Res: A.J.V.
Entorno ProbadoStart: 23/03/13
Com: 1End: 23/03/13Res: A.J.V.
Reunión usuariosWork: 2 daysStart: 18/03/13Com: 1End: 20/03/13
Res: A.J.V.
TFC
32
11. ANEXOS
11.1 Técnicos
11.1.1 Código de función de conexión
C:\Users\TONI\Desktop\conect.inc martes, 11 de junio de 2013 17:23
<?php/* *************************************************************
**** Retorna l'establiment de la connexió a la BD. *****************************************************************/
function Connecta($BD,$login,$clau){ $conx = odbc_connect($BD,$login,$clau); if (!$conx) { echo ("Error al connectar " + $conx ); exit ("error"); }return ($conx);
}/* *************************************************************
**** Desconnecta l'establiment de la connexió a la BD. *****************************************************************/
function DesConnecta(&$conx){ odbc_close($conx);}
?>
-1-
TFC
34
11.1.2 Código de función gráficos
C:\Users\TONI\Desktop\graph.php miércoles, 12 de junio de 2013 16:10
<?phpinclude ("jpgraph/src/jpgraph.php");include ("jpgraph/src/jpgraph_line.php");
function GenGraph ($ydata,$totaldias,$legend) {
// Create the graph. These two calls are always required $graph = new Graph(450,250,"auto");$graph->SetScale('textlin',"auto","auto");$graph->img->SetAntiAliasing();$graph->xgrid->Show();
// Create the linear plot $lineplot=new LinePlot($ydata);$lineplot->SetColor("black");$lineplot->SetWeight(2);$lineplot->SetLegend($legend);
// Setup margin and titles $graph->img->SetMargin(45,20,20,45);$graph->title->Set("Evolución");//$graph->xaxis->title->Set(""); $graph->xaxis->SetTickLabels($totaldias);
//$graph->yaxis->title->Set(""); $graph->ygrid->SetFill(true,'#EFEFEF@0.5','#F9BB64@0.5');
// Add the plot to the graph $graph->Add($lineplot);@unlink("./temp/file.jpg");
// Display the graph $graph->Stroke("./temp/file.jpg");}?>
-1-
TFC
36
11.1.3 Código de funciones de visualización de resultados
C:\Users\TONI\Desktop\rpant.inc martes, 11 de junio de 2013 17:20
<?php/* car_camps($pConx,$pCamps,$pTaula,$pClau)
Funció per carregar els camps d'una taula en una Select$pConx : Connexió a la Base de Dades.$pCons : Part SELECT de la consulta.$pTaula: Nom de la taula.$pClau : Camp identificador.
*/function car_camps($pConx,$pCamps,$pTaula,$pClau){ $pCons = "SELECT ".$pCamps ; $pCons .= " FROM ".$pTaula ; $pCons .= " WHERE ".$pClau." = 0"; $cursor = odbc_exec($pConx,$pCons); $num = 1; $cols = odbc_num_fields($cursor); while ($num <= $cols) { $camp = odbc_field_name($cursor,$num); echo "<option value='".$camp."'>".$camp."</option>\n"; $num++; }// Alliberem el cursor.odbc_free_result($cursor);
}
/* car_llis($link,$PSql,$Iden,$Camp)
Funció que carrega una llista de valors dins d'un select$link: Connexió a la base de dades.$PSql: Cadena amb la consulta SQL.$Iden: Identificador de cada valor de la llista.$Camp: Camp que volem visualitzar per pantalla. */
function car_llis($link,$PSql,$Iden,$Camp){ $Result= odbc_exec($link,$PSql); while(odbc_fetch_row($Result)) { $V_Iden= odbc_result($Result,$Iden); $V_Camp= odbc_result($Result,$Camp); echo "<option value='".$V_Iden."'>".$V_Camp."</option>\n"; }
odbc_free_result($Result);}
/* car_llissel($link,$PSql,$Iden,$Camp,$Valor)
Funció que carrega una llista de valors dins d'un select$link: Connexió a la base de dades.$PSql: Cadena amb la consulta SQL.$Iden: Identificador de cada valor de la llista.$Camp: Camp que volem visualitzar per pantalla.$Valor: Valor que sortira seleccionat. */
function car_llissel($link,$PSql,$Iden,$Camp,$Valor){
-1-
C:\Users\TONI\Desktop\rpant.inc martes, 11 de junio de 2013 17:20
$Result= odbc_exec($link,$PSql); while(odbc_fetch_row($Result)) { $V_Iden= odbc_result($Result,$Iden); $V_Camp= odbc_result($Result,$Camp); if (strcmp($V_Iden,$Valor)==0) echo "<option selected value='".$V_Iden."'>".$V_Camp."</option>\n"; else echo "<option value='".$V_Iden."'>".$V_Camp."</option>\n"; }
odbc_free_result($Result);}
/* lstcamps($conx,$cons)
Funció que llista per pantalla els camps que vulguem$conx: Connexió a la base de dades.$cons: Cadena amb la consulta SQL.
*/
function lstcamps($conx,$cons){ $Result = odbc_exec($conx,$cons); // Pintem la capçalera echo "<table border='0' cellspacing='0' cellpadding='3' bgcolor='#567890'>\n"; echo "<tr>"; $num=1; $Col= odbc_num_fields($Result); while($num<=$Col) { $Campos= odbc_field_name($Result,$num); echo "<td align='left' valing='middle'>"; echo "<FONT face='Verdana' color='#FFFFFF' size='2'>"; echo "<strong>".$Campos."<strong></font></td>"; $num++; }
echo "</tr>";if (odbc_num_rows($Result)==0) {
echo "<tr><td valing='middle' align='left' bgcolor='#f2f2f2' colspan=4>"; echo "<font face='Verdana' size='2'>No hi ha Registres</font></td></tr>\n"; } else { while($Registro=odbc_fetch_row($Result)){ echo "<tr>"; for($i=1;$i<=$Col;$i++){ $Valor=odbc_result($Result,$i); If (empty($Valor)) { $Valor="-"; }
If (trim($Valor)=="") { $Valor="-"; }echo "\n<td valing='middle' align='left' bgcolor='#ffffff'>";if (odbc_field_type($Result,$i)=="bit"){
If (trim($Valor)=="-") { echo "<center><img src='/php/img/icon_of.gif'></center>"; }else{ echo "<center><img src='/php/img/icon_on.gif'></center>"; }
} else
-2-
C:\Users\TONI\Desktop\rpant.inc martes, 11 de junio de 2013 17:20
{ if (odbc_field_type($Result,$i)=="datetime") { $dia = substr($Valor,8,2); $mes = substr($Valor,5,2); $any = substr($Valor,0,4); $hora = substr($Valor,11,5); $Valor = $dia."-".$mes."-".$any; if (strcmp($hora,"00:00")!=0) $Valor .= " ".$hora; }
echo "<font face='Verdana' size='2'>".$Valor."</font>";}echo "</td>";
}echo "\n</tr>";
}}echo "\n</table>";// Alliberem el cursor.odbc_free_result($Result);
}
/* lstcamps_hyp($conx,$cons,$camp,$plana,$id)
Funció que llista per pantalla els camps que vulguem amb un enllaç$conx: Connexió a la base de dades.$cons: Cadena amb la consulta SQL.$camp: Camp on es vol produir l'enllaç$plana: Plana on enviem quan polsin l'enllaç$id: Identificador que passem a $plana per fer el where
*/
function lstcamps_hyp($conx,$cons,$camp,$plana,$id){ $Result = odbc_exec($conx,$cons); // Pintem la capçalera echo "<table border='0' cellspacing='0' cellpadding='5' bgcolor='#567890'>\n"; echo "<tr>"; $num=1; $Col= odbc_num_fields($Result); while($num<=$Col) { $Campos= odbc_field_name($Result,$num); if (strcmp($Campos,$camp)==0) $num_camp=$num; if (strcmp($Campos,$id)==0) $num_id=$num; else { echo "<td align='left' valing='middle'>"; echo "<FONT face='Verdana' color='#FFFFFF' size='2'>"; echo "<strong>".$Campos."<strong></font></td>"; }
$num++;}echo "</tr>";If (odbc_num_rows($Result)==0) {
echo "<tr><td valing='middle' align='left' bgcolor='#f2f2f2' colspan=4>"; echo "<font face='Verdana' size='2'>No hi ha Registres</font></td></tr>\n"; } else { while($Registro=odbc_fetch_row($Result)){
-3-
C:\Users\TONI\Desktop\rpant.inc martes, 11 de junio de 2013 17:20
echo "<tr>"; for($i=1;$i<=$Col;$i++){ $Valor=odbc_result($Result,$i); If (empty($Valor)) { $Valor="-"; }
If (trim($Valor)=="") { $Valor="-"; }if ($i==$num_id) $id=$Valor;else {
echo "\n<td valing='middle' align='left' bgcolor='#ffffff'>"; if ($i==$num_camp) { echo "<a href=\"".$plana."?Iden=".$id."\">$Valor</a></td>"; }
else{
if (eregi('@',$Valor)) { $Valor = trim($Valor); echo "<a href=\"mailto:$Valor\">$Valor</a>"; }
else{
if (odbc_field_type($Result,$i)=="bit") { If (trim($Valor)=="-") { echo "<center><img src='/php/img/icon_of.gif'></center>"; }else{ echo "<center><img src='/php/img/icon_on.gif'></center>"; }
}else {
if (odbc_field_type($Result,$i)=="datetime") { $dia = substr($Valor,8,2); $mes = substr($Valor,5,2); $any = substr($Valor,0,4); $hora = substr($Valor,11,5); $Valor = $dia."-".$mes."-".$any; if (strcmp($hora,"00:00")!=0) $Valor .= " ".$hora; }
echo "<font face='Verdana' size='2'>".$Valor."</font>";}echo "</td>";
}}
}}echo "\n</tr>";
}}echo "\n</table>";// Alliberem el cursor.odbc_free_result($Result);
}
/* lstgrup_hyp($conx,$cons,$camp,$plana,$id)
Funció que llista per pantalla els camps que vulguem amb un enllaç
-4-
C:\Users\TONI\Desktop\rpant.inc martes, 11 de junio de 2013 17:20
$conx: Connexió a la base de dades.$cons: Cadena amb la consulta SQL.$camp: Etiqueta on es vol produir l'enllaç$plana: Plana on enviem quan polsin l'enllaç$id: Identificador que passem a $plana per fer el where
*/
function lstgrup_hyp($conx,$cons,$camp,$plana,$id){ $Result = odbc_exec($conx,$cons);
echo "<table border='0' cellspacing='0' cellpadding='3' bgcolor='#567890'>\n"; echo "<tr>"; echo "<td align='left' valing='middle'>"; echo "<FONT face='Verdana' color='#FFFFFF' size='2'>"; echo "<strong>".$camp."<strong></font></td>"; echo "</tr>";
If (odbc_num_rows($Result)==0) { echo "<tr><td valing='middle' align='left' bgcolor='#f2f2f2' colspan=4>"; echo "<font face='Verdana' size='2'>No hi ha Registres</font></td></tr>\n"; }
else { while($Registro=odbc_fetch_row($Result)){ $Valor=odbc_result($Result,$id); echo "<tr><td valing='middle' align='left' bgcolor='#ffffff' colspan=4>"; echo "<td> <a href=\"".$plana."?Iden=".$Valor."\">$camp</a> </td>"; echo "\n</tr>"; }
}echo "\n</table>";// Alliberem el cursor.odbc_free_result($Result);
}
/* lstfitxa_hyp($conx,$cons,$camp,$plana,$id)
Funció que llista per pantalla en format de fitxa els camps que vulguem amb un enllaç$conx: Connexió a la base de dades.$cons: Cadena amb la consulta SQL.$camp: Camp on es vol produir l'enllaç$plana: Plana on enviem quan polsin l'enllaç$id: Identificador que passem a $plana per fer el where
*/
function lstfitxa_hyp($conx,$cons,$camp,$plana,$id){ $Result = odbc_exec($conx,$cons); If (odbc_num_rows($Result)==0) { echo "<table border='0' cellspacing='0' cellpadding='3' bgcolor='#567890'>\n"; echo "<tr>"; echo "<tr><td valing='middle' align='left' bgcolor='#f2f2f2' colspan=4>"; echo "<font face='Verdana' size='2'>No hi ha Registres</font></td></tr>\n"; echo "\n</table>"; } else { while($Registro=odbc_fetch_row($Result)){ echo "<table border='0' cellspacing='0' cellpadding='3' >\n";
-5-
C:\Users\TONI\Desktop\rpant.inc martes, 11 de junio de 2013 17:20
$Col= odbc_num_fields($Result); for($i=1;$i<=$Col;$i++){ $Campos= odbc_field_name($Result,$i); if (strcmp($Campos,$id)<>0) { echo "<tr>"; echo "<td align='left' valing='middle' bgcolor='#567890'>"; echo "<FONT face='Verdana' size='2' color='#FFFFFF' >"; echo "<strong>".$Campos."<strong></font></td>"; $Valor=odbc_result($Result,$i); If (empty($Valor)) { $Valor="-"; }
If (trim($Valor)=="") { $Valor="-"; }echo "<td valing='middle' align='left' bgcolor='#f2f2f2'>";if (strcmp($Campos,$camp)==0)echo "<a href=\"".$plana."?Iden=".$id."\">$Valor</a>";
else{
if (eregi('Foto',$Campos)) { $Valor = trim($Valor); echo "<img src='../../fotos/$Valor' width='50' height='70'"; }
else{
if (eregi('mail',$Campos)) { $Valor = trim($Valor); echo "<a href=\"mailto:$Valor\">$Valor</a>"; }
else{
if (odbc_field_type($Result,$i)=="bit") { If (trim($Valor)=="-") { echo "<center><img src='/php/img/icon_of.gif'></center>"; }else{ echo "<center><img src='/php/img/icon_on.gif'></center>"; }
} else { if (odbc_field_type($Result,$i)=="datetime") { $dia = substr($Valor,8,2); $mes = substr($Valor,5,2); $any = substr($Valor,0,4); $hora = substr($Valor,11,5); $Valor = $dia."-".$mes."-".$any; if (strcmp($hora,"00:00")!=0) $Valor .= " ".$hora; echo "<font face='Verdana' size='2'>".$Valor."</font>"; }
elseif (eregi('doc',$Campos))
{ $Valor = trim($Valor); echo "<a href=\"../../docs/$Valor\">$Valor</a>"; }
elseecho "<font face='Verdana' size='2'>".$Valor."</font>";
}}
-6-
C:\Users\TONI\Desktop\rpant.inc martes, 11 de junio de 2013 17:20
}}echo "</td>";echo "</tr>";
}}echo "</table>";echo "<br><br>";
}}// Alliberem el cursor.odbc_free_result($Result);
}
/* lstcheckcamps($conx,$cons)
Funció que llista per pantalla els camps que vulguemafegin un checkbox o radio.$conx: Connexió a la base de dades.$cons: Cadena amb la consulta SQL.$id: Identificador que passem a $plana per fer el where
*/
function lstcheckcamps($conx,$cons,$id){ $Result = odbc_exec($conx,$cons); // Pintem la capçalera
echo "<table border='0' cellspacing='0' cellpadding='3' bgcolor='#567890'>\n"; echo "<tr>"; $num=1; $Col= odbc_num_fields($Result);
echo "<td align='left' valing='middle'>"; echo "<FONT face='Verdana' color='#FFFFFF' size='2'>"; echo "<strong><strong></font></td>";
while($num<=$Col) { $Campos= odbc_field_name($Result,$num); if (strcmp($Campos,$id)==0) $num_id=$num; else { echo "<td align='left' valing='middle'>"; echo "<FONT face='Verdana' color='#FFFFFF' size='2'>"; echo "<strong>".$Campos."<strong></font></td>"; }
$num++;}echo "</tr>";If (odbc_num_rows($Result)==0) {
echo "<tr><td valing='middle' align='left' bgcolor='#f2f2f2' colspan=4>"; echo "<font face='Verdana' size='2'>No hi ha Registres</font></td></tr>\n"; } else { $j=1; while($Registro=odbc_fetch_row($Result)){ echo "<tr>"; echo "<td valing='middle' align='left' bgcolor='#f2f2f2'>";// echo "<input name='".trim(odbc_result($Result,1))."' type=checkbox nochecked>";
-7-
C:\Users\TONI\Desktop\rpant.inc martes, 11 de junio de 2013 17:20
echo "<input name='vector[$j]' type=checkbox nochecked>"; echo "<input name='vector_id[$j]' value='".trim(odbc_result($Result,1))."'
type=hidden>"; $j++; echo "</td>"; for($i=1;$i<=$Col;$i++){ $Valor=odbc_result($Result,$i); If (empty($Valor)) { $Valor="-"; }
If (trim($Valor)=="") { $Valor="-"; }if ($i==$num_id) $id=$Valor;else {
echo "\n<td valing='middle' align='left' bgcolor='#f2f2f2'>"; echo "<font face='Verdana' size='2'>".$Valor."</font></td>"; }
}echo "\n</tr>";
}}echo "\n</table>";// Alliberem el cursor.odbc_free_result($Result);
}
/* lst_exc($conx,$cons)
Funció que genera un fitxer per l'excel$conx: Connexió a la base de dades.$cons: Cadena amb la consulta SQL.
*/
function lst_exc($conx,$cons){ $nom = tempnam("C:\\INetPub\\PHP\\paginas\\temp",""); $nom = substr_replace($nom,".csv",strpos($nom,".tmp"),4); $fp = fopen($nom,"w");
$Result = odbc_exec($conx,$cons);
$num=1; $Col= odbc_num_fields($Result); while($num<=$Col) { $Campos= odbc_field_name($Result,$num); if (empty($camps2)) $camps2 = trim($Campos); else $camps2 = trim($camps2).','.trim($Campos); $num++; }
fputs($fp,trim($camps2));fputs($fp,"\n");
If (odbc_num_rows($Result)==0) { }
else { while($Registro=odbc_fetch_row($Result)){ $camps2=''; for($i=1;$i<=$Col;$i++){ $Valor=odbc_result($Result,$i); if (empty($camps2)) $camps2 = trim($Valor);
-8-
C:\Users\TONI\Desktop\rpant.inc martes, 11 de junio de 2013 17:20
else $camps2 = trim($camps2).','.trim($Valor); }
fputs($fp,trim($camps2));fputs($fp,"\n");
}}fclose($fp);odbc_free_result($Result);return($nom);
}
?>
-9-
TFC
46
11.2 Capturas de pantalla