View
220
Download
0
Category
Preview:
Citation preview
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
1/14
PHP y MySQLDomine el desarrollo de un sitioweb dinmico e interactivo (2 edicin)
Este libro sobre PHP y MySQLva dirigido a los diseadores y desarrolladores que deseanutilizar PP y !y"#$ %ara desarrollar un sitio web dinmico e interactivo&
En la primera parte del libro' el autor %resenta la implementacin de una base de datosMySQL lenguae "#$ ("tructured #uery $anguage)' utilizacin de las *unciones !y"#$ ycontruccin de una base de datos (tablas' +ndices y vistas) sin olvidar las t,cnicas avanzadascomo la b-squeda en te.to integral o el desarrollo de %rocedimientos almacenados&
En la segunda partedel libro' des%u,s de una %resentacin de lasfuncionalidades bsicasdel lenguaje PHP' el autor se centra en lasnecesidades especficas del desarrollo desitios dinmicos e interactivosen*ocado en a%ortar res%uestas detalladas y com%letas a las%roblemticas /abituales gestin de *ormularios' gestin de sesiones' env+o de correoselectrnicos y' %or su%uesto' acceso a una base de datos !y"#$&
0on abundantes eem%los comentados' este libro (escrito en las versions 1&1 de PP y 1& de!y"#$) es a la vez com%leto y resumido y le *acilita la %rctica&
ay elementos adicionales dis%onibles %ara su descarga en esta %gina&
Los captulos del libro:3ntroduccin 4 3ntroduccin a !y"#$ 4 5tilizar las *unciones !y"#$ 4 0onstruir una base dedatos en !y"#$ 4 6,cnicas avanzadas con !y"#$ 4 3ntroduccin a PP 4 5tilizar las *uncionesPP 4 Escribir *unciones y clases PP 4 7estionar los errores en un scri%t PP 4 7estionar los*ormularios y los v+nculos con PP 4 8cceder a una base de datos !y"#$ 4 7estionar lassesiones 4 8ne.os
9livier E5:6E$Despus de ocho aos pasados en una empresa de servicios, donde ha ocupado con xito los puestos de Desarrollador,
Jefe de Proyecto y finalmente Director de Proyectos, Olivier HEURTELha iniciado una actividad de
Consultor/Formador independiente especializado en bases de datos !racle", desarrollo #eb P$P" y sistemasdecisionales% &st' certificado como !racle Certified Professional%
9betivo de la obra
El obetivo de este libro es iniciar al lector en el desarrollo de un sitio web dinmico e
interactivo mediante PP y !y"#$&
Para alcanzar este obetivo' este libro estudia con detalle los elementos necesarios %ara la
%rogramacin de un sitio web dinmico e interactivo
utilizacin del lenguae "#$ (Structured Query Language4 lenguae estndar de acceso a
bases de datos relacionales) %ara consultar y modi*icar los datos de una base de datos
!y"#$;
creacin de una base de datos !y"#$;
utilizacin de las caracter+sticas bsicas del lenguae PP;
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
2/14
acceso a una base de datos !y"#$ a %artir de PP;
gestin de los *ormularios;
gestin de las sesiones (autenticacin' gestin de un conte.to' utilizacin de las
coo
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
3/14
En 2FFF' la versin &2 %as a tener licencia 7P$ (General Public License)&
En 2FF' la versin A' a%arecida en 2FF?' se declar estable& Esta versin a%ort numerosas*uncionalidades y meoras o%erador UNION' DELETE%ara varias tablas' nuevas o%ciones %arala gestin de los %rivilegios' meora del rendimiento' subconsultas (A&?)' etc&
En 2FF1' la versin 1' a%arecida en 2FF' se declar estable& Esta destacada versin introduonumerosas caracter+sticas que *altaban en !y"#$ rutinas' triggers' vistas&
8 inicios de 2F?' se distribuy la versin 1&&
!y"#$ est dis%onible con dos licencias di*erentes
$a licencia 7P$&
5na licencia comercial&
"i usted utiliza !y"#$ en un %roducto no comercial' %uede utilizar !y"#$ con su licencia 7P$
(versin !y"#$ 0ommunity "erver)& "i utiliza !y"#$ en un %roducto comercial' o si deseatener asistencia t,cnica %ara el %rograma' debe adquirir una licencia comercial (versin !y"#$
Enter%rise)&
nde conseguir PP y !y"#$
E.isten numerosos sitios web dedicados al lenguae PP y a !y"#$& Permiten descargar los
%roductos' consultar eem%los de scri%ts o intervenir en *oros
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
4/14
Direccin Contenido
www&%/%&net (itio )eb oficial de P$P *ue ofrece la
descar+a de P$P y un manual de referenciaen lnea muy -til% Puede ir directamente a
la direcci.n )))%php%net/nombrefunci.n
para acceder a la ayuda en lnea de una
funci.n P$P%
www&mysql&com (itio )eb oficial de 0y(12 *ue ofrece la
descar+a de 0y(12, ayuda en lnea,
artculos, un foro, etc%
/tt%BBwww&%rogramacion&comB%/%B (itio )eb en espaol dedicado a P$P *ue
ofrece noticias, manuales, as como un foro
de discusi.n%
www&zona%/%&com !tro sitio )eb en espaol dedicado a P$P
en formato blo+%
www&zend&com (itio oficial del motor de script 3end *ue
tambin tiene los cl'sicos apartados dedescar+a, e4emplos, foro5
www&easy%/%&org (itio )eb en in+ls y francs *ue ofrece
+ratuitamente un producto instalable
&asyP$P" para la plataforma #indo)s%
&ste producto incluye6 un servidor 7pache,
P$P y 0y(12% (.lo hay *ue descar+ar el
producto y hacer doble clic en el e4ecutable
*ue instala los diferentes elementos% Cinco
minutos despus, su entorno P$P80y(12
es operativo% &ste sitio )eb es interesante
para *uienes deseen montar r'pidamente
una confi+uraci.n operativa completa en
#indo)s%
/tt%BBwww&a%ac/e*riends&orgBenB.am%%&/tml !tro sitio )eb *ue ofrece un producto
instalable 970PP" en diferentes
plataformas 2inux, #indo)s, (olaris,
0ac !( 9"% &ste producto incluye, entre
otras cosas, un servidor 7pache, P$P y
0y(12% 2a instalaci.n es muy sencilla y
r'pida%
http://www.php.net/http://www.mysql.com/http://www.programacion.com/php/http://www.zonaphp.com/http://www.zend.com/http://www.easyphp.org/http://www.apachefriends.org/en/xampp.htmlhttp://www.php.net/http://www.mysql.com/http://www.programacion.com/php/http://www.zonaphp.com/http://www.zend.com/http://www.easyphp.org/http://www.apachefriends.org/en/xampp.html7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
5/14
9bviamente' esta lista no es e./austiva' %ero todos los sitios web %resentes o*recen numerosos
v+nculos /acia otros sitios& Jo lo dude y navegue %or ellos&
6odos los eem%los de este libro /an sido %robados con K8!PP $inu. ?&H& (!y"#$ 1&&?2 y
PP 1&1&)&
0onvenciones de escritura
! PHP$a sinta.is de las *unciones PP se describe de la siguiente manera en este libro
tipo_retornonombre_funcin(tipo_parmetronombre_parmetro)
tipo_retorno :ipo de retorno de la funci.n%
nombre_funcin ;ombre de la funci.n%
tipo_parmetro :ipo del par'metro aceptado por la funci.n%
nombre_parmetro ;ombre dado al par'metro%
$os ti%os de datos %osibles se %resentarn en el ca%+tulo 3ntroduccin a PP& En el caso en elque la *uncin ace%te un %armetro de cualquier ti%o' se utiliza el t,rmino mixto&
"i la *uncin no devuelve ning-n valor' la in*ormacin tipo_retorno' se omite&
Ejemplo
nombre_funcin(tipo_parmetronombre_parmetro)
"i la *uncin no toma ning-n %armetro' lain*ormacin tipo_parmetroy nombre_parmetrose omiten&
Ejemplo
tipo_retornonombre_funcin()
$os %armetros o%cionales se indican entre corc/etes ([])&
Ejemplo
tipo_retornonombre_funcin([tipo_parmetronombre_parmetro])
"i la *uncin ace%ta varios %armetros' estos -ltimos se indican' se%arados %or una coma'
seg-n la misma convencin&
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
6/14
Ejemplo
tipo_retorno nombre_funcin(tipo_parmetro_1 nombre_parmetro_1tipo_parmetro_2nombre_parmetro_!)
"i un %armetro %uede re%etirse un n-mero indeterminado de veces' detrs *igurar la
indicacin L'MN&
Ejemplo
tipo_retornonombre_funcin(tipo_parmetronombre_parmetro [,...])
"! MySQL$a sinta.is de las sentencias "#$ se describe de la siguiente manera en este libro
"#L#$%# EN'*UL#
Palabras clave del comando *%E#TE T#$LE, por e4emplo"% &n la pr'ctica,puede introducirse indistintamente en may-sculas o en min-sculas%
pa+abra enmin,-cu+a-
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
7/14
3ntroduccin a las bases de datos relacionales
! #onceptos5na base de datos es un conunto de datos estructurados que corres%onden normalmente a un
mbito *uncional (*acturacin' recursos /umanos' etc&)& C+sicamente' una base de datos se
corres%onde con un cierto n-mero de arc/ivos almacenados en un dis%ositivo de
almacenamiento&
$os datos de una base de datos son gestionados %or un %rograma llamado Sistema de Gestin
de Base de Datos("7>D)& Este %rograma o*rece di*erentes caracter+sticas acceso a los datos'
gestin de las actualizaciones' meora de la integridad' control de la seguridad de acceso' etc&
5na base de datos relacional %resenta una organizacin de los datos basada en el modelo
relacional' desarrollado en ?@F %or Edgar Cran< 0odd& Es la estructura ms e.tendida
actualmente&
En una base de datos relacional' los datos se organizan en tablas enlazadas de manera lgica&
5na tabla incluye columnas (o cam%os) que describen una *ila (o registro)& $a relacin entre las
tablas se establece mediante una columna&
Ejemplo
libro
4555545555555555555555555555555555555545555555555555554
/ i3 / titu+o / i3_co+eccion /
4555545555555555555555555555555555555545555555555555554
/ 1 / "6" 7.! 5 De-arro++o 8eb / 1 /
/ ! / Orac+e 19: 5 #3mini-tracin / 1 /
/ ; / Orac+e 19: 5 %ecoect- ? / 1 /
/ 7 / &2@L 7 5 In-ta+acin / 1 /
/ ? / "6" 2 &2@L (
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
8/14
En este eem%lo' las tablas +ibroy co+eccionestn vinculadas %or lascolumnas i3_co+eccinde la tabla +ibroe i3de la tabla co+eccion&
$a interaccin con una base de datos relacional se realiza gracias al lenguae "#$ ( Structured
Query Language)& Este lenguae %ermite la lectura y la actualizacin de los datos' as+ como la
de*inicin de la organizacin de los datos' la gestin de la seguridad' la meora de la
integridad' etc& El lenguae "#$ es un lenguae normalizado' %ero los di*erentes editores debases de datos no res%etan +ntegramente el estndar&
"! Principios de creacin de una base de datos$a creacin de una base de datos es un tema com%leo; aqu+ abordaremos slo los %rinci%ios
bsicos' con un en*oque ms %rctico que terico&
En una base de datos relacional' el obetivo es almacenar en di*erentes tablas los datos
corres%ondientes a di*erentes entidades (obetos) del mbito *uncional& El obetivo es evitar las
redundancias y /acer que un determinado dato no sea almacenado ms que una vez& En
nuestro eem%lo anterior' los datos sobre el autor de un libro no se almacenan en la tabla libro;
el autor de un libro es una entidad *uncional %or s+ sola y se almacena en una tabla se%arada&
Este %roceso de se%aracin de los datos en varias tablas se llama =normalizacin=&
5na normalizacin llevada al e.tremo %uede a*ectar al rendimiento de las consultas que deben
leer un gran n-mero de tablas& Para meorar el rendimiento de las lecturas' es %osible
OinvertirO el %roceso de normalizacin del modelo' agru%ando tablas' a riesgo de tener datos
redundantes en las di*erentes *ilas& $as bases de datos de los sistemas de toma de decisiones'
que realizan sobre todo consultas normalmente com%leas' siguen a menudo este
%rocedimiento& 8l contrario' las bases de datos de los sistemas transaccionales' que e*ect-an
%rinci%almente %equeas consultas sencillas y muc/as actualizaciones' res%etan el %rinci%io de
normalizacin&
En una base de datos relacional' cada tabla almacena la in*ormacin relativa a un obeto de
trabao concreto o abstracto que debe ser identi*icado&
En la tabla' cada columna almacena in*ormacin unitaria (atributo' %ro%iedad) que caracteriza
una *ila de la tabla& 0ada columna %osee un ti%o de datos (entero' cadena de caracteres' *ec/a'
etc&) y %uede ser obligatorio o no&
5na columna o combinacin de columnas que identi*ica de manera -nica una *ila de una tabla
se denomina clave candidata& El valor de una clave candidata es di*erente %ara todas las *ilas
de la tabla (no %uede re%etirse en ning-n caso)& 5na clave candidata %uede estar constituida
%or una columna arbitraria utilizada es%ec+*icamente %ara ello&
$a clave %rimaria de una tabla es una de las claves candidatas de la tabla' elegida ms o
menos arbitrariamente' %ues la clave %rimaria debe ser tambi,n obligatoria /ay una -nica
clave %rimaria %or tabla& $as otras claves candidatas de la tabla se denominan claves -nicas&
5na columna o combinacin de columnas de una tabla que /ace re*erencia a una clave
candidata de otra tabla (normalmente' la clave %rimaria) se denomina clave e.terna& 5na tabla
%uede tener varias claves e.ternas&
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
9/14
Ejemplo
El esquema anterior %resenta el modelo de la base de datos utilizada en este libro& Este
modelo es un modelo sim%li*icado de gestin de los libros de una editorial&
Este modelo incluye las siguientes tablas
autor 7utores de los libros%
tema :emas *ue permiten la clasificaci.n de los libros en diferentes cate+oras base de
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
10/14
datos, len+ua4e de pro+ramaci.n, etc%"% 2os temas se or+anizan en dos niveles6 tema
principal y subtema% >n subtema est' asociado a un tema primario por mediaci.n
de la columnai3_primario% Para un tema primario, lacolumna i3_primarioest' vaca%
co+eccion Colecciones de los libros *ue publica la editorial%
promocion Promociones de los libros%
+ibro 2ibros publicados por la editorial%
autor_+ibro ?elaci.n entre los autores y los libros6 un autor puede escribir varios libros y unlibro puede tener varios autores%
tema_+ibro ?elaci.n entre los temas y los libros6 un tema puede en+lobar varios libros y unlibro puede abarcar varios temas%
En todas las tablas' con la e.ce%cin de autor_+ibroy tema_+ibro' la clave %rimaria es lacolumna i3& Para las tablas autor_+ibroy tema_+ibro' la clave %rimaria es la combinacinde las dos columnasi3_autori3_+ibroe i3_temai3_+ibro' res%ectivamente&
En el estado actual' /ay una clave -nica en la columna nombrede la tabla co+eccion& En elca%+tulo 0onstruir una base de datos en !y"#$' aadiremos claves -nicas en otras tablas&
$a tabla +ibroincluye dos claves e.ternas i3_co+eccion(/acia la tabla co+eccion)ei3_promocion(/acia la tabla promocion)&
$a tabla autor_+ibroincluye dos claves e.ternas i3_autor(/acia la tabla autor)e i3_+ibro(/acia la tabla +ibro)&
$a tabla tema_+ibroincluye dos claves e.ternas i3_tema(/acia la tabla tema)e i3_+ibro(/acia la tabla +ibro)&
$a tabla temaincluye una clave e.terna i3_primario(/acia la tabla tema)&
Trabajar con MySQL
1. Administracin del servidor MySQLDespus de instalar 0y(12, podemos administrar el servidor 0y(12 con la cuenta de superusuario rootnada *uever con la cuenta rooten >nix o 2inux"%
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
11/14
=nicialmente, la cuenta rootno tiene contrasea y dispone de todos los privile+ios sobre todas las bases de datos delservidor 0y(12% &n cambio, s.lo puede conectarse localmente a partir del mismo servidor"%
&n el captulo Construir una base de datos en 0y(12, veremos c.mo crear otros usuarios y asi+narles privile+ios%
2. Interfaz de la lnea de comandos2a aplicaci.n cliente m2-+es un pro+rama interactivo *ue permite conectarse a un servidor 0y(12 y e4ecutarconsultas en dicho servidor% &sta aplicaci.n se encuentra en el directorio binde su instalaci.n 0y(12%
Sintaxis
m2-+ [5B host] [5u usuario] [5p[contrasea]] [nombre_base]
5B host $ost al *ue debe conectarse e*uipo local predeterminado"%
5u usuario ;ombre de usuario para la conexi.n nombre del usuario actual del sistemaoperativo de manera predeterminada"%
5p@contrasea]
Contrasea para la conexi.n nin+una contrasea predeterminada"% (i no se
introduce en la lnea de comandos, se solicitar' de manera interactiva, como
cual*uier contrasea% (i se especifica la contrasea en la lnea de comandos lo
*ue no se recomienda por razones de se+uridad", no debe haber nin+-n espacio
tras la opci.n 5p%
nombre_base Aase seleccionada de entrada nin+una predeterminada"%
Ejemplo
[rootFxampp G]Hmysql -u root
e+come to tBe &2@L monitor. *omman3- en3 8itB J or K:.
'our &2@L connection i3 i- ?
er
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
12/14
m2-+
&n este e4emplo, la conexi.n se realiza localmente, sin contrasea, como usuario root% Como el usuario actuales rooten el sistema operativo, puede obtenerse el mismo resultado escribiendo simplemente el comando m2-+6
[rootFxampp G]Hmysqle+come to tBe &2@L monitor. *omman3- en3 8itB J or K:.
...
(i se re*uiere una contrasea y no desea introducirla en la lnea de comandos, puede utilizar el comando si+uiente para
conectarse6
[rootFxampp G]Hmysql -u root -p
Enter pa--8or3 ****
e+come to tBe &2@L monitor. *omman3- en3 8itB J or K:.
...
(i se re*uiere una contrasea e intenta conectarse sin contrasea, obtendr' un error6
E%%O% 19=7 (!P999) #cce-- 3enie3 for u-er rootF+oca+Bo-t
(u-in: pa--8or3 NO)
7simismo, si intenta conectarse a partir de un e*uipo *ue no est' autorizado, obtendr' un error similar%
&n la interfaz de la lnea de comandos podr' introducir comandos del cliente m2-+, o bien consultas (12%
2os comandos del cliente m2-+son interpretados directamente por el cliente m2-+% &ste comando debe escribirseen una sola lnea y la utilizaci.n del punto y coma al final del comando es innecesaria% 2os comandos del
cliente m2-+no son sensibles a las may-sculas y min-sculas, y pueden introducirse, por lo tanto, de las dos formas%
2as consultas (12 se envan al servidor para su e4ecuci.n% >n consulta (12 puede escribirse en varias lneas y debe
terminarse mediante un punto y coma% 2os comandos del cliente m2-+no son sensibles a las may-sculas ymin-sculas, y pueden introducirse, por lo tanto, de las dos formas%
2os comandos del cliente m2-+m's utilizados son los si+uientes6
exito uit (ale de la aplicaci.n%
u-e nombre_base >tiliza otra base de datos%
-ource archivo_script &4ecuta un script (12%
3e+imiter caracteres 0odifica el delimitador utilizado para terminar una consulta (12%
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
13/14
Ejemplo
[rootFxampp G]Hmysql -u root
e+come to tBe &2@L monitor. *omman3- en3 8itB J or K:.
...
m2-+ use information_schema
Databa-e cBan:e3
m2-+ SELECT schema_name !"# schemata$
4555555555555555555554
/ -cBema_name /
4555555555555555555554
/ information_-cBema /
/ c3co+ /
/ m2-+ /
/ performance_-cBema /
/ pBpm2a3min /
/ te-t /
4555555555555555555554
? ro8- in -et (9.91 -ec)
m2-+ e%it
$2e
[rootFxampp G]H
0's adelante, explicaremos la sintaxis de la sentencia (12 ELE*T, as como la base dedatosinformation_-cBema%
E.iste tambi,n una sentencia USEequivalente al comando use&
$! MySQL %or&benc'!y"#$ or
7/21/2019 PHP y MySQLDomine El Desarrollo de Un Sitio Web Dinmico e Interactivo
14/14
0uando inicia la a%licacin' se muestra la siguiente ventana de inicio
0on un clic en el icono ubicado al lado del te.to MySQL #onnections%odr crear una nueva
cone.in a trav,s del siguiente cuadro de dilogo
Recommended