Você está na página 1de 36

QU ES PHP? PHP (acrnimo de "PHP: Hypertext Preprocessor") es un lenguaje interpretado de alto nivel embebido en pginas HTM y ejecutado en el servidor!

"n ejemplo nos aclarar las cosas: Un ejemplo introductorio #$tml% #$ead% #title%&jemplo PHP#'title% #'$ead% #body% #(p$p ec$o "Hola) este es un ejemplo con PHP*"+ (% #'body% #'$tml% o ,ue distingue a PHP de la tecnolog-a .avascript) la cual se ejecuta en la m,uina cliente) es ,ue el cdigo PHP es ejecutado en el servidor! /i tuvi0semos un script similar al de nuestro ejemplo en nuestro servidor) el cliente solamente recibir-a el resultado de su ejecucin en el servidor) sin ninguna posibilidad de determinar ,ue cdigo $a producido el resultado recibido! &l servidor 1eb puede ser incluso con2igurado para ,ue procese todos los 2ic$eros HTM con PHP! Qu se puede hacer con PHP? 3l nivel ms bsico) PHP puede $acer cual,uier cosa ,ue se pueda $acer con un script 456) como procesar la in2ormacin de 2ormularios) generar pginas con contenidos dinmicos) o mandar y recibir coo7ies! 8ui9as la caracter-stica ms potente y destacable de PHP es su soporte para una gran cantidad de bases de datos! &scribir una inter2a9 v-a 1eb para una base de datos es una tarea simple con PHP! as siguientes bases de datos estn soportadas actualmente: :racle) d;ase 6nter;ase My/8 <elocis) 6n2ormix :=;4 "nix! PHP tambi0n soporta el uso de otros servicios ,ue usen protocolos como 6M3P) />MP) >>TP) P:P?) HTTP y derivados! Tambien se pueden abrir soc7ets de red directos (ra1 soc7ets) e interactuar con otros protocolos! VARIA !ES &n PHP las variables se representan como un signo de dlar seguido por el nombre de la variable! &l nombre de la variable es sensible a min@sculas y may@sculas! Avar B ";ob"+ A<ar B ".oe"+ ec$o "Avar) A<ar"+ '' produce la salida ";ob) .oe" Para asignar por re2erencia) simplemente se antepone un ampersand (C) al comien9o de la variable cuyo valor se est asignando (la variable 2uente)! Por ejemplo) el siguiente tro9o de cdigo produce la salida DMi nombre es ;obD dos veces: #(p$p A2oo B D;obD+ '' 3signa el valor D;obD a A2oo Abar B CA2oo+ '' Ee2erencia A2oo v-a Abar! Abar B "Mi nombre es Abar"+ '' Modi2ica Abar!!! ec$o A2oo+ '' A2oo tambi0n se modi2ica! ec$o Abar+
?>

3lgo importante a tener en cuenta es ,ue slo las variables con nombre pueden ser asignadas por re2erencia! #(p$p A2oo B FG+ Abar B CA2oo+ '' &sta es una asignacin vlida! Abar B C(FH I J)+ '' 6nvlida+ re2erencia una expresin sin nombre! 2unction test() K return FG+ L Abar B Ctest()+ '' 6nvlida! (% VARIA !ES E"#ER$AS E$ PHP %ormularios H#&! '(E# ) P*S#+ 4uando se env-a un 2ormulario a un script PHP) las variables de dic$o 2ormulario pasan a estar automticamente disponibles en el script gracias a PHP! Por ejemplo) consideremos el siguiente 2ormulario: Ejemplo, Varia-les de .ormulario simple #2orm actionB"2oo!p$p?" met$odB"post"% >ame: #input typeB"text" nameB"name"%#br% #input typeB"submit"% #'2orm% 4uando es enviado) PHP crear la variable Aname) ,ue contendr lo ,ue sea ,ue se introdujo en el campo Name: del 2ormulario! PHP tambi0n maneja arrays en el contexto de variables de 2ormularios) pero slo en una dimensin! /e puede) por ejemplo) agrupar juntas variables relacionadas) o usar esta caracter-stica para recuperar valores de un campo select input m@ltiple: Ejemplo, Varia-les de .ormulario m/s complejas #2orm actionB"array!p$p" met$odB"post"% >ame: #input typeB"text" nameB"personalMnameN"%#br% &mail: #input typeB"text" nameB"personalMemailN"%#br% ;eer: #br% #select multiple nameB"beerMN"% #option valueB"1art$og"%Oart$og #option valueB"guinness"%5uinness #option valueB"stuttgarter"%/tuttgarter /c$1abenbrPu #'select% #input typeB"submit"% #'2orm% /i la posibilidad de PHP de trac7Qvars est activada) ya sea mediante la opcin de con2iguracin trac7Qvars o mediante la directiva #(p$pQtrac7Qvars(%) las variables enviadas con los m0todos P:/T o 5&T tambi0n se encontrarn en los arrays asociativos globales AHTTPQP:/TQ<3E/ y AHTTPQ5&TQ<3E/! #IP*S 0E 0A#*S Enteros os enteros se pueden especi2icar usando una de las siguientes sintaxis:

AaR B HGHS+ T n@mero decimal AaF B UHSJ+ T un n@mero negativo Aa? B V?GF+ T n@mero octal (e,uivalente a F?H decimal) AaH B Vx3G+ T n@mero $exadecimal (e,uivalente a SG decimal) Ejemplo, #(p$p AaR B HGHS+ T n@mero decimal AaF B UHSJ+ T un n@mero negativo Aa? B V?GF+ T n@mero octal (e,uivalente a F?H decimal) AaH B Vx3G+ T n@mero $exadecimal (e,uivalente a SG decimal) ec$o "aR U% ") AaR) "#br%"+ ec$o "aF U% ") AaF) "#br%"+ ec$o "a? U% ") Aa?) "#br%"+ ec$o "aH U% ") AaH) "#br%"+ (% $1meros de punto .lotante os n@meros de punto 2lotante (double) se pueden utili9ar especi2icando cual,uiera de la siguiente sintaxis: AaR B RG!F?H+ AaF B R!WeH+ Ejemplo, #(p$p AaR B RG!F?H+ AaF B R!WeH+ ec$o "aR U% ") AaR) "#br%"+ ec$o "aF U% ") AaF+ (% 2adenas as cadenas se especi2ican usando como delimitadores la doble comilla(X)! Ejemplo, #(p$p Acad B "&sto es una cadena"+ ec$o Acad+ (% Ejemplo, #2ont 2aceB"<erdana"% #(p$p Aa B G+ Ab B Y+ Ac B Aa I Ab+ ec$o "<ariables dentro de una cadena se expanden#br%"+ ec$o "ZAa B Aa#br%"+ ec$o "ZAb B Ab#br%"+ ec$o "ZAc B Ac#br%"+ (% #'2ont%

2*$S#A$#ES
PHP de2ine varias constantes y proporciona un mecanismo para de2inir ms en tiempo de ejecucin! as constantes son como las variables) salvo por las dos circunstancias de ,ue las constantes deben ser de2inidas usando la 2uncin de.ine'+) y ,ue no pueden ser rede2inidas ms tarde con otro valor! as constantes especiales QQ[6 &QQ y QQ 6>&QQ son una excepcin) ya ,ue actualmente no lo son) las constantes son sensibles a may@sculas) por convencin) los indicadores de constantes suelen declararse en may@sculas! as constantes solo pueden contener valores escalares: bolean) integer) 2lota y string Ejemplo, 3.ont .ace45Hel6etica57 #(p$p de2ine("P6")?!RHRGRS)+ Aradio B G+ Aarea B P6IAradioIAradio+ ec$o "P6: " ! P6 ! "#br%"+ ec$o "Eadio: Aradio#br%"+ ec$o "3rea: Aarea"+ (% 38.ont7 as constantes prede2inidas (siempre disponibles) son: QQ[6 &QQ &l nombre del arc$ivo de comandos ,ue est siendo interpretado actualmente! /i se usa dentro de un arc$ivo ,ue $a sido incluido o re,uerido) entonces se da el nombre del arc$ivo incluido) y no el nombre del arc$ivo padre! QQ 6>&QQ &l n@mero de l-nea dentro del arc$ivo ,ue est siendo interpretado en la actualidad! /i se usa dentro de un arc$ivo incluido o re,uerido) entonces se da la posicin dentro del arc$ivo incluido! PHPQ<&E/6:> a cadena ,ue representa la versin del anali9ador de PHP en uso en la actualidad+ e!g! D?!V!WUdevD! PHPQ:/ &l nombre del sistema operativo en el cul se ejecuta el anali9ador PHP+ e!g! D inuxD! TE"& <alor verdadero! [3 /& &Q&EE:E &QO3E>6>5 <alor 2also! =enota un error distinto de un error de interpretacin del cual no es posible recuperarse! =enota una condicin donde PHP reconoce ,ue $ay algo errneo) pero continuar de todas 2ormas+ pueden ser capturados por el propio arc$ivo de comandos! "n ejemplo ser-a una invlida regexp en ere9'+! &l interprete encontr sintaxis invlida en el arc$ivo de comandos! a recuperacin no es posible! :curri algo ,ue pudo ser o no un error! a ejecucin contin@a! os ejemplos incluyen usar una cadena sin comillas como un -ndice "$as$") o acceder a una variable ,ue no $a sido iniciali9ada!

&QP3E/& &Q>:T64&

Ejemplo: 0e.iniendo 2onstantes #(p$p de2ine("4:>/T3>T&") "Hola mundo!")+ ec$o 4:>/T3>T&+ '' muestra "Hola mundo!" (% Ejemplo, constantes prede.inidas #2ont 2aceB"Helvetica"% #(p$p 2unction msg&rror(A2ile) Aline) Amessage) K ec$o "#b%&EE:E#'b%#br%"+ ec$o "#b%3rc$ivo:#'b% A2ile#br%"+ ec$o "#b% inea:#'b% Aline#br%"+ ec$o "#b%Mensaje:#'b% Amessage"+ L msg&rror(QQ[6 &QQ)QQ 6>&QQ) "3lgo esta mal***")+ (% #'2ont%

E"PRESI*$ES ; *PERA2I*$ES /in duda alguna ,ue las expresiones constituyen la base de todo lenguaje) estas se constituyen en base a operadores! *peradores Aritmticos \Eecuerdas la aritm0tica bsica del colegio( Pues estos operadores 2uncionan exactamente igual!

*peradores de 2omparaci<n os operadores de comparacin) como su nombre indica) permiten comparar dos valores!

*peradores de Incremento8decremento PHP soporta los operadores de predecremento y post incremento al estilo de 4!

#(p$p ec$o "#$?%Postincremento#'$?%"+ Aa B G+ ec$o "=eber-a ser G: " ! Aa]] ! "#br%Zn"+ ec$o "=eber-a ser S: " ! Aa ! "#br%Zn"+ ec$o "#$?%Preincremento#'$?%"+ Aa B G+ ec$o "=eber-a ser S: " ! ]]Aa ! "#br%Zn"+ ec$o "=eber-a ser S: " ! Aa ! "#br%Zn"+ ec$o "#$?%Postdecremento#'$?%"+ Aa B G+ ec$o "=eber-a ser G: " ! AaU ! "#br%Zn"+ ec$o "=eber-a ser H: " ! Aa ! "#br%Zn"+ ec$o "#$?%Predecremento#'$?%"+ Aa B G+ ec$o "=eber-a ser H: " ! UAa ! "#br%Zn"+ ec$o "=eber-a ser H: " ! Aa ! "#br%Zn"+ (% *peradores !<9icos

Ejemplo, Eeali9ar una aplicacin ,ue muestre un 2ormulario ,ue permita el ingreso de datos para calcular el sueldo de un trabajador considerando d-as trabajados) $oras por d-a) costo por $ora) y un segundo 2ormulario ,ue recibe los datos y reali9a el clculo del sueldo total) 6mpuesto renta (RV^)) impuesto a la solidaridad (J^)) y el neto a pagar !

#body bgcolorB"T=F&;[J"% #(p$p Atotal B AQP:/TM"dt"N I AQP:/TM"$d"N I AQP:/TM"c$"N+ Air B Atotal I V!RV+ T 6mpuesto a la renta Ais B Atotal I V!VRJ+ T 6mpuesto de solidaridad Aneto B Atotal U Air U Ais+ (% #$F%4lculo de /ueldo#'$F% #(p$p ec$o "#b%=-as trabajados#'b%: Adt#br%"+ ec$o "#b%Horas por dia#'b%: A$d#br%"+ ec$o "#b%4osto por Hora#'b%: Ac$#br%#br%"+ ec$o "#b%Eesultado#'b%#br%"+ ec$o "#b%Total#'b%: Atotal#br%"+ ec$o "#b%6mpuesto Eenta #'b%: Air#br%"+ ec$o "#b%6mpuesto solidaridad#'b%: Ais#br%"+ ec$o "#b%>eto#'b%: Aneto#br%"+ (% #input typeB"button" valueB";ac7" on4lic7B"$istory!bac7()"% #'body%

ES#RU2#URAS 0E 2*$#R*! as estructuras de control permiten bi2urcar el 2lujo del programa y as- ejecutar unas partes u otras del cdigo seg@n ciertas condiciones! PHP dispone de todas las estructuras clsicas ,ue los lenguajes de alto nivel con la sintaxis de 4) 4]] o .ava! &stas estructuras estn divididas en dos grupos: 2*$0I2I*$A!ES &n base a una condicin se determina si se ejecuta o no un grupo de instrucciones! 4ondicin simple : 62 4ondicin =oble: 62 U else 4ondicin multiple: 62 U &lse62 U else /electiva multiple: s1it$ Permite repetir la ejecucin de un grupo de instrucciones ;ucle: 2or ;ucle: 2oreac$ ;ucle: 1$ile ;ucle: do _ 1$ile

REPE#I#IVAS

ES#RU#URAS 2*$0I2I*$A!ES 2*$0I2I=$ SI&P!E , I% a instruccin i2 es la estructura de control ms bsica de todas! Sinta>is 62 condicin K 6nstrucciones+ L Ejemplo ? 4rear un programa ,ue muestre un 2ormulario para ,ue ingrese un nombre) este dato es enviado al programa pracVF para ,ue sea procesado) si no ingresa ning@n nombre el dato ,ue debe enviar es /6> >:M;E&!

el resultado debe ser

prac@? #body bgcolorB"T=F&;[J"% #2orm met$od B "post" action B "pracVF!p$p"% #b%Tu >ombre:#'b% #input typeB"text" nameB"nombre" si9eB"FV"% #br%#input typeB"submit" valueB"&nviar"% #'2orm% #'body% prac@A #body bgcolorB"T=F&;[J"% #(p$p Anombre B AQP:/TM"nombre"N+ i2(Anombre)K ec$o "Hola Anombre#br%"+ L i2(*Anombre)K ec$o "Hola /6> >:M;E&"+ L (% #'body% 2*$0I2I*$A! 0* !E, I% B E!SE 3 una instruccin i2 le podemos a`adir instrucciones ,ue se ejecuten cuando la condicin es 2alsa mediante la clusula else! Sintaxis: 62 (condicin)K 6nstruccionesR+ L &lseK 6nstruccionesF+ L Ejemplo A 4rear un 2ormulario ,ue ingrese un n@mero y eval@e si el n@mero ingresado es par o impar!

prac@C #body bgcolorB"T=F&;[J"% 9

#$?%6ngrese un >@mero &ntero#'$?% #2orm met$od B "post" action B "pracVH!p$p"% #b%>@mero:#'b% #input typeB"text" nameB"n" si9eB"?" maxlengt$B"?"%#br% #input typeB"$idden" nameB"seguro" valueB"alian9a"% #input typeB"submit" valueB"&nviar"% #'2orm% prac@D #(p$p An B (int)An+ Ar B An ^ F+ i2(ArBBV)K Amsg B "&s un n@mero P3E"+ L elseK Amsg B "&s un n@mero 6MP3E"+ L Amsg B "ZAn B An#br%" ! Amsg+ ec$o Amsg ! "#br%"+ ec$o "#a $re2BpracV?!p$p%>ueva Prueba#'a%"+ (% #'body% 2*$0I2I*$A! &U!#IP!E, I% B E!SEI% B E!SE /e puede encadenas varias condiciones con la clusula elsei2 Sinta>is, 62 (condicinR) K 6nstruccionesR+ L elsei2 (condicinF)K 6nstruccionesF+ L elsei2 (condicin?)K 6nstrucciones?+ ! ! L elseK instrucciones else L Ejemplo C 4rear un 2ormulario apara el ingreso de ds notas) luego calcule el promedio y determine una condicin seg@n el siguiente cuadro! PR*&E0I* RW _ FV RG _ RJ 2*$0I2I=$ &xcelente ;ueno 10

RR _ RS S _ RV V_G

Eegular Malo P0simo

Prac@E #$?%4alculo de Promedio#'$?% #2orm met$od B "post" action B "pracVS!p$p"% #b%>ota R:#'b% #input typeB"text" nameB"nR" si9eB"F" maxlengt$B"F"%#br% #b%>ota F:#'b% #input typeB"text" nameB"nF" si9eB"F" maxlengt$B"F"%#br% #input typeB"submit" valueB"&nviar"% #'2orm% Prac@F AnR B (2loat)AQP:/TM"nR"N+ AnF B (2loat)AQP:/TM"nF"N+ '' Proceso Apr B (AnR ] AnF) ' F+ i2(Apr %B RW)K Acond B "&xcelente"+ L elsei2(Apr %B RG)K Acond B ";ueno"+ L elsei2(Apr %B RR)K Acond B "Eegular"+ L elsei2(Apr %B S)K Acond B "Malo"+ L elseKAcond B "P0simo"+ L '' Eeporte ec$o ">ota R: AnR#br%"+ ec$o ">ota F: AnF#br%"+ ec$o "Promedio: Apr#br%"+ ec$o "4ondicin: Acond#br%"+ ec$o "#a $re2BbpracVG!p$pb%:tros =atos#'a%"+ SE!E2#IVA &U!#IP!E, SGI#H &sta estructura permite evaluar una expresin y seg@n su resultado ejecutar un blo,ue de instrucciones! /intaxis: s1itc$ (expression)K case valorR: instrucciones+ brea7+ case valorF: instrucciones+ brea7+ 11

! ! case valor>: instrucciones>+ brea7+ de2ault: instrucciones=e2ault+ L cuando se termina de ejecutar el cdigo de un case) si no se 2inali9a el s1itc$ expl-citamente con una instruccin -reaH) se continua ejecutando el cdigo del siguiente case) aun,ue no se cumpla la condicin) $asta ,ue se llegue al 2inal del blo,ue s1itc$ o se 2inalice este con un brea7 Ejemplo D Eeali9ar un programa ,ue genere un n@mero aleatorio entre R y H e imprima en letras a partir del n@mero generado de la siguiente 2orma!

#body% #(p$p AiB rand(R)H)+ ec$o"ZAi B Ai #br%"+ s1itc$ (Ai)K case R: ec$o "uno#br%"+ case F: ec$o "dos#br%"+ case ?: ec$o "tres#br%"+ case H: ec$o "cuatro#br%"+ L (% #'body% Ejemplo E Eeali9ar un programa ,ue genere un n@mero aleatorio entre R y RV y luego compruebe si es menor ,ue H) H) mayor ,ue H!

#body bgcolorB"T=F&;[J"% #(p$p Ai B rand(R)RV)+ ec$o "ZAi B Ai#br%"+ 12

s1itc$ (Ai) K case V: case R: case F: ec$o "ZAi es menor ,ue H"+ brea7+ case H: ec$o "ZAi es igual a H"+ brea7+ de2ault: ec$o "ZAi es mayor ,ue H"+ brea7+ L (% #'body%

case ?:

ES#RU2U#RAS 0E REPE#II*$ U2!E %*R &l bucle 2or resulta muy 2cil cuando debemos ejecutar un blo,ue de cdigo a condicin de ,ue una variable se encuentre entre un valor m-nimo y otro mximo! /u estructura es la siguiente! Sinta>is, [or (expresinR+ expresinF+ expresin?)K 6nstrucciones L e>presi<n?, &s la iniciacin del bucle+ es el valor inicial a una o varias variables! e>presi<nA, &s la condicin+ mientras ,ue espresinF sea verdadera ) el bucle estar iterando! e>presi<nC, &s el paso de iteracin+ se ejecuta despu0s de cada iteracin Ejemplo F &scribe un 2ormulario ,ue pida un n@mero y dibuje una tabla de una columna con el n@mero de 2ilas indicado en el 2ormulario! Resultado #$tml% #body% #(p$p AnRBAQP:/TM"n"N+ ec$o "#table 1idt$BbJHb borderBbRb%"+ ec$o "#t$%>@mero#'t$%"+ ec$o "#tr%"+ 2or (A2BR+A2#BAn+A2]]) K ec$o "#tr%"+ ec$o "#t$%A2#'t$%"+ L ec$o "#'table%"+ (% #'body% 13

#'$tml%

U2!E GHI!E Eepresenta una estructura) ,ue ejecuta un gruspo de instrucciones mientras una condicin sea verdadera! Para ingrasar al bucle inicalmente la condicin debe ser verdadera) de lo contrario nunca se ejecuta el bucle! Sinta>is, O$ile(condicin)K 6nstrucciones+ K
ARRE(!*S 3rreglos (3rray en inglcs)) es una estructura de datos con2ormado por un conjunto de variables) agrupadas bajo un mismo nombre) a las cuales accedemos mediante un -ndice ,ue inicia en cero! ARRE!*S U$I0I&E$SI*$A!ES

D
V R F Ilista X6mpresorad RVV RSG!JY

Ejemplo,

Para crear un arreglo tenemos varias alternativas) por ejemplo para iniciar la creacin de una lista de 2ruta) la instruccin ser-a: AlistaM NBd6mpresorad+ para agregar otro AlistaM NBRVV+ 6ndice R 6ndice V

Ejemplo J 4rear un arreglo) luego mostrar cada uno de sus elementos y su respectivo tipo de dato! #body bgcolorB"T=F&;[J"% #$?%3rreglos#'$?% #(p$p AlistaMN B "6mpresora"+ AlistaMN B RVV+ AlistaMN B RSG!JY+

14

ec$o "ZAlistaMVN B " ! AlistaMVN ! "#br%"+ ec$o "ZAlistaMRN B " ! AlistaMRN ! "#br%"+ ec$o "ZAlistaMFN B " ! AlistaMFN ! "#br%"+ ec$o "#br%"+ ec$o "ZAlistaMVN es de tipo " ! gettype(AlistaMVN) ! "#br%"+ ec$o "ZAlistaMRN es de tipo " ! gettype(AlistaMRN) ! "#br%"+ ec$o "ZAlistaMFN es de tipo " ! gettype(AlistaMFN) ! "#br%"+ (% #'body% Resultado, 4omo se puede apreciar) para acceder a un elemento utili9amos un -ndice ,ue inicia en cero (V)!

Para saber el tama`os de una arreglo) podemos utili9ar la 2uncin count) tal como se ilustra a continuacin! AnBcount(Alista)+ Ejemplo K &l siguiente programa muestra el uso de 2uncin count y como podemos $acer un recorrido por los elementos de un arreglo! #body bgcolorB"T=F&;[J"% #$?%3rreglos#'$?% #(p$p AlistaMN B "Pera"+ AlistaMN B ">aranja"+ AlistaMN B ""va"+ AlistaMN B "Man9ana"+ An B count(Alista)+ 2or( AjBV+ Aj # An+ Aj]] ) K ec$o "ZAlistaMAjN B AlistaMAjN #br%"+ L (% #'body% Tambi0n podemos utili9ar la 2uncin Arra)'+ AlistaB aray(X4$iclayod) XTrujillod)dPiurad)dTumbesd)+ Ejemplo L &n el siguiente crea un arreglo utili9ando la 2uncin array) luego lista todos sus elementos! Resultado,

15

#body bgcolorB"T=F&;[J"% #$?%4onoce el >orte Peruano#'$?% #(p$p Alista B array("4$iclayo")"Trujillo")"Piura")"Tumbes")+ An B count(Alista)+ 2or( AjBV+ Aj # An+ Aj]] ) K ec$o "ZAlistaMAjN B AlistaMAjN #br%"+ L (% #'body% Resultado,

Para recorrer los elementos de un arreglo podemos utili9ar un bucle $aciendo re2erencia a un -ndice) pero necesitamos conocer el tama`o del arreglo! a estructura de control .oreach nos 2acilita el recorrido por los elementos de un arreglo por,ue no necesitamos conocer su tama`o! 2oreac$(Aarreglo as elemento) K instrucciones L Ejemplo ?@ &l sisguiente ejemplo muestra el uso de la estructura .oreach: #body bgcolorB"T=F&;[J"% #$?%5astronom-a =el >orte Peruano#'$?% #(p$p Alista B array("3rro9 con Pato")"4evic$e")"/eco de 4abrito") "/eco de 4$avelo")"/udado de Mero") "&spesado")+ 2oreac$( Alista as Adato ) K ec$o "Adato #br%"+ L (% #'body%

ARRE(!*S &U!#I0I&E$SI*$A!ES

0 1 2

0 1 2 3 0 1 2 3 A0 B 1 C 2 D3

16

2 7

5 2

6 4

8 6

/e asigna de la siguiente 2orma: Alista B 3rray ( array(3);)4)=) array(F)G)S)W) array(J)F)H)S) )+ /e esta creando un arreo de dos dimensiones) de ? 2ilas y H columnas) para acceder a un elemento se debe usar la siguiente sintaxis!: AlistaM2ulaNMcolumnaN Ejemplo ?? &n este ejemplo se muestra el recorrido de un arreglo de dos dimensiones conocido tambi0n como matri9! #body bgcolorB"T=F&;[J"% #$?%4onoce 3m0rica atina#'$?% #(p$p Alista B array( array("Peru")";olivia")";rasil")"3rgentina")) array(" ima")" a Pa9")";rasilia")";uenos 3ires") )+ A2ilas B count(Alista)+ ec$o "#table borderBbRb%"+ 2or( A2 B V+ A2 # A2ilas+ A2]] )K Acolumnas B count( AlistaMA2N )+ ec$o "#tr%"+ 2or( Ac B V+ Ac #B Acolumnas+ Ac]] ) K ec$o "#td%"!AlistaMA2NMAcN!"#'td%"+ L ec$o "#'tr%"+ L (% #'body% Resultado

US* 0E 2*$#R*!ES Ejemplo ?A =ise`ar un 2ormulario para seleccionar un destino tur-stico) y luego mostrar un mensaje sobre el destino seleccionado!

17

#body% #p classB"&stiloR"%4onoce el PerCuacute+#'p% #2orm nameB"2ormR" met$odB"post" actionB"ciudadF!p$p"% #label%4iudad a <isitar #select nameB"ciudad" si9eB"R"% #option%4$iclayo#'option% #option%Trujillo#'option% #option%4ajamarca#'option% #'select% #br%#input typeB"submit" valueB"&nviar"% #'2orm% #'body% ciudadA:php #body% #(p$p Aciudad B AQP:/TM"ciudad"N+ ec$o "4iudad seleccionada: Aciudad#br%"+ s1itc$(Aciudad)K case R: ec$o "4$iclayo) ciudad de la amistad!"+ brea7+ case F: ec$o "Trujillo) ciudad de la eterna primavera!"+ brea7+ case ?: ec$o "4ajamarca) simplemente una ciudad espectacular!"+ brea7+ L ec$o "#br%#a $re2Bbciudad!$tmlb%>ueva /eleccin#'a%"+ (% #'body% PR*(RA&AS RE2URSIV*S &n los ejemplos anteriores $emos visto ,ue el 2ormulario esta en un documento (I!$tml) y el proceso n otro documento (I!p$p)) tambi0n tenemos la opcin de $acerlo en un solo documento) donde el 2ormulario env-a los datos al mismo documento) el es,uema es el siguiente: #(p$p i2(*isset(AQP:/TM"control"N))K (% #2orm met$od B "post" action B "destino!p$p"% 18

UUUUUUUUUUUUUUUUUUUUU #input typeB"$idden" nameB"control" valueB"alian9a"% UUUUUUUUUUUUUUUUUUUUU #'2orm% #(p$p L elseK '' proceso de datos en p$p L (% &n este caso control ser-a un campo ms del 2ormulario) pero oculto para ,ue no se muestre al usuario) y permita veri2icar si se debe mostrar el procesar 2ormulario o procesar datos! Prac@J #body bgcolorB"T=F&;[J"% #(p$p i2(*isset(AQP:/TM"control"N))K (% #$?%4alculo de Promedio#'$?% #2orm met$od B "post" action B "pracVJ!p$p"% #b%>ota R:#'b% #input typeB"text" nameB"nR" si9eB"F" maxlengt$B"F"%#br% #b%>ota F:#'b% #input typeB"text" nameB"nF" si9eB"F" maxlengt$B"F"%#br% #input typeB"$idden" nameB"control" valueB"alian9a"% #input typeB"submit" valueB"&nviar"% #'2orm% #(p$p L elseK '' =atos AnR B (2loat)AQP:/TM"nR"N+ AnF B (2loat)AQP:/TM"nF"N+ '' Proceso Apr B (AnR ] AnF) ' F+ i2(Apr %B RW)K Acond B "&xcelente"+ L elsei2(Apr %B RG)K Acond B ";ueno"+ L elsei2(Apr %B RR)K Acond B "Eegular"+ L elsei2(Apr %B S)K Acond B "Malo"+ L elseKAcond B "P0simo"+ L '' Eeporte ec$o ">ota R: AnR#br%"+ ec$o ">ota F: AnF#br%"+ ec$o "Promedio: Apr#br%"+ ec$o "4ondicin: Acond#br%"+ ec$o "#a $re2BbpracVJ!p$pb%:tros =atos#'a%"+ L (% 19

#'body% Prac@K #body bgcolorB"T=F&;[J"% #(p$p i2(*isset(AQP:/TM"seguro"N))K (% #$?%4alculo de Promedio#'$?% #2orm met$od B "post" action B "promedio!p$p"% #b%>ota R:#'b% #input typeB"text" nameB"nR" si9eB"F" maxlengt$B"F"%#br% #b%>ota F:#'b% #input typeB"text" nameB"nF" si9eB"F" maxlengt$B"F"%#br% #input typeB"$idden" nameB"seguro" valueB"alian9a"% #input typeB"submit" valueB"&nviar"% #'2orm% #(p$p L elseK '' =atos AnR B (2loat)AQP:/TM"nR"N+ AnF B (2loat)AQP:/TM"nF"N+ '' Proceso Apr B (AnR ] AnF) ' F+ i2(Apr %B RW)K Acond B "&xcelente"+ L elsei2(Apr %B RG)K Acond B ";ueno"+ L elsei2(Apr %B RR)K Acond B "Eegular"+ L elsei2(Apr %B S)K Acond B "Malo"+ L elseKAcond B "P0simo"+ L Anumero B Apr ^ F+ i2(AnumeroBBV)K Amsg B "&s un n@mero P3E"+ L elseK Amsg B "&s un n@mero 6MP3E"+ L '' Eeporte ec$o"#table 1idt$BbFVVb borderBbRb 3 65>B bcenterb%"+ ec$o"#tr%"+ ec$o"#td% >ota R:#'td% #td%AnR#'td%"+ ec$o"#tr%"+ ec$o"#td% >ota F:#'td% #td%AnF#'td%"+ ec$o"#tr%"+ ec$o"#td% Promedio:#'td% #td%Apr#'td%"+ ec$o"#tr%"+ ec$o"#td% 4ondicin:#'td% #td%Acond#'td%"+ ec$o"#tr%"+ ec$o"#td% Amsg#'td%"+ ec$o"#a $re2Bbpromedio!p$pb%:tros =atos#'a%"+ Lec$o"#'table%"+ 20

(% #'body% Ejemplo ?C Eeali9ar un 2ormulario ,ue simule la b@s,ueda de canciones) utili9ando controles y 2ormularios recursivos!

#H&3=% #T6T &%&l 2ormulario de PHP#'T6T &% # 6>e E& B"styles$eet" TfP&B"text'css" HE&[B"estilo!css"% #'H&3=% #;:=f%

#(p$p i2 (*isset(AQP:/TMbbuscabN))K (% #HR%&l 2ormulario de PHP#'HR% #HF%;@s,ueda de canciones#'HF% #[:EM 4 3//B"borde" 34T6:>B"ejercicio?!p$p" M&TH:=B"P:/T"% #P%# 3;& %Texto a buscar:#' 3;& % #6>P"T TfP&B"T&gT" /6h&B"HV" >3M&B"texto"%#'P% #6>P"T TfP&B"$idden" nameB"busca" valueB"alian9a"% #P%# 3;& %;uscar en:#' 3;& % #6>P"T TfP&B"E3=6:" >3M&B"donde" <3 "&B"titulo"%T-tulos de cancin #6>P"T TfP&B"E3=6:" >3M&B"donde" <3 "&B"album"%>ombres de lbum #6>P"T TfP&B"E3=6:" >3M&B"donde" <3 "&B"ambos" 4H&4e&=%3mbos campos#'P%

21

#P%# 3;& %50nero musical:#' 3;& % #/& &4T >3M&B"genero"% #:PT6:> /& &4T&=%Todos #:PT6:>%3c@stica #:PT6:>%;anda /onora #:PT6:>%;lues #:PT6:>%&lectrnica #:PT6:>%[ol7 #:PT6:>%.a99 #:PT6:>%>e1 3ge #:PT6:>%Pop #:PT6:>%Eoc7 #'/& &4T%#'P% #P%#6>P"T TfP&B"/";M6T" >3M&B"buscar" <3 "&B";uscar"%#'P% #'[:EM% #(p$p L elseK print ("#HR%&l 2ormulario de PHP! Eesultados del 2ormulario#'HR%Zn")+ Atexto B AQE&8"&/TMbtextobN+ Adonde B AQE&8"&/TMbdondebN+ Agenero B AQE&8"&/TMbgenerobN+ print ("#P%&stos son los datos introducidos:#'P%Zn")+ print ("#" %Zn")+ print (" # 6%Texto de b@s,ueda: AtextoZn")+ print (" # 6%;uscar en: AdondeZn")+ print (" # 6%50nero: AgeneroZn")+ print ("#'" %Zn")+ print ("#P%M #3 HE&[Bbejercicio?!p$pb%>ueva b@s,ueda#'3% N#'P%Zn")+ L (% #'body%

%U$2I*$ES "na de las $erramientas mas importantes en cual,uier lenguaje de programacin son las 2unciones! "na 2uncin consiste en un conjunto de rutinas y acciones ,ue a lo largo del script van a ser ejecutadas multitud de veces agrupados en una [">46:> y desde cual,uier punto del script puede ser llamada y ejecutada! 3 su ve9) esta 2uncin puede recibir parmetros externos de los cuales dependa el resultado de una 2uncin! as 2unciones deben ser colocadas siempre antes de reali9ar la llamada a la 2uncin (como es lgico)! a sintaxis de una 2uncin es la siguiente:

22

.unction nom-re'par/metros+ M instrucciones de la .unci<n N

Para llamar a la 2uncin ser-a de la siguiente 2orma: nom-re'par/metros+ Ejemplo, &ste ejemplo ilustra el uso de una 2uncin ,ue no retorna ning@n valor) solo ejecuta una accin! #(p$p 2unction prueba() K ec$o"#$F%[unciones#'$F%"+ ec$o"Hola Mundo"+ L prueba() (% I$2!UIR AR2HIV*S [unciones: re,uire() e include() &l objetivo de estas 2unciones es incluir el contenido de un arc$ivo en el punto donde se invoca! &n su 2uncionamiento son id0nticas en todos los aspectos) excepto en el modo de actuar ante un error) include() produce un mensaje de advertencia) mientras ,ue re,uire() produce un error 2atal! Ejemplo, &n este ejemplo se ilustra el uso de las 2unciones re,uire()) para lo cual utili9amos los siguientes arc$ivos: T-tulo!$tml #(p$p include("agregararticulo!p$p")+ ec$o "&sto si ,ue esta c$0vere"+ ec$o "$ola" (% #(p$p re,uire("biblioteca!p$p")+(% #( PiePagina() (% #body bgcolorB"T=F&;[J" styleB"2ontU2amily: Ta$oma+"% #(p$p re,uire( "titulo!$tml" )+ ec$o "&sto si ,ue esta c$evere!#br%"+

23

ec$o "&l titulo lo programo en un arc$ivo#br%"+ ec$o "aparte y luego lo incluyo en todas#br%"+ ec$o "mis pginas!"+ (% #'body%

24

&)SQ! ) PHP I&P!E&E$#A2I=$ 0E U$A ASE 0A#*S

2AS* A I&P!E&E$#AR &l siguiente modelo trata de una empresa ,ue o2rece cursos de extensin) los participantes tiene la libertad de matricularse sin ninguna restriccin y pueden tener 2acilidades de pago!
2urso idcurso: c$ar(H) >:T >" nomcurso: varc$ar(HV) >:T >" vacantes: numeric(F) >:T >" Matriculados: numeric(F) >:T >" pro2esor: varc$ar(HV) precio: numeric (?) >:T >"

&atrOcula idcurso: c$ar(H) >:T >" 6dalumno: numeric(G) >:T >" 2ec$a: date >:T >" precio: numeric(?) >:T >" cuotas: numeric(F) >:T >" nota: numeric (F) >:T >"

alumno idalumno: numeric(G) >:T >" nomalumno: varc$ar(HV) >:T >" direccin: varc$ar(HV) tele2ono: varc$ar(RV)

pa9o idcurso: c$ar(H) >:T >" idalumno: numeric(G) >:T >" cuotas: numeric(F) 2ec$a: date >:T >" 6mporte: numeric(G) >:T M"

"> alumno se puede matricular en cual,uiera de los cursos y tiene la opcin de pagarlos en cuotas) los pagos se registran en la tabla pago. #IP*S 0E 0A#*S =espu0s de la 2ase de dise`o de una base de datos) y una ve9 se $a reali9ad el paso a tablas del mismo) es necesario crear las tablas correspondientes: dentro de la base de datos! Para cada columna de cada una de las tablas) e: necesario determinar su tipo de dato) para de esa 2orma ajustar el dise`o de la base de datos) y conseguir un almacenamiento ptimo con la menor utili9acin de espacio! os tipos de datos ,ue puede tener una columna) se agrupan en tres grandes categor-as: Tipos >um0ricos Tipos [ec$a Tipos 4adena

25

#IP*S $U&RI2*S &xisten tipos de datos num0ricos) ,ue se pueden dividir en dos grandes grupos) los ,ue estn en coma 2lotante (con decimales) y los ,ue no! #in)lnt &s un n@mero entero con o sin signo! 4on signo el rango de valores vlidos va desde URFW a RFJ! /in signo) el rango de valores es de : a FGG itP ool "n n@mero entero ,ue puede ser : R Smalllnt >@mero entero con o sin signo! 4on signo el rango de valores va desde U?FJSW a ?FJSJ! /in signo) el rango de valores es de : a SGG?G! &ediumlnt >@mero entero con o sin signo! 4on signo el rango de valores va desde UW?WWSVW a W?WWSVJ! /in signo el rango va desde : aRSJJJFRG! Inte9erPlnt >@mero entero con o sin signo! 4on signo el rango de valores va desde UFRHJHW?SHW a FRHJHW?SHJ! /in signo el rango va desde : a HFY!HYSJ!FYG e i9lnt >@mero entero con o sin signo 4on signo el rango de valores va desde UYFF??JFV?SWGHJJGWVW a YFF??JFV?SWGHJJGWVJ! /in signo el rango va desde : a RWHHSJHHVJ?JVYGGRSRG! %loat >@mero pe,ue`o en coma 2lotante de precisin simple! os valores vlidos van desde U?!HVFWF?HSS&]?W a UR!RJGHYH?GR &U?W) : f desde R!RJGHYH?GR &U?W a ?!HVFWF?HSS&]?W! >RealP 0ou-le >@mero en coma 2lotante de precisin doble! os valores permitidos van desde UR!JYJSY?R?HWSF?RGJ&]?VW a UF!FFGVJ?WGWGVJFVRH&U?VW) : y desde F!FFGVJ?WGWGVJFVRH&U?VW a R!JYJSY?R?HWSF?RGJ&]?VW 0ecimalP 0ecP $umeric >@mero en coma 2lotante desempa,uetado! &l n@mero se almacena como una cadena #IP*S %E2HA, 3 la $ora de almacenar 2ec$as) $ay ,ue tener en cuenta ,ue Mfs,l comprueba de una manera estricta si una 2ec$a es vlida o no! /implemente comprueba ,ue el mes esta comprendido entre : y RF f ,ue el d-a comprendido entre : y ?R! 0ate Tipo 2ec$a) almacena una 2ec$a! &l rango de valores va desde el R de enero del RVVR al ?R de diciembre de YYYY! &l 2ormato de almacenamiento es a`oUmesUd-a 0ate#ime 4ombinacin de 2ec$a y $ora! &l rango de valores va desde el R de enero di RVVR a las : $oras) : minutos y : segundos al ?R de diciembre del YYYY a la F? $oras) GY minutos y GY segundos! &l 2ormato de almacenamiento es: a`oUmesUdia U$oras: minutos: segundos #imeStamp 4ombinacin de 2ec$a y $ora! &l rango va desde el R de enero de RYJV al a`o FV?J! &l 2ormato de almacenamiento depende del tama`o del campo: #IP*S 0E 2A0E$A 2har'n+ 3lmacena una cadena de longitud 2ija! a cadena podr contener desde : a FGG caracteres! Var2har'n+ 3lmacena una cadena de longitud variable! a cadena podr contener desde : a FGG caracteres! =entro de los tipos de cadena se pueden distinguir otros dos subtipos) el tipo Text y el tipo ; :; (;inary large :bject) a di2erencia entre un tipo y otro es el tratamiento ,ue reciben a la $ora de reali9ar ordenamientos y comparaciones! Mientras ,ue el tipo text se ordena sin tener en cuenta las may@sculas y las min@sculas) el tipo ; :; se ordena

26

teni0ndolas en cuenta! os tipos ; :; se utili9an para almacenar datos binarios como pueden ser 2ic$eros! #in)#e>t ) #in) lo4olumna con una longitud mxima de FGG caracteres! lo- ) #e>t "n texto con un mximo de SGG?G caracteres! &edium lo- ) &edium#e>t "n texto con un mximo de RSJJJFRG caracteres! !on9 lo- ) !on9#e>t "n texto con un mximo de HFYHYSJFYG caracteres! Hay ,ue tener en cuenta ,ue debido a los protocolos de comunicacin los pa,uetes pueden tener un mximo de RS Mb! Enum 4ampo ,ue puede tener un @nico valor de una lista ,ue se especi2ica! &l tipo Enum acepta $asta SGG?G valores distintos Set "n campo ,ue puede contener ninguno) uno varios valores de una lista! a lista puede tener un mximo de SH valores!

2REA2I*$ 0E

ASE 0E 0A#*S 2*$ php&)Admin

6ngrese al servidor 1eb y selecciones p$pMy3dmin

&scriba el nombre para la base de datos 4lic en el botn crear

3parece la siguiente ventana 6ngrese el nombre para los campos y sus atributos necesarios 4lic en el botn grabar

27

E0I2I*$ 0E 2A&P*S 6nsertar campos

4ambiar nombre y eliminar campo

E0I2I*$ 0E #A !AS

Insertar Re9istros - /elecciones el botn insertar - 6ngrese los datos necesarios

28

VisualiQar re9istros

- Seleccione el botn examinar Vista SQL In erta c!i"o S#$ %ara reali&ar con 'lta

SESI*$ES &n los programas ,ue $emos visto $asta a$ora) $emos utili9ado variables ,ue slo exist-an en el arc$ivo ,ue era ejecutado! 4uando cargbamos otra pgina distinta) los valores de estas variables se perd-an a menos ,ue nos tomsemos la molestia de pasarlos por la "E o inscribirlos en las coo7ies o en un 2ormulario para su posterior explotacin! &stos m0todos) aun,ue @tiles) no son todo lo prcticos ,ue podr-an en determinados casos en los ,ue la variable ,ue ,ueremos conservar $a de ser utili9ada en varios scripts di2erentes y distantes los unos de los otros Pensemos tambi0n en un carrito de la compra de una tienda virtual donde el cliente va navegando por las pginas del sitio y a`adiendo los art-culos ,ue ,uiere comprar a un carrito! &ste carrito podr-a ser per2ectamente una variable de tipo array (tabla) ,ue almacena para cada re2erencia la cantidad de art-culos contenidos en el carrito! &sta variable deber-a ser obviamente conservada continuamente a lo largo de todos los scripts! &ste tipo de situaciones son solventadas a partir de las variables de sesin! "na sesin es considerada como el intervalo de tiempo empleado por un usuario en recorrer nuestras pginas $asta ,ue abandona nuestro sitio o deja de actuar sobre 0l durante un tiempo prolongado o bien) sencillamente) cierra el navegador!

29

PHP nos permite almacenar variables llamadas de sesin ,ue) una ve9 de2inidas) podrn ser utili9adas durante este lapso de tiempo por cual,uiera de los scripts de nuestro sitio! &stas variables sern especi2icas del usuario de modo ,ue varias variables sesin del mismo tipo con distintos valores pueden estar coexistiendo para cada una de las sesiones ,ue estn teniendo lugar simultneamente! &stas sesiones tienen adems su propio identi2icador de sesin ,ue ser @nico y espec-2ico! Para leer una variable de sesin se $ace a trav0s del mismo array asociativo AQ/&//6:>! &s tan sencillo como $ar-amos para utili9ar cual,uier otra variable) lo @nico es ,ue tenemos ,ue $aber iniciali9ado la sesin previamente! f por supuesto) ,ue la variable ,ue deseamos acceder exista previamente! Ejemplo? #(
session_start(); ?> <html> <head> <title>Leo variable se sesin</title> </head> <body> Muestro esa variable: <? echo $_ ! "#$%&mivariabledesesion&'; ?> </body> </html>

4omo se puede ver) al inicio del cdigo $emos iniciali9ado la sesin y luego en cual,uier parte del cdigo podr-amos acceder a las variables de sesin ,ue tuvi0semos creadas! Ejemplo A 4on lo visto) vamos a proponer el ejemplo clsico de utili9acin de una sesin: un contador! &ste contador deber aumentar de una unidad cada ve9 ,ue recargamos la pgina o apretamos al enlace: #( sessionQstart(bcontadorb)+ (% #HTM % #H&3=% #T6T &%contador!p$p#'T6T &% #'H&3=% #;:=f% #( 62 (isset(Acontador)BBV) KAcontadorBV+L ]]Acontador+ ec$o "#a $re2BZ"contador!p$pZ"%Has recargado esta pgina Acontador veces#'a%"+ (% #';:=f% #'HTM % a condicin if tiene en cuenta la posibilidad de ,ue la variable $contador no $aya sido

30

todav-a iniciali9ada! a 2uncin isset se encarga de dar un valor cero cuando una variable no $a sido iniciali9ada! :tras 2unciones @tiles para la gestin de sesiones son: %unci<n /essionQid() /essionQdestroy() /essionQunregister(bvariableb) 0escripci<n >os devuelve el identi2icador de la sesin =a por abandonada la sesin eliminando variables e identi2icador! 3bandona una variable sesin

31

2*$E"I=$ A !A ASE 0E 0A#*S "na ve9 ,ue tenemos creada la base de datos en nuestro servidor) el siguiente paso es conectarnos a la misma desde una pgina PHP! Para ello PHP nos proporciona una serie de instrucciones para acceder a bases de datos My/8 ! %U$2I*$, mysql_connect 3l ejecutar la instruccin mysql_connect creamos un v-nculo entre la base de datos y la pagina PHP) este v-nculo ser usado posteriormente en las consultas ,ue $agamos a la base de datos! /intaxis: mys,lQconnect(">ombreHost")""suario")"contrase`a") %U$2I*$, m)sRlSselectSd-'5d-atos5+ &sta 2uncin selecciona la base de datos con el cual se va a trabajar! /intaxis: mys,lQselectQdb("bdprueba") %U$2I*$, mysql_close "na ve9 terminado de usar el v-nculo con la base de datos) lo liberaremos con la instruccin mys,lQclose para ,ue la conexin no ,uede ocupada! /intaxis: mys,lQconnect(">ombreHost")""suario")"contrase`a") Ejemplo?, &l siguiente ejemplo reali9a la conexin a una base de datos! #(p$p T&sta es una 2orma muc$o mas 2acil de conectarse a la base de datos en My/,l Tconeccion con el M=; en My/,l Aconeccion B mys,lQconnect("local$ost")"root") or die ("no se $a podido conectar")+ T/eleccion de la base de datos a utili9ar mys,lQselectQdb("empleado") or die("&rror al tratar de selecccionar esta base")+ Tcierra la base de datos mys,lQclose(Aconeccion)+ (% EjemploA, #(p$p Acn B mys,lQconnect("local$ost")"root")"admin")+ i2(Acn)K ec$o "4onexin: :7"+ L else K ec$o "4onexin: &rror"+ return+ L Arpta B mys,lQselectQdb("r$")+ ec$o "#br%"+ i2(Arpta)K ec$o ";ase de =atos: :7"+ L else K ec$o ";ase de =atos: &rror"+

32

L Arpta B mys,lQclose()+ ec$o "#br%"+ i2(Arpta)K ec$o "4onexin: 4errada"+ L else K ec$o "4onexin: &rror"+ L (% Ejemplo C #(p$p 2unction 4onectarse() K i2 (*(Alin7Bmys,lQconnect("local$ost")"root"))) K ec$o "&rror conectando a la base de datos!"+ exit()+ L i2 (*mys,lQselectQdb("")Alin7)) K ec$o "&rror seleccionando la base de datos!"+ exit()+ L return Alin7+ L (% include("libreria!p$p")+ Alin7B4onectarse()+ AresultBmys,lQ,uery("select I 2rom medicamento")Alin7)+ mys,lQclose(Alin7)+ &A$ET* 0E RESU!#A0*S %U$2I*$, mys,lQ,uery &sta 2uncin env-a una 2uncin /8 a la base de datos activa en el servidor asociado en el identi2icador de conexin! /i no se especi2ica el identi2icador de conexin) se asumir la @ltima conexin abierta! /intaxis: mys,lQ,uery(string sentencia) identi2icador de conexin) %U$2I*$, mys,lQnumQro1s 4on esta 2uncin podemos averiguar el n@mero de 2ilas de un conjunto de resultados! /intaxis: mys,lQnumQro1s(resultado) %U$2I*$, mys,lQresult Eetorna el contenido de una celda de un conjunto de reultados /intaxis: mys,lQnumQro1s(resultado) 2onsultas a la -ase de datos "na ve9 ,ue nos $emos conectado con el servidor de bases de datos) ya podemos reali9ar consultas a las tablas de la base de datos! &jemplo

33

#$tml% #$ead% #title%Problema#'title% #'$ead% #body% #(p$p AconexionBmys,lQconnect("local$ost")"root") or die("Problemas en la conexion")+ mys,lQselectQdb("2armacia")Aconexion) or die("Problemas en la seleccin de la base de datos")+ AregistrosBmys,lQ,uery("select codmed)nombre) precio 2rom medicamento") Aconexion) or die("Problemas en el select:"!mys,lQerror())+ 1$ile (AregBmys,lQ2etc$Qarray(Aregistros)) K ec$o "4odigo:"!AregMbcodmedbN!"#br%"+ ec$o ">ombre:"!AregMbnombrebN!"#br%"+ ec$o "Precio:"!AregMbpreciobN!"#br%"+ ec$o "#br%"+ ec$o "#$r%"+ L mys,lQclose(Aconexion)+ (% #'body% #'$tml% Ejemplo &l siguiente ejemplo muestra el contenido de una tabla utili9ando 2unciones para la conexin (librer-a!p$p) y una $oja de estilo (estilo!css)

ES#I!*S:2SS body K color: TVVVVYY+ 2ontU2amily:<erdana) 3rial) Helvetica) sansUseri2+ 2ontUsi9e: V!Wem+ 2ontU1eig$t: GVV+ bac7ground: T[[[W&4+ L HR K 2ontU2amily: <erdana) 3rial) Helvetica) sansUseri2+

34

2ontUsi9e: Fem+ 2ontU1eig$t: JVV+ L HF K 2ontU2amily: <erdana) 3rial) Helvetica) sansUseri2+ 2ontUsi9e: R!JGem+ 2ontU1eig$t: JVV+ L

H?

K 2ontU2amily: <erdana) 3rial) Helvetica) sansUseri2+ 2ontUsi9e: R!GWem+ 2ontU1eig$t: GVV+ L T3; & K bac7groundUcolor: T[[&[=G+ L T= K 2ontU2amily: <erdana) 3rial) Helvetica) sansUseri2+ 2ontUsi9e: V!Yem+ 2ontU1eig$t: GVV+ color: >avy+ L !I RERIA:2SS #(p$p 2unction 4onectarse() K Alin7B mys,lQconnect("local$ost")"root") or die ("no se $a podido conectar")+ mys,lQselectQdb("2armacia")Alin7) or die("&rror al tratar de selecccionar esta base")+ L (% 2*$SU!#A:PHP #lin7 relB"styles$eet" $re2B"estilo!css" typeB"text'css"% #(p$p include("libreria!p$p")+ 4onectarse()+ AresultBmys,lQ,uery("select I 2rom medicamento")+ (% #HR%#p alignB"center" %4:>/" T3 =& =3T:/#'p%#'HR% #table 1idt$B"FVV" borderB"R" alignB"center"% #tr% #td%4odigo#'td% #td%>ombre#'td% #td%Tipo#'td% #td%Precio#'td% #td%/toc7#'td% #'tr% #(p$p 1$ile(Aro1 B mys,lQ2etc$Qarray(Aresult)) K print2("#tr% #td%Cnbsp+^s#'td% #td%Cnbsp+^s#'td%

35

#td%Cnbsp+^s#'td% #td%Cnbsp+^s#'td% #td%Cnbsp+^s#'td%#'tr%") Aro1M"codmed"N)Aro1M"nombre"N)Aro1M"tipo"N)Aro1M"precio"N)Aro1M"stoc7"N) Aro1M"2ec$a"N)+ L mys,lQclose()+ (% #'table%

36

Você também pode gostar