INSTALACION Y DESARROLLO APLICACION WEB, CONTROL...

Post on 27-Dec-2019

12 views 1 download

Transcript of INSTALACION Y DESARROLLO APLICACION WEB, CONTROL...

                                   

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

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>&nbsp;</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'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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