You are on page 1of 32

TUTORI ! "# $%$ & '&()!

"e*de Cero
Copyright 2013 + C,*ar 'ayta. "erecho* re*er-ado*. Prohibida la

reproduccin y/o transmisin total o parcial de este documento sin consentimiento por escrito del autor.

#.clu*i/n de Re*pon*abilidad
Este reporte ha sido escrito para proveer informacin sobre INGRESA E !"PI#" A#A. Se han hecho todos los esfuer$os posibles para %ue este reporte sea lo m&s e'acto y adecuado posible. Sin embar(o puede %ue e'istan errores orto(r&ficos y/o de contenido. a informacin est& actuali$ada a la fecha de la publicacin y est& basada en la e'periencia/investi(acin del autor. Por esta ra$n se debe considerar como una (u)a *nicamente. El propsito del reporte es educativo y tanto el autor como la editorial no (aranti$an %ue el contenido sea +,,- e'acto por lo %ue no se responsabili$an por nin(*n tipo de error u omisin. !anto el autor como la editorial se liberan de cual%uier tipo de responsabilidad a cual%uier persona o entidad por da.os o p/rdidas causados o supuestamente causados0 directa o indirectamente por este reporte. Si no est& de acuerdo con le e'clusin anterior por favor no lea y devuelva este reporte para obtener un reembolso completo.

claraci/n de Cone.i/n y "i-ulgaci/n


1sted debe asumir %ue el autor y el editor tienen una relacin de afiliados y/o al(*n otro tipo de cone'in material con los proveedores de productos y servicios mencionados en esta (u)a y pueden ser compensados cuando usted compre de un proveedor. e recomendamos informase adecuadamente sobre cual%uier producto o servicio %ue vaya a comprar en l)nea o fuera de ella.

2
Copyright 2013 www.clubdeprogramacion.com

'en*a0e del utor


Espero %ue este tutorial de php y mys%l pueda servirte a entender el mundo de la pro(ramacin 2eb con este maravilloso len(ua3e0 cada e3ercicio est& pensado de forma sencilla y pr&ctica. Espero realmente %ue pueda ser de (ran utilidad en tu vida profesional.

Atte. #/sar 4ayta Autor del tutorial

3
Copyright 2013 www.clubdeprogramacion.com

Tabla de Contenido
IN!R"51##I"N A P6P ....................................................................................... 7 891E ES P6P: ................................................................................................ 7 8#mo funciona P6P: ...................................................................................... 7 4I PRI4ER S#RIP!.......................................................................................... 7 #"N"#IEN5" A SIN!A;IS 5E P6P .................................................................. < =ARIA> ES? .................................................................................................... < #"NS!AN!ES? ................................................................................................. < "PERA5"RES? ................................................................................................ @ SEN!EN#IAS #"N5I#I"NA ES? ...................................................................... A SEN!EN#IAS #I# I#AS " >1# ES? .............................................................. +, B1N#I"NES? ................................................................................................. +C >I> I"!E#A 5E B1N#I"NES ........................................................................ +A >ASE 5E 5A!"S D 4ES9 ............................................................................... F+ 91E ES 1NA >ASE 5E 5A!"S? ..................................................................... F+ 4ES9 ? ......................................................................................................... FF ENG1AGE S9 ?............................................................................................ FC IN!EGRAN5" P6P E 4ES9 ............................................................................ F< #"NE#!AR A 4ES9 5ES5E P6P? ............................................................... F< 4"S!RAR !"5"S "S 5A!"S 5E 1NA #"NS1 !A S9 ? ............................. F@ AHA5IR REGIS!R"S A N1ES!RA >ASE 5E 5A!"S? ..................................... FI 4"5IBI#AR REGIS!R"S 5E N1ES!RA >ASE 5E 5A!"S? ............................ J, >"RRAR REGIS!R"S 5E N1ES!RA >ASE 5E 5A!"S? ................................. JF

4
Copyright 2013 www.clubdeprogramacion.com

INTRODUCCION A PHP
QUE ES PHP?

P6P es un len(ua3e de script del lado del servidor. os scripts P6P est&n incrustados en los documentos 6!4 y el servidor los interpreta y e3ecuta antes de servir las p&(inas al cliente El cliente no ve el cdi(o P6P sino los resultados %ue produce
Cmo funciona PHP?

A diferencia de Gava o GavaScript %ue se e3ecutan en el nave(ador0 P6P se e3ecuta en el servidor0 por eso nos permite acceder a los recursos %ue ten(a el servidor como por e3emplo podr)a ser una base de datos. El pro(rama P6P es e3ecutado en el servidor y el resultado enviado al nave(ador. El resultado es normalmente una p&(ina 6!4 .

MI PRIMER SCRIPT

=amos a crear un script sencillo para entender como funciona php K6!4 L K6EA5L K!I! EL4i primer pro(rama en P6PK/!I! EL K/6EA5L K>"5EL K:php echo MNKPL6ola mundoK/PLOPQ :L K/>"5EL K/6!4 L Parece una pa(ina html comun pero lo %ue se encuentra dentro de los s)mbolos K:php y :L es codi(o php %ue el servidor interpretara para mostrar las eti%uetas correspondiente

5
Copyright 2013 www.clubdeprogramacion.com

CONOCIENDO LA SINTAXIS DE PHP


Ahora aprenderemos r&pidamente la sinta'is de este len(ua3e0 es decir cmo se compone su len(ua3e.
VARIABLES

as variables son espacios de memoria %ue sirven para almacenar datos %ue pueden variar durante el pro(reso del pro(rama0 en P6P deben estar precedidas por si(no dlar MRP0 y le asi(namos contenido con el si(no i(ual MSP. P6P distin(ue entre may*sculas y min*sculas0 por lo %ue no es lo mismo Rmyvar %ue R4yvar0 /stas son dos variables totalmente distintas. KhtmlL KbodyL K:php Rmyvar S TSE=I ATQ R4yvar S T4A5RI5TQ //Esto imprimir& SE=I A echoMRmyvar.OKbrLOPQ //Esto imprimir& 4A5RI5 echoMR4yvar.OKbrLOPQ :L K/bodyL K/htmlL #omo ven se ha utili$ado dos formas de escribir echo0 en may*sculas y en min*sculas0 para indicar %ue P6P no las distin(ue a la hora de usar funciones o sentencias del len(ua3e.
CONSTANTES

as constantes son similares a las variables0 con la salvedad de %ue no llevan el si(no dlar delante0 y slo la podemos asi(nar una ve$. Para definir una constantes usaremos la funcin define como si(ue? KhtmlL KbodyL K:php define MT#"NS!AN!ET0 T6ola 4undoTPQ printf M#"NS!AN!EPQ
6
Copyright 2013 www.clubdeprogramacion.com

:L K/bodyL K/htmlL
OPERADORES

ARITM!TICOS Ra U Rb Suma Ra V Rb Resta Ra W Rb 4ultiplicacin Ra / Rb XssScodi(oenlineaLRa / Rb 5ivisin Ra - Rb Resto de la divisin de Ra por Rb RaUU Incrementa en + a Ra RaVV Resta + a Ra CONCATENADORES a concatenacin de cadenas se mane3a con el punto. Ra S T6olaTQ Rb S Ra . T4undoTQ // Ahora Rb contiene T6ola 4undoT En este punto hay %ue hacer una distincin0 la interpretacin %ue hace P6P de las simples y dobles comillas. En el se(undo caso P6P interpretar& el contenido de la cadena. Ra S T4undoTQ echo S Y6ola RaYQ //Esto escribir& T6ola RaT echo S T6ola RaTQ //Esto escribir& T6ola 4undoX%Q //Esto escribir& T6ola 4undoT COMPARADORES Ra Ra Ra Ra Ra Ra K Rb Ra menor %ue Rb L Rb Ra mayor %ue Rb KS Rb Ra menor o i(ual %ue Rb LS Rb Ra mayor o i(ual %ue Rb SS Rb Ra i(ual %ue Rb ZS Rb Ra distinto %ue Rb

LO"ICOS Ra AN5 Rb =erdadero si ambos son verdadero Ra XX Rb =erdadero si ambos son verdadero Ra "R Rb =erdadero si al(uno de los dos es verdadero
7
Copyright 2013 www.clubdeprogramacion.com

Ra ZZ Rb =erdadero si al(uno de los dos es verdadero Ra ;"R Rb =erdadero si slo uno de los dos es verdaderoK>PQ de verdadero ZRa =erdadero si Ra es falso0 y rec)procamente

DE ASI"NACION Ra Ra Ra Ra Ra Ra S Rb Asi(na a Ra el contenido de Rb US Rb e suma a Rb a Ra VS Rb e resta a Rb a Ra WS Rb 4ultiplica Ra por Rb y lo asi(na a Ra /S Rb 5ivide Ra por Rb y lo asi(na a Ra .S Rb A.ade la cadena Rb a la cadena Ra

SENTENCIAS CONDICIONALES

as sentencias de control permiten e3ecutar blo%ue de cdi(os dependiendo de unas condiciones. Para P6P el , es e%uivalente a Balso y cual%uier otro n*mero es =erdadero. I#$$$ELSE a sentencia IB...E SE permite e3ecutar un blo%ue de instrucciones si la condicin es =erdadera y otro blo%ue de instrucciones si /sta es Balsa. Es importante tener en cuenta % instrucciones si /sta es Balsa. Es importante tener en cuenta %ue la condicin %ue evaluemos ha de estar encerrada entre par/ntesis Mesto es aplicable a todas las sentencias de controlP.
if McondicinP [ Este blo%ue se e3ecuta si la condicin es =ER5A5ERA \ else [ Este blo%ue se e3ecuta si la condicin es BA SA \

E'iste una forma sencilla de usar la sentencia IB cuando no tenemos %ue usar el E SE y solo tenemos %ue e3ecutar una l)nea de cdi(o. if MRa L CP echo TRa es mayor %ue CTQ I#$$$ELSEI#$$$ELSE a sentencia IB...E SEIB...E SE permite e3ecuta varias condiciones en cascada. Para este caso veremos un e3emplo0 en el %ue utili$aremos los
8
Copyright 2013 www.clubdeprogramacion.com

operadores l(icos. K:php if MRnombre SS TTP[ echo T!* no tienes nombreTQ \ elseif MMRnombreSSTevaTP "R MRnombreSSTEvaTPP [ echo T echo T!u nombre es E=ATQK \ else [ echo T!u nombre es T . RnombreQ \

S%ITCH$$$CASE$$$DE#AULT 1na alternativa a IB...E SEIB...E SE0 es la sentencia S]I!#60 la cu&l eval*a y compara cada e'presin de la sentencia #ASE con la e'presin %ue evaluamos0 si lle(amos al final de la lista de #ASE y encuentra una condicin =erdadera 0 e3ecuta el cdi(o de blo%ue %ue haya en 5EBA1 !. Si encontramos una condicin verdadera debemos e3ecutar un >REA^ para %ue la sentencia S]I!#6 no si(a buscando en la lista de #ASE. =eamos un e3emplo. K:php s2itch MRdiaP [ case T unesT? echo T6oy es unesTQ brea_Q case T4artesT? echo T6oy es 4artesTQ brea_Q case T4iercolesT? echo T6oy es 4iercolesTQ brea_Q case TGuevesT? echo T6oy es GuevesTQ brea_Q case T=iernesT? echo T6oy es =iernesTQ brea_Q case TS&badoT? echo T6oy es S&badoTQ brea_Q case T5omin(oT? echo T6oy es 5omin(oTQ
9
Copyright 2013 www.clubdeprogramacion.com

brea_Q default? echo TEsa cadena no corresponde a nin(*n d)a de la semanaTQ \ :L


SENTENCIAS CICLICAS O BUCLES

nos permiten iterar con3untos de instrucciones0 es decir repetir la e3ecucin de un con3unto de instrucciones mientras se cumpla una condicin. %HILE a sentencia ]6I E e3ecuta un blo%ue de cdi(o mientras se cumpla una determinada condicin. K:php Rnum S +Q 2hile MRnum K 7P [ echo RnumQ RnumUU \ :L Podemos romper un bucle ]6I E utili$ando la sentencia >REA^. K:php Rnum S +Q 2hile MRnum K 7P [ echo RnumQ if MRnum SS JP[ echo TA%u) nos salimos `nTQ brea_ \ RnumUU \ :L DO$$$%HILE Esta sentencia es similar a ]6I E0 salvo %ue con esta sentencia primero e3ecutamos el blo%ue de cdi(o y despu/s se eval*a la condicin0 por lo %ue el blo%ue de cdi(o se e3ecuta siempre al menos una ve$. K:php
10
Copyright 2013 www.clubdeprogramacion.com

Rnum S +Q do [ echo RnumQ if MRnum SS JP[ echo TA%u) nos salimos `nTQ brea_ \ RnumUU \ 2hile MRnum K 7PQ :L #OR El bucle B"R no es estrictamente necesario0 cual%uier bucle B"R puede ser sustituido f&cilmente por otro ]6I E. Sin embar(o0 el bucle B"R resulta muy *til cuando debemos e3ecutar un blo%ue de cdi(o a condicin de %ue una variable se encuentre entre un valor m)nimo y otro m&'imo. El bucle B"R tambi/n se puede romper mediante la sentencia >REA^. K:php for MRnum S +Q Snum KS7Q RnumUUP[ echo RnumQ if MRnum SS JP[ echo TA%u) nos salimos `nTQ brea_ \ \ :L ARRA&S as tablas Mo array en in(l/sP0 son muy importantes en P6P0 ya %ue (eneralmente0 las funciones %ue devuelven varios valores0 como las funciones li(adas a las bases de datos0 lo hacen en forma de tabla. En P6P disponemos de dos tipos de tablas. El primero ser)a el cl&sico0 utili$ando )ndices? K:php Rciudadab S TPar)sTQ Rciudadab S TPar)sTQ Rciudadab S TRomaTQ Rciudadab S TSevillaTQ Rciudadab S T ondresTQ print MTyo vivo en T . RciudadaFb . TK>RL`nTPQ
11
Copyright 2013 www.clubdeprogramacion.com

:L Esta es una forma de asi(nar elementos a una tabla0 pero una forma m&s formal es utili$ando la funcin array Rciudad S arrayMTPar)sT0 TRomaT0 TSevillaT0 T ondresTPQ //contamos el n*mero de elementos de la tabla Rnumelentos S countMRciudadPQ //imprimimos todos los elementos de la tabla for MRiS,Q Ri K RnumelentosQ RiUUP [ print MT a ciudad Ri es RciudadaRib K>RL`nTPQ \ :L Si no se especifica0 el primer )ndice es el cero0 pero podemos utili$ar el operador SL para especificar el indice inicial. Rciudad S arrayM+SLTPar)sT0 TRomaT0 TSevillaT0 T ondresTPQ 1n se(undo tipo0 son las tablas asociativas0 en las cu&les a cada elemento se le asi(na un valor M_eyP para acceder a /l. Para entenderlo0 %ue me3or %ue un e3emplo0 supon(amos %ue tenemos una tabla en al %ue cada elemento almacena el n*mero de visitas a nuestra 2eb por cada d)a de la semana. 1tili$ando el m/todo cl&sico de )ndices0 cada d)a de la semana se representar)a por un entero0 , para lunes0 + para martes0 etc. Rvisitasa,b S F,,Q Rvisitasa+b S +A<Q si usamos las tablas asociativas ser)a RvisitasaTlunesTb S F,,Q RvisitasaTmartesTb S +A<Q

o bien0 Rvisitas S arrayMTluodi(oTLRvisitas S arrayMTlunesTSLF,,Q TmartesTSL+A<PQ Ahora bien0 recorrer una tabla y mostrar su contenido es sencillo utili$ando los )ndices0 pero 8cmo hacerlo en las tablas asociativas:. a manipulacin de las tabas asociativas se a hace trav/s de funciones %ue act*an sobre un puntero interno %ue indica la posicin. Por defecto0 el puntero se sit*a en el primer elemento a.adido en la tabla0 hasta %ue es movido por una funcin?
12
Copyright 2013 www.clubdeprogramacion.com

current V devuelve el valor del elemento %ue indica el puntero pos V reali$a la misma funcin %ue current reset V mueve el puntero al primer elemento de la tabla end V mueve el puntero al *ltimo elemento de la tabla ne't V mueve el puntero al elemento si%uiente prev V mueve el puntero al elemento anterior countXn count V devuelve el n*mero de elementos de una tabla. =eamos un e3emplo de las funciones anteriores? K:php Rsemana S arrayMTlunesT0 TmartesT0 Tmi/rcolesT0 T3uevesT0 TviernesT0 Ts&badoT0 TdomindoTPQ echo countMRsemanaPQ //@ //situamos el puntero en el primer elemento resetMRsemanaPQ echo currentMRsemanaPQ //lunes ne'tMRsemanaPQ echo posMRsemanaPQ //martes endMRsemanaP echo posMRsemanaPQ //domin(o prevMRsemanaPQ echo currentMRsemanaPQ //s&bado :L Recorrer una tabla con las funciones anteriores se hace un poco lioso0 para ello se recomienda utili$ar la funcin eachMP. K:php Rvisitas S arrayMTlunesTSLF,,0 TmartesTSL+A<0 Tmi/rcolesTSL+I,0 T3uevesTSL+@7PQ resetMRvisitasPQ 2hile MlistMRclave0 RvalorP S eachMRvisitasPP [ echo Tel d)a Rclave ha tenido Rvalor visitasK>RLTQ \ :L a funcin eachMPdevuelve el valor del elemento actual0 en este caso0 el valor del elemento actual y su clave0 y despla$a el puntero al si(uiente0 cuando lle(a al final devuelve BA S"0 y termina el bucle 2hileMP.

13
Copyright 2013 www.clubdeprogramacion.com

#UNCIONES

4uchas veces0 cuando traba3amos en el desarrollo de una aplicacin0 nos sur(e la necesidad de e3ecutar un mismo blo%ue de cdi(o en diferentes partes de nuestra aplicacin. 1na Buncin no es m&s %ue un blo%ue de cdi(o al %ue le pasamos una serie de par&metros y nos devuelve un valor. #omo todos los len(ua3e de pro(ramacin0 P6P trae una (ran cantidad de funciones para nuestro uso0 pero las funciones m&s (ran cantidad de funciones para nuestro uso0 pero las funciones m&s importantes son las %ue nosotros creamos. Para declara una funcin debemos utili$ar la instruccin NfunctionO se(uido del nombre %ue le vamos a dar0 y despu/s entre par/ntesis la lista de ar(umentos separados por comas0 aun%ue tambi/n habr& funciones %ue no reco3an nin(*n ar(umento. function nombrecdecfuncion Mar(c+0 ar(cF0 ...0 ar(cnP [ blo%ue de cdi(o \ #ual%uier instruccin v&lida de P6P puede aparecer en el cuerpo Mlo %ue antes hemos llamado blo%ue de cdi(oP de una funcin0 incluso otras funciones y definiciones de clases. En P6P no podemos redefinir una funcin previamente declarada0 y adem&s en P6PJ0 las funciones deben definirse siempre antes de %ue se invo%uen0 en P6PC este re%uerimiento ya no e'iste.

LA INSTRUCCI'N RETURN #uando invocamos una funcin0 la e3ecucin del pro(rama pasa a e3ecutar las l)neas de cdi(o %ue conten(a la funcin0 y una ve$ terminado0 el pro(rama continua su e3ecucin desde el punto en %ue fu/ llamada la funcin. E'iste una manera de terminar la e3ecucin de la funcin aun%ue a*n haya cdi(o por e3ecutar0 mediante el u haya cdi(o por e3ecutar0 mediante el uso de la instruccin return terminamos la e3ecucin del cdi(o de una funcin y devolvemos un valor. Podemos tener varios return en nuestra funcin0 pero por lo (eneral0 cuantos m&s return ten(amos menos reutili$able ser& nuestra funcin.
14
Copyright 2013 www.clubdeprogramacion.com

K:php function mayor MR'0 RyP [ if MR' L RyP [ return R'.T es mayor %ue T.RyQ \ else [ return Ry.T es mayor %ue T.R'Q \ \ :L Aun%ue %uedari& me3or? K:php function mayor MR'0 RyP [ Rms( S TTQ if MR' L RyP [ Rms( S R'.T es mayor %ue T.RyQ \ else [ Rms( S Ry.T es mayor %ue T.R'Q \ return Rms(Q \ :L #on la instrucin return puede devolverse cual%uier tipo de valor0 incluyendo tablas y ob3etos. P6P solo permite a las funciones devolver un valor0 y para solventar este pe%ue.o problema0 si %ueremos %ue nuestra funcin devuelva varios tenemos %ue utili$ar una tabla MarrayP. PAR(METROS E'isten dos formas de pasar los par&metros a una funcin0 por valor o por referencia. #uando pasamos una variable por valor a una funcin0 ocurra lo %ue ocurra en /sta en nada modificar& el contenido de la variable. 4ientras %ue si lo hacemos por referencia0 cual%uier cambio acontecido en la funcin sobre la variable lo har& para siempre. E variable lo har& para siempre. En P6P0 por defecto0 las variables se pasan por valor. Para hacerlo por referencia debemos anteponer un ampersand MXP a la variable.
15
Copyright 2013 www.clubdeprogramacion.com

K:php function suma MR'0 RyP [ R' S R' U +Q return R'URyQ \ Ra S +Q Rb S FQ //par&metros por valor echo suma MRa0 RbPQ // imprimir& C echo RaQ // imprimir& + //par&metros por referencia echo suma MXRa0 RbPQ // imprimir& C echo RaQ //imprimir& F :L Si %ueremos %ue un par&metro de una funcin se pase siempre por referencia debemos anteponer un ampersand MXP al nombre del par&metro en la definicin de la funcin. En P6P podemos definir valores por defecto para los par&metro de una funcin. Estos valores tienen %ue ser una e'presin constante0 y no una variable o miembro de una clase. Adem&s cuando usamos par&metros por defectos0 /stos deben estar a la derecha de cual%uier par&metro sin valor por defecto0 de otra forma P6P nos devolver& un error. K:php function suma MR'S+0 RyP [ R' S R' U +Q return R'URyQ \ :L Si e3ecutarmos esta funcin nos dar)a error0 ya %ue hemos dado a R' el valor + por defecto y la hemos colocado a la i$%uierda de un par&metro %ue no tiene valor por defecto. a forma correcta es? K:php function suma MRy0 R'S+P [ R' S R' U +Q return R'URyQ \ :L
16
Copyright 2013 www.clubdeprogramacion.com

#abe destacar %ue P6PJ no soporta un n*mero variables de par&metros0 pero P6PC s). le(ados a este punto0 damos un paso atr&s y volvemos a las variables0 para distin(uir entre variables est&ticas MstaticP y (lobales M(lobalP. as variables est&ticas se definen dentro de una funcin0 la primera ve$ %ue es llamada dicha funcin la variable se iniciali$a0 (uardando su valor para posteriores llamadas. K:php function contador MP [ static Rcount S ,Q Rcount S Rcount U +Q return RcountQ \ echo contadorMP.TK>RLTQ // imprimir& + echo contadorMP.TK>RLTQ // imprimir& F echo contadorMP.TK>RLTQ // imprimir& J :L as variables (lobales0 no se pueden declarar dentro de una funcin0 lo %ue hacemos el llamar a una variable %ue ya ha sido declarada0 tomando el valor %ue ten(a en ese momento0 pudiendo ser modificado en la funcin. K:php var Ra S +Q function vercaMP [ (lobal RaQ echo Ra.TK>RLTQ // imprimir& el valor de Ra Ra US +Q // sumamos + a Ra \ echo vercaMPQ // imprimir& + echo vercaMPQ // imprimir& F Ra S @Q echo vercaMPQ // imprimir& @ echo vercaMPQ // imprimir& A :L

17
Copyright 2013 www.clubdeprogramacion.com

BIBLIOTECA DE #UNCIONES

E'isten muchas bibliotecas de funciones en P6P Al(unos e3emplos? d d d d d d d Bunciones Bunciones Bunciones Bunciones Bunciones Bunciones Bunciones de manipulacin de cadenas de fecha y hora de arrays de ficheros matem&ticas de bases de datos de red

Al(unas bibliotecas re%uieren la instalacin de componentes adicionales !odas las funciones de biblioteca est&n comentadas en la documentacin de P6P

#UNCIONES DE MANIPULACI'N DE CADENAS e'plodeMP 5ivide una cadena en subcadenas array e'plode Mstrin( separator0 strin( strin( a0 int limitbP rtrimMP0 ltrimMP0 trimMP Eliminan caracteres a la derecha0 a la i$%uierda o por ambos lados de una cadena strin( rtrim M strin( str a0 strin( charlistbP strstrMP >usca la primera ocurrencia de una subcadena strtolo2erMP / strtoupperMP #onvierte una cadena a min*scula / may*scula strcmpMP / strcasecmpMP #ompara dos cadenas con/sin distincin de may*sculas strlenMP #alcula la lon(itud de una cadena

18
Copyright 2013 www.clubdeprogramacion.com

#UNCIONES DE #ECHA & HORA dateMP Bormatea una fecha se(*n un formato dado E3emplo? Rfecha S date MT3/n/E 6?iTPQ print MTRfechaTPQ Resultado? F</I/F,,7 +@?J< strtotimeMP #onvierte una fecha en un timestamp de 1NI; E3emplo? Rfecha S date MT3/n/ET0 strtotimeMN7 april F,,+TPPQ print MTRfechaTPQ Resultado? 7/C/F,,+ #UNCIONES DE ARRA&S arrayccountcvaluesMP #alcula la frecuencia de cada uno de los elementos de un array arraycsearchMP >usca un elemento en un array countMP #uenta los elementos de un array sortMP0 rsortMP "rdena y reinde'a un array MrSdecrecienteP _sortMP0 _rsortMP "rdena por claves un array MrSdecrecienteP AHORRANDO CODI"O #mo ahorramos l)neas de cdi(o Por lo (eneral0 todos nuestros script tienen partes de cdi(o i(uales0 las funcines includeMP y re%uireMP nos van ahorrar muchas de estas lineas de cdi(o. Ambas funciones hacen una llamada a un determinado fichero pero de dos maneras diferentes0 con includeMP0 insertamos lo %ue conten(a el fichero %ue llamemos de manera literal en nuestro script0 mientras %ue con re%uireMP0 le decimos %ue el script necesitar& parte de cdi(o de se
19
Copyright 2013 www.clubdeprogramacion.com

encuentra en el fichero %ue llama re%uireMP. #omo todo esto es un poco lioso0 veamos unos e3emplos %ue nos lo aclar&. K:php include MTheader.incTPQ echo T6ola 4undoTQ include MTfooter.incTPQ :L Si tenemos encuenta %ue el fichero header.inc contiene? KhtmlL KbodyL y el fichero footer.inc contiene? K/bodyL K/htmlL Nuestro script ser)a e%uivalente a? KhtmlL KbodyL K:php K:php echo T6ola 4undoTQ :L K/bodyL K/htmlL Ahora veamos el script de e3emplo para la funcin re%uireMP? K:php re%uire MTconfi(.incTPQ include MTheader.incTPQ echo RcadenaQ include MTfooter.incTPQ :L 5onde el fichero confi(.inc tendr)a al(o como /sto? K:php Rcadena S T6ola 4undoTQ :L

20
Copyright 2013 www.clubdeprogramacion.com

BASE DE DATOS ) M&SQL

QUE ES UNA BASE DE DATOS

1na base de datos Msea cual seaP es un soporte di(ital %ue tiene como fin el almacenamiento masivo de informacin en formato te'to plano. Aun%ue e'isten formas de (uardar otro tipo de datos como im&(enes y archivos no es recomendable hacerlo0 lo me3or en esos casos es (uardar dichos archivos en un directorio y (uardar la ruta en la base de datos. as bases de datos0 son utili$adas en sistemas %ue re%uieren una interaccin fluida con la aplicacinQ estas se encar(an muchas veces de administrar0 editar0 y dar de alta. 1sualmente la base de datos0 est& li(ada a la pro(ramacin directa del site0 causando %ue una edicin en ella cause una modificacin directa en lo %ue ve el usuario. E3emplos de aplicacin de una base de datos Menti/ndase %ue est&n li(adas a un len(ua3e din&mico como P6P o ASPP? E D comerce0 A(endas0 ibros de visitas0 foros0 portales0 etc ESTRUCTURA NORMAL DE UNA DB 1na base de datos0 a fin de ordenar la informacin de manera l(ica0 posee un orden %ue debe ser cumplido para acceder la informacin de manera coherente. #ada base de datos tiene una o m&s tablas0 las cuales cumplen la funcin de contener los campos. 1n e3emplo de tabla ser)a NcontactosO. Para entender me3or esto0 ser)a como un libro en el e'cel. 4ientras %ue los campos ser)an las columnas del e'cel donde se ordena cada datos insertado al libro. E3emplo Nid0 nombres0 apellidos0 tel/fonoO. E lue(o finalmente tenemos las filas Mro2P0 %ue son la informacin propiamente dicha. Por consi(uiente una base de datos posee el si(uiente orden 3er&r%uico? d !ablas d #ampos d Re(istros
21
Copyright 2013 www.clubdeprogramacion.com

M&SQL

Es una base de datos con licencia GP basada en un servidor0 puede ser slo creada por cdi(o. 1sualmente se utili$a el pro(rama php4yAdmin como soporte para administrar la base de datos en el nivel de pro(ramacin Ma un usuario normal le resultar)a complicado utili$arla desde linea de comandosP.

ASPECTOS B(SICOS DE PHPM&ADMIN php4yAdmin es una herramienta escrita en P6P dise.ada para la administracin de las bases de datos 4yS9 en la ]eb. Actualmente0 php4yAdmin puede crear y eliminar bases de datos0 crear/eliminar/modificar tablas0 eliminar/modificar/incluir re(istros0 e3ecutar sentencias de S9 0 y mane3ar campos con llaves. Al acceder a la base de datos deberas lo(earte con un usuario y pass2ord Mrecuerda el usuario por default y administrador es root y el pass2ord es el %ue colocaste en la instalacion de appservP CREAR UNA TABLA EN BASE DE DATOS a parte i$%uierda se usa para nave(acin en php4yAdmin. All) podr&s encontrar tus bases de datos0 en caso ten(as al(una. !an pronto como crees tablas0 se mostrar&n deba3o e'actamente de la base de datos a la %ue pertenecen. #rearemos una tabla %ue se llame T5istritoT. 1sa la opcin de #reate ne2 table. Escribe en el lu(ar correcto el nombre de la table? 5istrito0 y la cantidad de columnas %ue tendr& la tabla MJ en este casoP en el ca3n de te'to BIE 5S. Puedes eliminar la tabla usando la funcin 5R"P.

5a clic en #"N!IN1AR y debes ver al(o parecido a la (r&fica si(uiente?

El nombre de cada columna escr)belo en el BIE 5.


22
Copyright 2013 www.clubdeprogramacion.com

Ahora captura la informacin adecuada en los respectivos ca3ones de te'to? I5 int < dele(acion char +,, colonia char +,, a columna ENG6! indica el valor m&'imo %ue se permite en ese campo para captura. 6ay distintos tipos de valores %ue se puede utili$ar para la columna !EPE. char0 varchar0 int0 numeric0 etc. En este caso utili$aremos char0 %ue tiene un valor fi3o y acepta caracteres alfan*mericos. os tipos !EPES especificados en este e3emplo no necesariamente son los m&s eficientes a la hora de su uso. 5ebemos determinar cuidadosamente el tipo de valor %ue se utili$ar& dependiendo de la informacin %ue se almacenar&. a columna I5 se usar& como llave primaria0 o Primary ^ey0 para esta tabla0 y se colocar& en el tip autocincrement0 el cual (enerar& de manera autom&tica un n*mero consecutivo. #oloca el 5efault en cero ,. #uando finalices de capturar los datos0 da clic en SA=E0 o (uardar. Aparecer& una ventana similar a la si(uiente?

ZBelicidadese 6as creado tu primera tabla. os datos correspondientes a los comandos utili$ados para crear los campos tambi/n se muestra en la pantalla. No es obli(atorio ni indispensable0 pero con el tiempo empe$ar&s a reconocer comandos de 4yS9 en los mensa3es de php4yAdmin. Puedes utili$ar 5R"P para eliminar una tabla o al(uno de sus campos. INSER!AN5" 5A!"S EN 1NA !A> A 5a clic en INSER! y una pantalla como la si(uiente aparecer&?

Ahora captura los datos correspondientes a cada record. a columna I5 es autom&tica de manera %ue no debes de colocarla. Es importante saber %ue si te sientes perdido en php4yAdmin0 es suficiente darle clic a 6"4E en la parte i$%uierda y te llevar& e'actamente al lu(ar de inicio. 5ale clic a SA=E y la informacin se almacenar& en la tabla 5istrito. a ima(en %ue se mostr con anterioridad es la %ue aparece cuando insertas informacin en una tabla usando el comando INSER! de S9 . Puedes
23
Copyright 2013 www.clubdeprogramacion.com

a.adir m&s m&s de un re(istro por medio de utili$ar el botn de radio Insert Another ne2 ro20 en la forma de insercin. #uando finalices la insercin de datos0 puedes confirmar su insercin y nave(ar la informacin d&ndole clic a >R"]SE. Puedes darle clic a cada re(istro para editarlo o eliminarlo.

LEN"UA*E SQL

Este es el len(ua3e %ue se utili$a para conectarse a una base de datos. Son sentencias0 %ue reali$an un %uery MconsultaP a la 5> a fin de %ue esta les responda con una cantidad de datos limitada se(*n lo buscado. >&sicamente0 e'isten much)simas funciones de S9 0 pero detallar/ las m&s usuales0 con las cuales se pueden lo(rar una interaccin buena con la 5>. INSERTAR DATOS A UNA TABLA ESPECI#ICA INSER! IN!" fNombre !ablaf Mf Nombre #ampo f 0 f Nombre #ampo f 0 fNombre #ampofP =A 1ES MY=alorY0 Y =alorY0 Y =alor YPQ EDITAR DATOS DE UNA #ILA ESPECI#ICA 1P5A!E f Nombre !abla f SE! f Nombre #ampo f S Y=alorY0 f Nombre #ampo f S Y =alorY0f Nombre #ampo f S Y =alorY ]6ERE fidf S YNumero BilaYQ Nota? Siempre se incluye el campo id0 a fin de identificar con un valor num/rico una fila. BORRAR UNA #ILA 5E E!E BR"4 f Nombre !abla f ]6ERE fidfSYNumero BilaYQ SELECCIONAR DATOS DE UNA #ILA SE E#! Nombre #ampo0 Nombre #ampo BR"4 Nombre !abla 2here id S Numero BilaQ BUSCAR DATOS DENTRO DE UNA TABLA
24
Copyright 2013 www.clubdeprogramacion.com

SE E#! Nombre #ampo BR"4 Nombre !abla 2here Nombre #ampo I^E Y-T.#oncepto de >*s%ueda.T-Q CONTAR RE"ISTROS TOTALES EN UN CAMPO SE E#! #"1N! MNombre #ampoP BR"4 Nombre !ablaQ

BAC+UPS DE LA BASE DE DATOS Reali$a siempre un respaldo de tu base de datos de manera peridica. 5a clic sobre el nombre de la base de datos en el men* del lado i$%uierdo. 5a clic en E;P"R!.

Selecciona las tablas %ue desees respaldar. Selecciona los botones de radio S!R1#!1RE y 5A!A Selecciona los campos 5R"P !A> E E A55 IB N"! E;I!S Selecciona EN# "SE !A> E AN5 BIE NA4ES ]I!6 >A#^91"!ES. Selecciona los chec_ bo'es SA=E AS BI E y gIPPE5.

Al final solo ha$ clic en G" para e'portar las tablas seleccionadas.

25
Copyright 2013 www.clubdeprogramacion.com

INTE"RANDO PHP & M&SQL


En el capitulo anterior vimos cmo mane3ar una base de datos 4yS9 0 como interactuar con ella usando las sentencias S9 0 las cuales nos permit)an seleccionar0 actuali$ar0 insertar y eliminar re(istros de nuestras tablas. Ahora aprenderemos como usar estas sentencias pero usando P6P para por e3emplo hace un pro(rama %ue me muestre mi lista de contactos en una pa(ina 2eb.

CONECTAR A M&SQL DESDE PHP

Para conectarnos a una base de datos desde php usaremos la funcion mys%lcconnectMP 0veamos un e3emplo? K:php R#onnecS mys%lcconnectMTlocalhostT0 TrootT0TrootTPQ echo Nya estas conectadoOQ :L Solo necesitamos especificar el 6ost o servidor0 el usuario y si es %ue fuese necesario el pass2ord para poder validarnos en la base de datos. El resultado de la cone'in es almacenado en la variable R#onnec.

Ahora veamos como poder seleccionar una base de datos y enviar una consulta S9 para despu/s mostrarla en php.

K:php R#onnecS mys%lcconnectMTlocalhostT0 TrootT0TrootTPQ mys%lcselectcdbMT2ebT0 R#onnecPQ Rresult S mys%lc%ueryMTSE E#! W BR"4 a(endaT0 R#onnecPQ echo TNombre? T.mys%lcresultMRresult0 ,0 TnombreTP.TKbrLTQ echo T5ireccin? T.mys%lcresultMRresult0 ,0 TdireccionTP.TKbrLTQ echo T!el/fono ?T.mys%lcresultMRresult0 ,0 TtelefonoTP.TKbrLTQ echo TEV4ail ?T.mys%lcresultMRresult0 ,0 TemailTP.TKbrLTQ :L
26
Copyright 2013 www.clubdeprogramacion.com

#on mys%lcselectcdbMP P6P le dice al servidor %ue en la cone'in R#onnecnos %ueremos conectar a la base de datos mydb. Podr)amos establecer distintas cone'iones a la >5 en diferentes servidores0 pero nos conformaremos con una. a si(uiente funcin mys%lc%ueryMP0 es la %ue hace el traba3o duro0 usando el identificador de la cone'in MRlin_P0 env)a una instruccin S9 al servidor 4yS9 para %ue /ste la procese. El resultado de /sta operacin es almacenado en la variable Rresult. Binalmente0 mys%lcresultMP es usado para mostrar los valores de los campos devueltos por la consulta MRresultP. En este e3emplo mostramos los valores del re(istro ,0 %ue es el primer re(istro0 y mostramos el valor de los campos especificados.
MOSTRAR TODOS LOS DATOS DE UNA CONSULTA SQL

Ahora veremos como mostrar todos datos de una consulta. KhtmlL KbodyL K:php R#onnecS mys%lcconnectMTlocalhostT0 TrootT0TrootTPQ mys%lcselectcdbMT2ebT0 R#onnecPQ Rresult S mys%lc%ueryMTSE E#! nombre0 email BR"4 a(endaT0 R#onnecPQ echo TKtable border S Y+YL `nTQ echo TKtrLKtdLNombreK/tdLKtdLEV4ailK/tdLK/trL `nTQ Rtotalcro2s S mys%lcnumcro2sMRresultPQ forMRiS,QRiKSRtotalcro2sQRiUUP [ Rnombre S mys%lcresultMRresult0 Ri0 TnombreTPQ Remail S mys%lcresultMRresult0 Ri0 TemailTPQ echo TKtrLKtdLRnombreK/tdLKtdLRemailK/tdLK/trL TQ

\ echo TK/tableL TQ :L K/bodyL


27
Copyright 2013 www.clubdeprogramacion.com

K/htmlL

#omo podemos observar hemos usado la funcion mys%lcnumcro2s %ue devuelve el n*mero de filas de un resultado asi en el ciclo B"R sabemos la cantidad de veces %ue se mostrara el re(istro. Ntese %ue reempla$amos el , de la funcion mys%lcresult por la variable Ri para ir avan$ando entre re(istros. !ambi/n se puede mostrar los resultados de una consulta usando otras funciones como veremos a continuacin. KhtmlL KbodyL K:php R#onnecS mys%lcconnectMTlocalhostT0 TrootT0TrootTPQ mys%lcselectcdbMT2ebT0 R#onnecPQ Rresult S mys%lc%ueryMTSE E#! nombre0 email BR"4 a(endaT0 R#onnecPQ echo TKtable border S Y+YL `nTQ echo TKtrLKtdLNombreK/tdLKtdLEV4ailK/tdLK/trL `nTQ 2hile MRro2 S mys%lcfetchcro2MRresultPP[ echo TTKtrLKtdLRro2a,bK/tdLKtdLRro2a+bK/tdLK/trL `nTQ \ echo TK/tableL `nTQ :L K/bodyL K/htmlL En este script hemos introducido dos novedades0 la m&s obvia es la sentencia de control 2hileMP0 %ue tiene un funcionamiento similar al de otros len(ua3es0 e3ecuta una cosa mientras la condicin sea verdadera. En esta ocasin 2hileMP evalua la funcin mys%lcfetchcro2MP0 %ue devuelve un array con el contenido del re(istro actual M%ue se almacena en Rro2P y avan$a una posicin en la lista de re(istros devueltos en la consulta S9 . a funcin mys%lcfetchcro2MP tiene un pe%ue.o problema0 es %ue el array %ue devuelve slo admite referencias num/ricas a los campos obtenidos de la consulta. El primer campo referenciado es el ,0 el se(undo el + y as) sucesivamente. En el si(uiente script solucionaremos este pe%ue.o inconveniente. K:php R#onnecS mys%lcconnectMTlocalhostT0 TrootT0TrootTPQ
28
Copyright 2013 www.clubdeprogramacion.com

mys%lcselectcdbMT2ebT0 R#onnecPQ Rresult S mys%lc%ueryMTSE E#! nombre0 email BR"4 a(endaT0 R#onnecPQ if MRro2 S mys%lcfetchcarrayMRresultPP[ echo TKtable border S Y+YL `nTQ echo TKtrLKtdLNombreK/tdLKtdLEV4ailK/tdLK/trL `nTQ do [ echo TKtrLKtdLT.Rro2aTnombreTb.TK/tdLKtdLT.Rro2aTemailTb.TK/tdLK/trL `nTQ \ 2hile MRro2 S mys%lcfetchcarrayMRresultPPQ echo TK/tableL `nTQ \ else [ echo Te No se ha encontrado nin(*n re(istro ZTQ \ :L Esencialmente0 este script hace lo mismo %ue el anterior. Almacenamos en Rro2 el re(istro actual con la funcin mys%lcfetchcarrayMP %ue hace e'actamente lo mismo %ue mys%lcfetchcro2MP0 con la e'epcin %ue podemos referenciar a los campos por su nombre MRro2aTemailTbP0 en ve$ de por un n*mero. #on la sentencia if/else0 asi(namos a Rro2 el primer re(istro de la consulta0 y en caso de no haber nin(uno MelseP mostramos un mensa3e MTNo se ha encontrado...TP. 4ientras %ue con la sentencia do/2hile0 nos ase(uramos %ue se nos muestren todos los re(istros devueltos por la consulta en caso de haber m&s de uno. 6ay %ue destacar la utili$acin del punto M.P0 como operador para concatenar cadenas.

A,ADIR RE"ISTROS A NUESTRA BASE DE DATOS

Ahora veremos cmo podemos a.adir nuevos re(istros a nuesta >5. a reco(ida de datos la vamos a hacer a traves de un interfa$ de 2eb. En primer lu(ar vamos a crear una p&(ina 2eb con un simple formulario0 con los campos %ue deseamos. Bormulario inicial a.adir >5 KhtmlL KbodyL Kform methodSTpostT actionSTinsertarcre(.phpTL Nombre ?Kinput typeST!e'tT nameSTnombreTLKbrL 5ireccin?Kinput typeST!e'tT nameSTdireccionTLKbrL
29
Copyright 2013 www.clubdeprogramacion.com

!el/fono ?Kinput typeST!e'tT nameSTtelefonoTLKbrL EVmail ?Kinput typeST!e'tT nameSTemailTLKbrL Kinput typeSTSubmitT nameSTenviarT valueSTAceptar informacinTL K/formL K/bodyL K/htmlL 6emos creado un formulario donde reco(er los datos0 y una ve$ introducidos e3ecutamos un script llamado insertarcre(.php0 pues veamos como es este script.

KhtmlL KbodyL K:php // process form R#onnecS mys%lcconnectMTlocalhostT0 TrootT0 TrootTPQ mys%lcselectcdbMT2ebT0 R#onnecPQ Rs%l S TINSER! IN!" a(enda Mnombre0 direccion0 telefono0 emailP T. T=A 1ES MYRnombreY0 YRdireccionY0 YRtelefonoY0 YRemailYPTQ Rresult S mys%lc%ueryMRs%l0R#onnecPQ echo TeGraciasZ 6emos recibido sus datos.`nTQ K/bodyL K/htmlL #omo se puede ver0 para introducir un nuevo re(istro0 utili$amos la ya conocida funcin mys%lc%ueryMP0 la cu&l tambi/n usamos para las consultas0 y usaremos para las actuali$aciones0 es decir una se.ora funcin. 1na cosa muy importante0 para poder a.adir o modificar re(istros debemos tener permiso para ello en el servidor 4yS9 0 por eso en este caso me conecto como root0 pero podr)a ser cual%uier otro usuario.
MODI#ICAR RE"ISTROS DE NUESTRA BASE DE DATOS

o primero0 es lo primero0 para modificar hay %ue tener permiso para ello en el servidor de >50 el resto nos viene de corrido. Primero seleccionamos el re(istro %ue deseamos modificar0 y lue(o0 mandamos una consulta con las modificaciones0 o ambas cosas a la ve$. Suponemos %ue las modificaciones las reco(emos de un formulario como el de la leccin anterior. KhtmlL KbodyL
30
Copyright 2013 www.clubdeprogramacion.com

K:php if MissetMRidPP[ // process form R#onnecS mys%lcconnectMTlocalhostT0 TrootT0OrootOPQ mys%lcselectcdbMT2ebT0 R#onnecPQ Rs%l S TSE E#! W BR"4 a(enda ]6ERE id S RidT Rresult S mys%lc%ueryMRs%l0R#onnecPQ Rs%l S T1P5A!E a(enda SE! nombreSYRnombreY0 direccionSYRdireccionY0T. TtelefonoSYRtelefonoY0 emailSYRemailYTQ Rresult S mys%lc%ueryMRs%lPQ \else[ echo T5ebe especificar un YidY.`nTQ \ K/bodyL K/htmlL !ambi/n podr)a hacerlo de esta forma K:php if MissetMRidPP[ // process form R#onnecS mys%lcconnectMTlocalhostT0 TrootT0OrootOPQ mys%lcselectcdbMT2ebT0 R#onnecPQ Rs%l S T1P5A!E a(enda SE! nombreSYRnombreY0 direccionSYRdireccionY0T. TtelefonoSYRtelefonoY0 emailSYRemailY ]6ERE idSRidTQ Rresult S mys%lc%ueryMRs%l0R#onnecPQ \else[ echo T5ebe especificar un YidY.`nTQ \

31
Copyright 2013 www.clubdeprogramacion.com

BORRAR RE"ISTROS DE NUESTRA BASE DE DATOS

El proceso de borrar un re(istro es id/ntico al de modificar0 solo %ue en ve$ de utili$ar 1P5A!E utili$amos 5E E!E en la sentencia S9 . Por tanto el script %uedar)a como si(ue. KhtmlL KbodyL K:php if MissetMRidPP[ // process form R#onnecS mys%lcconnectMTlocalhostT0 TrootT0OrootOPQ mys%lcselectcdbMT2ebT0 R#onnecPQ Rs%l S T5E E!E a(enda ]6ERE idSRidTP Rresult S mys%lc%ueryMRs%l0R#onnecPQ \else[ echo T5ebe especificar un YidY.`nTQ \ K/bodyL K/htmlL

32
Copyright 2013 www.clubdeprogramacion.com

You might also like