Desarrollo Web Con PHP y MySQL

Este libro sigue estando dedicado a ya sabéis quiénes, incluso aunque las personas en cuestión no lo sepan. A ver si log

Views 171 Downloads 42 File size 7MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Este libro sigue estando dedicado a ya sabéis quiénes, incluso aunque las personas en cuestión no lo sepan. A ver si logramos mantener el secreto otro libro más.

Agradecimientos Son muchas las personas con las que tengo una deuda de gratitud pero poco el espacio disponible para pagarles; toca generalizar. Gracias a todas aquellas personas que me están ayudando a apreciar las cosas sencillas como, por ejemplo, los momentos que puedo compartir con ellas. Y claro, le tengo que dar las gracias a Ignacio Cerro por poner prólogo a esta obra y ponerla en perspectiva, y a Guadalupe Torres por darle un toque de color y de estilo al libro con una portada tan maravillosa. Por cierto, quizá en la dedicatoria no ha quedado del todo claro que este libro va para toda la familia de Guille, que tan bien se está portando con él.

Introducción ¿Revolución? No, realidad. Está usted leyendo la introducción de un libro que contiene las claves para convertir sus páginas Web en aplicaciones Web, cuyo contenido se obtiene a partir de una base de datos, y que permite a sus usuarios almacenar información en esa misma base de datos. Y si tiene usted esta guía en sus manos no hace falta que le convenza (al menos, no mucho) de la formidable pareja que hacen MySQL y PHP. Éste es un mundo de descubrimientos. Y de maravillas. Y está en continuo cambio. Fue en el año 1990 cuando comenzó todo, de mano del investigador Tim Berners-Lee, el padre de la criatura. No ha pasado tanto tiempo desde entonces, ¿verdad? Y sin embargo, han pasado tantas cosas que parece casi increíble. En primer lugar, están las páginas Web, escritas en leguaje HTML. Este lenguaje permite describir la ubicación de diferentes elementos en una página, además de sus propiedades (tamaño, color, etc.). Salvando las distancias, sería una tarea similar a la de un pintor trabajando con un lienzo. No en vano la tarea de crear páginas HTML se deja en manos de los diseñadores, los artistas de la Web. Estas páginas reciben el calificativo de estáticas porque, una vez publicadas, su contenido permanece inalterable. Hasta que decidamos modificarlas, claro está, pero en este caso se trataría de otra página. Y es aquí donde aparece PHP. PHP es un lenguaje, como HTML, pero con una diferencia notable: tanto los elementos de una página como su ubicación dentro de ella pueden variar dependiendo de las condiciones que creamos oportunas. Esto permite crear contenidos totalmente flexibles. Una sencilla aplicación de las posibilidades de PHP consiste en incluir detalles de la fecha y la hora actuales en las páginas aunque, obviamente, esto no se queda ahí. Puede variar el contenido de las páginas dependiendo del cliente Web que se esté utilizando para ver las páginas. Así, si utiliza Firefox, puede mostrar la página de una manera y si utiliza Internet Explorer de otra totalmente diferente. Por otro lado están las bases de datos, presentes en multitud de aspectos de la vida cotidiana: en el móvil, en el banco, en el supermercado. Sin que seamos conscientes de ello, convivimos con estos sistemas. Inicialmente, su alto coste no hacía previsible esta expansión. Pero la situación ha cambiado considerablemente porque hoy en día podemos encontrar sistemas gestores de bases de datos que utilizar libremente. Entre ellos destaca uno, MySQL, el más utilizado de los de su clase. Y por último, está su unión. Para que se haga una idea

del potencial que la combinación de estas tecnologías tiene, suponga que quiere poner a disposición de todo el mundo, en su propio servidor Web, información sobre su colección de películas. Normalmente esto significaría crear una página por cada película. Sin embargo, utilizando MySQL y PHP juntos, podrá crear una única página cuyo contenido variará dependiendo de la película que quiera seleccionar. En esta guía aprenderá a hacerlo. La unión hace la fuerza, nada más cierto. Combinando las tecnologías necesarias para ofrecer páginas Web, para administrar bases de datos y el lenguaje de páginas dinámicas PHP, podrá poner a disposición de todos aquellos que tengan acceso a Internet un catálogo de productos o cualquier otra información que desee mostrar. Y las posibilidades no se limitan a Internet. La red local de su empresa puede ser también el medio de difusión ideal, ya se trate de una aplicación para la gestión de las tareas asignadas a cada departamento o de un boletín de noticias privadas. El límite lo marca su imaginación. Estamos hablando de medios de difusión, equiparando una red de ordenadores con una red de periódicos, de televisión o de radio, porque es así. Las principales cadenas de radio del mundo emiten en Internet desde hace tiempo, los periódicos más importantes tienen su versión digital, e incluso las televisiones se intentan abrir hueco. Muchos asisten perplejos al nacimiento de un nuevo sistema de comunicación de noticias basado en el mismo esquema: un servidor de bases de datos que almacena las noticias y un servidor Web que, gracias al uso de lenguajes como PHP, las ofrece a todos los que quiera leerlas o publicarlas. Muchos de estos sistemas, conocidos como blogs (de Web Logs) utilizan PHP y MySQL para su funcionamiento. Hemos empezado diciéndole que estamos frente a una realidad y hay varios hechos que lo constatan. El más significativo de ellos es la aparición, sin pausa, de versión tras versión de PHP, cada una de ellas incorporando interesantes novedades, haciéndolo aún más potente y capaz de lo que ya era. Si a esto unimos la madurez en la que se encuentra MySQL tras el lanzamiento de su versión 5.1 (que bien podría haber sido llamada la versión 6), no podemos equivocarnos: PHP y MySQL es la pareja ganadora. Decidirse por ellos es unirse a una de las mayores comunidades de desarrolladores de nuestro planeta, una gran ventaja, ya que se cuenta con mucha experiencia acumulada que puede ser de utilidad. Acompáñenos en lo que le prometemos será un viaje de descubrimientos y de maravillas. No le defraudaremos.

Cómo usar este libro El objetivo de esta guía es que, a su fin, sea capaz de desarrollar aplicaciones para la Web basadas en MySQL y PHP. Tanto si ya ha trabajado con ellos por separado o conjuntamente como si éste es su primer contacto, está en buenas manos. En primer lugar queremos que sepa exactamente qué es lo que logrará si sigue con nosotros durante el resto del viaje. Para ello hemos preparado un primer capítulo equiparable a una terapia de choque. Durante este capítulo configurará un completo sistema de desarrollo y aprenderá qué son un servidor Web, un servidor de bases de datos y dónde encaja PHP dentro de todo esto. Para ilustrar esta explicación nada mejor que un sencillo ejemplo. Al terminar este capítulo debería tener una visión de conjunto de todas las tecnologías que va a utilizar. El segundo capítulo es una introducción al lenguaje PHP para aquellos que aún no lo conozcan: desde la declaración de variables y sus posibles tipos hasta las instrucciones de control. En la misma línea que el anterior, el tercer capítulo se dedica al sistema gestor de bases de datos MySQL. Hablaremos sobre sus características, veremos qué son bases de datos y tablas y los tipos de datos que podemos almacenar. Los capítulos cuarto y quinto están dedicados a ampliar los conocimientos adquiridos en el segundo y el tercero. De nuevo están dedicados a PHP y MySQL, pero a aspectos que aún no se han tratado y cuya importancia es fundamental. En concreto, funciones y programación orientada a objetos en lo que se refiere a PHP y diseño de bases de datos con respecto a MySQL, ya que antes de entrar en el meollo de la cuestión, diseñaremos la base de datos con la que vamos a trabajar. En el sexto capítulo aprenderá a utilizar el lenguaje SQL para obtener la información que desee de una base de datos, así como para modificarla. La verdadera acción comienza en el capítulo séptimo. En él MySQL y PHP unen sus fuerzas. Para acceder a bases de datos de MySQL desde PHP utilizaremos la nueva interfaz entre ambos que PHP presentó en la versión anterior a la actual, la 5. Veremos con detalle el ejemplo expuesto durante el primer capítulo, combinado con la base de datos diseñada en el capítulo anterior, y lo ampliaremos. En el capítulo octavo hablaremos sobre los formularios en HTML y JavaScript. Hasta ahora se habrá limitado a obtener información de una base de datos y mostrarla en una página Web, pero con lo que aprenda en este capítulo será capaz de permitir que el usuario de sus aplicaciones Web también pueda guardar datos. Entre otros usos, JavaScript le ayudará a comprobar que estos datos son

correctos, ahorrándole trabajo en sus páginas PHP y evitando posibles errores. El noveno capítulo está dedicado a uno de los aspectos que más se descuidan durante la creación de un programa en PHP: la gestión de errores. Verá cómo configurar PHP y MySQL en este aspecto, y cómo crear sus propios gestores de error. A estas alturas de la guía ya habrá visto lo complicado que es mantener dos lenguajes como PHP y HTML en un único archivo. Lo ideal es que el trabajo de diseño y el de programación se puedan hacer de forma independiente. Esto es posible gracias al uso de plantillas, que veremos durante el capítulo décimo. Los capítulos decimoprimero, decimosegundo y decimotercero están dedicados a los procedimientos almacenados, los desencadenadores y las vistas, respectivamente. Se trata de características avanzadas de MySQL que le resultarán extremadamente útiles. Esta guía se cierra con un capítulo dedicado a XML, un estándar con el que tanto MySQL como PHP pueden trabajar. En dicho capítulo veremos cómo utilizar sus características de forma conjunta. En un mundo que evoluciona tan rápido como el de la informática, no hay nada peor que un libro que no evoluciona al mismo paso. Por ello hemos puesto a su disposición la página Web: http://enreas.com/amp/ Los productos que utilizamos en este libro dan el nombre a la página: Apache, MySQL y PHP (AMP). En ella podrá encontrar los ejemplos del libro, contactar con el autor de esta guía y mucho más.

Prólogo Perspectiva. La velocidad a la que se suceden los acontecimientos en nuestros días nos dejan, en muchos casos, carentes de perspectiva para entenderlos. En el día de ayer mi hijo de nueve años se acercó al frigorífico de la casa y sacó un batido. Estaba frío, que es lo que se espera cuando uno saca una bebida del frigorífico. A continuación, se sentó delante de un portátil que suele estar en la cocina y abrió Spotify. Eligió su lista de canciones favoritas y comenzó a escuchar música. La música estaba donde debía y hacía lo que se esperaba que hiciese. Todo ocurrió con la misma coherencia y trasparencia que cuando tomó el batido en sus manos. Todo según lo esperado. En apenas 30 segundos, dos electrodomésticos le ofrecieron lo que él buscaba. Con naturalidad, con claridad, sin interrogantes y sin perspectiva. Nos estamos convirtiendo, con el paso del tiempo y con la ayuda de las nuevas tecnologías, en auténticos devoradores. Devoradores de datos, de imágenes, de opciones, de contactos. A veces tiendo a imaginarme lo que Internet ofrece como un ente físico, con estructura y vida propia, con extremidades copadas de conocimientos y ansioso por atravesar el umbral de la puerta de mi casa. Qué difícil es parar y cargar una dosis de perspectiva. Perspectiva para entender que las cosas no suceden porque sí, que el fruto de muchos años de trabajo puede hacer que algo parezca evidente pero es la consecuencia de horas y horas con muchos interrogantes y pocas respuestas. Qué difícil es entender que nuestra obligación pasa tanto por respetar lo que hay como por arrasarlo para construir algo nuevo. Recibir y ofrecer. En esta dirección he debido hacer un ejercicio de autocrítica. Parar y pensar un poquito. Pensar sin muchos datos. Yo solito, sin Google, sin Wikipedias a mi alcance. Pensar en lo que hago cada día. Cuestionarme por qué está frío el batido, por qué usaron ese plástico para distribuirlo, por qué el color del envase coincide con el del contenido, por qué tiene ese tamaño si suelo quedarme con ganas de coger otro. No dar nada por supuesto. No aceptar nada porque exista desde hace tiempo. Y en esta senda me topo con algo que uso a diario para mi trabajo, que me ofrece información, herramientas, soluciones. Algo que nunca me paré a mirar y que forma parte de mi día a día como si de un grifo se tratase. Lo abro y allí está la respuesta. Comienza mi jornada delante del ordenador y algunos actos se suceden a lo largo del día, un día tras otro: consulto una enciclopedia, accedo a un foro, comento en un blog, publico en otro, relleno un formulario. Me siento como un funcionario del control de aduanas de Andorra. Veo pasar todo ante mí fluyendo sin aparente esfuerzo.

Pero ¿qué hay detrás de todo eso? ¿Qué es lo que lo sostiene? No puedo negar que últimamente me siento fuertemente atraído por eso que llaman software libre. Lo reconozco con cierta vergüenza, pues durante muchos años me fue muy ajeno. Pero es que no puedo dejar de imaginarme a una legión de programadores, semejante en número y constancia a un piélago de orcos camino del Abismo de Helm, levantándose cada día para hacer que todo siga funcionando. Ahora está pasando las primeras páginas de un libro que pretende mostrar algunas de las cualidades de dos de estos hermanitos que dan de comer a la legión que nombramos anteriormente: PHP y MySQL. Si he de ser sincero, para mí no son más que un conjunto de letras reunidas con poca gracia, pero ya advertí que era el momento de parar y pensar. Muchas de las tareas que realizo a diario están soportadas por bases de datos construidas con MySQL y se muestran en páginas programadas con PHP. Pero a mí me da igual y, aunque hoy lo que pretendo es rendir un pequeño homenaje a aquellos que hacen posible que esto siga creciendo, lo que me dejan es su eficiencia. Su engranaje es sublime. ¿Quien los puso a todos de acuerdo para que la máquina funcionara? ¿Cuál fue el origen? ¿Qué puerta hay que cruzar para dejar de ser un devorador y formar parte de la legión? ¿Dónde está la clave para dar soporte y ánimo al grupo? El software libre se nos ha metido en casa. Lo usamos a diario con la misma naturalidad que tenemos al coger el mando a distancia de la televisión. Entenderlo un poco nos ayudaría a respetarlo. Conocerlo nos permitiría hacerlo crecer. Creer que está a nuestro alcance el participar de la batalla no es algo insensato. Por este motivo les invito a que, conmigo, sigan pasando páginas y que puedan encontrar en lo que viene a partir de este momento al menos una respuesta a tanto interrogante. Les dejo ahora con uno de esos disciplinados orcos. Doy fe de que no es mala compañía. Ignacio Cerro

1

MySQL y PHP Para el impaciente. Este capítulo está pensado para aquel lector que no está muy seguro de lo que podrá encontrar en este libro. Durante las siguientes páginas crearemos una pequeña aplicación Web que muestre el contenido de una base de datos en una página HTML, utilizando PHP como unión. Veremos que es posible tener una base de datos, extraer los datos almacenados en ella y mostrarlos en una página Web. Y veremos que, si cambia alguno de los datos de una tabla, el contenido de la página Web cambiará sin que por ello tenga que cambiar ni una sola línea de la página PHP. No se preocupe si muchos de los conceptos que se presenten durante este capítulo le son desconocidos: profundizaremos en todos ellos durante el resto del libro. Antes de que el lector pueda comenzar a realizar sus propios desarrollos será necesario que pasemos por algunos capítulos que le mostrarán las características principales de MySQL y PHP. No queremos engañarle, hay que tener paciencia para contener los deseos de avanzar capítulos sin prestar la debida atención a los pilares fundamentales del desarrollo de páginas Web de contenido dinámico. Una vez tenga esos conocimientos básicos, aprenderá a utilizar de forma conjunta ambas tecnologías. MySQL y PHP son grandes productos por sí solos, pero juntos forman una de las parejas más formidables del mundo del software libre. Plantéese la lectura de este capítulo como la de una novela: le narraremos una historia que habla del futuro, de su futuro, de las maravillas que podrá construir tras el trabajo que supondrán los capítulos siguientes a éste.

La primera aplicación ¿Cuál es nuestro objetivo? Construir una aplicación que muestre el contenido de una base de datos en una página Web. Pero es mejor concretar un poco más. Vamos a desarrollar una pequeña aplicación Web que permita gestionar nuestra videoteca. Sería muy ambicioso por nuestra parte comenzar esta guía con un trabajo de tales características, así que iremos por partes: nos limitaremos a crear una aplicación para realizar el mantenimiento de una lista de géneros cinematográficos. Este trabajo formará luego parte de la aplicación que gestionará nuestra videoteca. Las aplicaciones Web que veremos se componen de varias partes:

Un servidor de bases de datos: MySQL ha sido la elección lógica, debido a su potencia y a que es uno de los más utilizados. Una base de datos: Contiene las tablas y los datos con los que queremos trabajar. Puede modificar el contenido de la base de datos y ver cómo el contenido de las páginas Web de su aplicación cambia sin que tenga que alterar una sola línea de código. Un servidor Web: Aunque podríamos escoger cualquier servidor Web que permita la ejecución de PHP, nos decantamos por Apache por varios motivos. Entre ellos, que se trata del servidor Web más utilizado en el mundo y es libre, por lo que todos podemos utilizarlo en Windows, Linux o Mac OS X. PHP: El nexo de unión entre la base de datos y los clientes potenciales de nuestra aplicación Web. Clientes: Los clientes son los usuarios de nuestra aplicación Web. Sea un desarrollo hecho para nuestro propio disfrute o para el de los demás, si nadie (persona o máquina) va a utilizarlo quizá su existencia carezca de sentido. La figura 1.1 muestra las relaciones existentes entre los diferentes elementos que acabamos de enumerar.

Figura 1.1. Aplicaciones Web

Por lo tanto, el primer paso será disponer de todos los servicios necesarios: MySQL para las bases de datos y Apache (con PHP) para las páginas Web. Tras ello, podremos comenzar con a trabajar. Nuestro desarrollo va a comenzar con la creación de la base de datos. Posteriormente poblaremos dicha base de datos con las tablas y los registros necesarios. Continuaremos con la programación en PHP de la página que mostrará el contenido de una de las tablas de la base de datos. Al terminar podremos contemplar algo parecido a lo que se puede ver en la figura 1.2.

Figura 1.2. Nuestro objetivo

Not a: No preste atención al diseño de la página, a su aspecto, y concéntrese en el contenido de la misma, en que todo funciona como se espera. En el capítulo dedicado a Smarty aprenderemos a separar la lógica (funcionamiento, programación) de la representación (aspecto, diseño).

XAMPP Como acabamos de comentar, para que se pueda poner manos a la obra necesita disponer de un sistema con Apache, PHP y MySQL instalados y en funcionamiento. Francamente, haría falta un libro como éste sólo para comenzar a explicar cómo instalar y configurar correctamente estos tres componentes en los tres sistemas operativos más utilizados del mercado (Windows, Linux y Mac OS X). Pues, aunque le parezca mentira, existe una forma rápida y sencilla de instalar y configurar todo esto, de un plumazo, en cualquiera de los sistemas operativos antes mencionados: XAMPP. Puede encontrarlo en la página: http://apachefriends.org/ Not a: XAMPP son las siglas de X, Apache, MySQL, PHP y Perl. Se utiliza una X para representar al sistema operativo y no una W (de Windows) o una L (de Linux), como en WAMP o LAMP. En este libro no utilizaremos esa última P.

Un par de aclaraciones. En primer lugar, XAMPP es ideal para entornos de desarrollo. Sin embargo, la opción recomendada para un servidor de producción (es decir, aquel en el que se encontrarán las aplicaciones Web una vez concluido su desarrollo) sigue siendo la más compleja: la instalación, configuración y mantenimiento de cada uno de los componentes de forma individual. Obviamente, se trata de un trabajo que es necesario dejar en manos de expertos capaces de garantizar la seguridad y el rendimiento del servidor. En segundo lugar, XAMPP no es algo único. Existen muchas otras soluciones para instalar Apache, PHP y MySQL con facilidad. La razón por la que lo utilizaremos en este libro es múltiple: Está a su disposición ya utilice Windows, Linux o Mac

OS X. El equipo responsable de su desarrollo se preocupa de mantenerlo actualizado para que ofrezca la última versión de cada componente. Incluye multitud de herramientas como, por ejemplo, phpMyAdmin, una aplicación Web para la administración de bases de datos MySQL. Proporciona una interfaz de usuario muy fácil de utilizar para poner en marcha y detener los servicios, de forma individual. No es obligatorio que use XAMPP, podrá seguir los ejemplos de este libro siempre y cuando disponga de un equipo con Apache, PHP y MySQL correctamente instalados y configurados.

Puesta en marcha de XAMPP Independientemente del sistema operativo, la instalación de XAMPP es prácticamente idéntica: tendrá que descargar un archivo, extraer su contenido y ejecutar una orden para poner en marcha los servicios necesarios. Puesta en marcha en Windows La forma más sencilla de disponer de la versión para Windows de XAMPP es utilizar el asistente para la instalación disponible en la siguiente dirección: http://apachefriends.org/en/xampp-windows.html Cuando termine de descargar el instalador haga doble clic sobre él y siga los pasos del mismo. Como podrá comprobar, se trata de un proceso muy simple. El más complejo de ellos, que puede ver en la figura 1.3, consiste en seleccionar la ruta en la que se instalará XAMPP.

Figura 1.3. Instalación de XAMPP en Windows

Advert encia: ¿Por qué es el paso más complejo? Porque, según se comenta en la página dedicada a la versión para Windows de XAMPP, la mejor forma de evitar problemas con los permisos de la carpeta de archivos de programa si se instala en Windows Vista es utilizar una carpeta que se encuentre en la raíz del disco como, por ejemplo, C:\xampp.

Las opciones predeterminadas de los pasos del asistente serán las más adecuadas en la mayoría de los casos. Cuando el proceso de instalación concluya se le ofrecerá la opción de ejecutar el panel de control de XAMPP. Responda que sí: podrá ver un cuadro de diálogo similar al que muestra la figura 1.4.

Figura 1.4. Panel de control de XAMPP

En lo que a esta guía respecta sólo nos interesarán los botones asociados a Apache y a MySQL. Haga clic en Start para poner en marcha un servicio. Cuando esté en funcionamiento aparecerá una etiqueta a su derecha con el texto Running y el nombre del botón cambiará por Stop. Utilícelo para detener el servicio correspondiente cuando lo desee. El panel de control de XAMPP se encuentra dentro del menú Inicio, haciendo clic en Programas o Todos los programas y, a continuación, en Apache Friends>XAMPP>XAMPP Control Panel. Puesta en marcha en Linux La instalación y puesta en marcha de XAMPP en Linux no podría ser más sencilla: 1. Descargue la versión para Linux de XAMPP, que se encuentra en la página: http://apachefriends.org/en/xampp-linux.html 2. Inicie una sesión como administrador del sistema o utilice la orden su para obtener sus privilegios. 3. Utilice la siguiente orden para extraer su contenido, sustituyendo X e Y por los números correspondientes a la versión de XAMPP que haya descargado: tar xvfz xampp-linux-X.Y.tar.gz -C /opt 4. Como resultado, XAMPP se encontrará en dentro de la carpeta /opt. 5. Por último, ejecute la orden /opt/lampp/lampp start para poner en marcha XAMPP y /opt/lampp/lampp stop para detenerlo. Consejo: Póngase en contacto con el administrador de su sistema Linux si tiene dificultades para seguir las anteriores instrucciones o si el resultado obtenido no

es el deseado, algo que puede ocurrir si en su equipo ya están instalados y en funcionamiento Apache o MySQL.

Puesta en marcha en Mac OS X De nuevo, al igual que en los dos apartados anteriores, dedicados a Windows y Linux, es necesario decir que la instalación de XAMPP en Mac OS X es muy sencilla: 1. Descargue la versión para Mac OS X de XAMPP, que se encuentra en la página: http://apachefriends.org/en/xampp-macosx.html 2. Haga doble clic sobre el archivo DMG descargado. 3. Una vez la imagen de disco se monte haga doble clic sobre el archivo XAMPP for MacOS X.pkg y siga los pasos del instalador. 4. Cuando el proceso de instalación concluya sólo restará poner en marcha los servicios. Para ello abra un terminal y ejecute la orden sudo /Applications/XAMPP/xamppfiles/mampp start. Podrá ver algo parecido a lo que muestra la figura 1.5.

Figura 1.5. Puesta en marcha de XAMPP en Mac OS X

6. De igual forma, para detener los servicios deberá ejecutar, también desde un terminal, la orden sudo /Applications/XAMPP/xamppfiles/mampp stop. Con independencia del sistema operativo que utilice, XAMPP estará disponible a través de la dirección http://localhost/. Vaya allí con su cliente Web favorito; podrá ver una página de presentación con diferentes enlaces, uno por cada idioma disponible. La figura 1.6 muestra el resultado de hacer clic sobre Español y, después, sobre Estado en la parte izquierda de la página.

Figura 1.6. Estado de los servicios de XAMPP

El aspecto de estas páginas es prácticamente idéntico en Windows, Linux y Mac OS X. Ahora que ya tiene XAMPP instalado asegúrese de que Apache y MySQL estén en funcionamiento antes de pasar al siguiente apartado, donde nos pondremos manos a la obra.

Trabajando con MySQL Nuestro primer paso, siempre que comencemos el desarrollo de una aplicación Web que trabaje con MySQL, debería ser diseñar la base de datos. Existen herramientas que pueden ayudarnos a realizar esta tarea. De entre todas ellas, le recomendamos MySQL Workbench, disponible para Windows, Linux y Mac OS X. Pero antes de utilizar herramienta alguna hemos de tener claro qué información debe contener la base de datos. Para ello, nada mejor que el diálogo con aquellos que lo sepan. Si vamos a desarrollar una aplicación para una empresa, hemos de hablar todo lo que sea necesario con aquellos que tengan más información al respecto, que de verdad sepan cómo debe funcionar. En nuestro caso lo tenemos más fácil: sabemos lo que queremos, puesto que durante este aprendizaje seremos nuestro propio jefe. Vamos a guardar en una tabla dentro de una base de datos de MySQL información sobre géneros cinematográficos. Posteriormente utilizaremos estos géneros conjuntamente con otras tablas, que contendrán información sobre películas.

Creación de la base de datos

Aunque existen herramientas en línea de órdenes para realizar operaciones con MySQL, dejaremos esa opción para aquellos lectores que lo encuentren necesario. MySQL pone a nuestra disposición una herramienta mucho más amable: MySQL Administrator. Puede encontrarla en la siguiente página, formando parte del paquete MySQL GUI Tools: http://dev.mysql.com/downloads/gui-tools/ Not a: Si instaló XAMPP también podrá utilizar phpMyAdmin para realizar estas operaciones en el servidor de base de datos MySQL de su ordenador. phpMyAdmin estará a su disposición a través del URL http://localhost/phpmyadmin/.

La primera vez que se ejecuta MySQL Administrator se presenta un cuadro de diálogo para conectarse a un servidor, que puede ver en la figura 1.7.

Figura 1.7. Conexión con un servidor MySQL

Este cuadro de diálogo le pedirá todos los datos necesarios para que se pueda establecer comunicación con el servidor MySQL con el que quiere trabajar. Basta con que introduzca el nombre del servidor en el cuadro de texto Server Host (si se trata del mismo en el que se está ejecutando MySQL Administrator este nombre será localhost) y el nombre del usuario en Username. En este caso, como estamos utilizando XAMPP, este nombre será root y no tendrá contraseña asignada, algo que supondría un problema de seguridad en un servidor de producción pero que permite trabajar mucho más ágilmente en un puesto personal. Por supuesto, si el servidor está en otro ordenador, introduzca su nombre o IP en el cuadro de texto Server Host, y utilice el nombre de usuario y la clave correspondientes para intentar conectarse. Haga clic en OK cuando haya terminado. La figura 1.8 muestra el aspecto de MySQL Administrator tras realizar la conexión con el servidor. En dicha figura puede observarse que, en el panel de la izquierda, abajo del todo, aparece un nodo llamado Catalogs. Haga clic con el botón izquierdo del ratón sobre ese nodo. Bajo él aparecerá una lista con todos los catálogos (bases de

datos) disponibles. Haga clic con el botón derecho sobre este nuevo panel y seleccione la opción Create New Schema del menú desplegable que aparecerá.

Figura 1.8. MySQL Administrator, en funcionamiento

MySQL Administrator le presentará un cuadro de diálogo en el que sólo se le pedirá que introduzca el nombre de la nueva base de datos. Escriba videoteca. Ese será el nombre de la base de datos con la que trabajaremos durante el resto del libro. Cuando haga clic en OK el panel que contiene la lista de catálogos mostrará un aspecto similar al de la figura 1.9, donde la base de datos recién creada está seleccionada.

Figura 1.9. Nuestra nueva base de datos

Ésta, videoteca, será la base de datos con la que trabajaremos a partir de ahora. No preste demasiada atención al resto de bases de datos que aparecen en este panel, no las utilizaremos para nada. Si lo desea, puede crear sus bases de datos a partir de scripts SQL. Esta forma de trabajo tiene algunas ventajas sobre la que acaba de ver. Por ejemplo, permite repetir la operación de creación de la base de datos tantas veces como sea necesario, tenga acceso a MySQL Administrator o no. Para ello, una vez conectado con el servidor de bases de datos, seleccione la opción MySQL Query Browser del menú Tools, lo que ejecutará otra de las herramientas de MySQL, pensada para la ejecución de consultas.

MySQL Query Browser permite dar órdenes al servidor MySQL utilizando el lenguaje SQL. Por ejemplo, para crear la base de datos videoteca podría utilizar las siguientes instrucciones: DROP DATABASE IF EXISTS videoteca; CREATE DATABASE videoteca;

La primera de estas líneas borra la base de datos videoteca en caso de que exista. La segunda, la crea. De esta forma evitará que ocurran errores si intenta crear la base de datos cuando ésta ya existe. Tenga presente, sin embargo, que si existe la borrará y perderá todos los datos que contenga. Para ejecutar las instrucciones anteriores seleccione la opción New Script Tab del menú File. Aparecerá una nueva ficha con el título Script 1. Escriba las dos líneas anteriores en el área central de MySQL Query Browser y haga clic en el botón Execute, que se encuentra en la barra de herramientas (es de color verde y tiene algo así como un rayo en el centro). La figura 1.10 muestra el aspecto de este programa tras ejecutar las dos instrucciones anteriores. El puntero de ratón está sobre el botón Execute. Ahora que tiene la base de datos necesita crear la tabla que contendrá los detalles de cada género.

Figura 1.10. SQL para crear una base de datos

Creación de la tabla ¿Qué detalles queremos guardar de cada género? Por una parte, vamos a guardar su descripción. Esta descripción define el género cinematográfico de forma completa: ciencia ficción, aventuras, drama, etc. También puede ser de utilidad guardar una abreviatura de dicha descripción. Por último, vamos a guardar un identificador numérico que será único para cada género. Utilizaremos este identificador para relacionar cada película con el

género cinematográfico correspondiente. Ya sabe los detalles que debe guardar de cada género. Ahora decida el tipo de datos que tendrá cada uno de ellos. El identificador será un número. Vamos a limitar la longitud del nombre que le damos a ese género, su abreviatura, a dos caracteres, mientras que su descripción podrá tener hasta 32. La figura 1.11 muestra el aspecto que podría tener esta tabla una vez la cree utilizando MySQL Workbench.

Figura 1.11. La tabla de géneros

Not a: El diseño de bases de datos es una tarea fundamental e importante. Puede encontrar algunos consejos al respecto en el capítulo 5.

La figura 1.11 muestra la tabla de géneros después de diseñarla utilizando MySQL Workbench. Este programa nos permite crear tablas y relacionarlas de forma muy sencilla. En la figura 1.12 vemos el panel de MySQL Workbench con el que hemos creado la tabla de géneros.

Figura 1.12. Diseñando la tabla de géneros

Pero lo mejor de todo es que puede obtener el código SQL necesario para crear esta tabla de forma automática, tras realizar el diseño. Sólo ha de hacer clic con el botón derecho sobre la tabla que acabamos de crear en MySQL Workbench y seleccionar la opción Copy SQL to Clipboard del menú contextual que aparecerá. Abra su editor de texto favorito (el bloc de notas, por ejemplo) y pegue el contenido del portapapeles utilizando la combinación de teclas Control-V. Por ejemplo, el siguiente es el código necesario para crear la tabla de géneros: CREATE TABLE genero ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, nombre VARCHAR(2) NOT NULL, descripcion VARCHAR(32) NOT NULL, PRIMARY KEY (id) );

En el apartado anterior vimos cómo ejecutar código SQL

utilizando MySQL Query Browser. Vamos a utilizar esa técnica de nuevo para crear la tabla de géneros. En primer lugar seleccione la opción New Script Tab del menú File, dentro de MySQL Query Browser. Se abrirá una ficha con un título similar a Script 1 (el número final puede variar, dependiendo de si existen o no otras fichas del mismo tipo). Escriba la siguiente instrucción en el área central de MySQL Query Browser y haga clic en el botón Execute: USE videoteca;

A partir de ese momento, todas las operaciones que realice estarán referidas a dicha base de datos. Así, cuando creemos la tabla de géneros lo haremos en la base de datos videoteca. Vamos a ello: escriba en la ventana de consultas la instrucción para creación de tabla que vimos anteriormente y haga clic en el botón Execute. Si todo ha ido bien dispondrá de una base de datos y de una tabla, más que suficiente para comenzar a introducir datos. Existen otras formas de crear tablas, utilizando otras herramientas, pero no podemos dejar de mencionar una de ellas, que seguro será de utilidad para aquellos que quieran permanecer lo más alejados que sea posible de SQL. Consejo: Desde aquí queremos recomendarle que aprenda SQL si aún no tiene soltura con este lenguaje. Le aseguramos que todo el tiempo que emplee en dicho aprendizaje será una inversión que comenzará a ser rentable en un periodo de tiempo muy breve. Garantizado.

Igual que utilizó la interfaz de usuario de MySQL Administrator para crear la base de datos, puede utilizarla para crear tablas. Sólo tiene que hacer clic sobre la base de datos videoteca en el panel de catálogos, que aparece en la parte inferior izquierda cuando se selecciona el nodo Catalogs. En la parte derecha parecerá un panel que, entre otros elementos, contiene un botón llamado Create Table. Haga clic sobre él. MySQL Administrator mostrará una nueva ventana desde la que podrá crear tablas con sólo rellenar los huecos. En la figura 1.13 puede ver cómo la hemos rellenado para crear la misma tabla de géneros que obtuvimos con MySQL Workbench.

Figura 1.13. Crear tablas con MySQL Administrator

Cuando haga clic en el botón Apply Changes, sobre el que está el puntero del ratón en la figura 1.13, se le preguntará que confirme la ejecución de la instrucción SQL correspondiente. Para ello, haga clic en Execute. Tanto si creó la tabla con SQL como si se ayudó de la interfaz de MySQL Administrator, el aspecto de este último al seleccionar el nodo Catalogs y, posteriormente, videoteca, debe ser similar al que puede verse en la figura 1.14.

Figura 1.14. Nuestra nueva tabla

Ya puede realizar las primeras inserciones de datos.

Inserciones

El último paso que tiene que dar antes de comenzar a trabajar con PHP es poblar la tabla de géneros con algunas entradas. Por ejemplo, puede añadir los valores necesarios para representar los géneros de ciencia ficción, aventuras y drama. Si utiliza SQL puede escribir las siguientes instrucciones en una nueva ficha del tipo Script (recuerde: File>New Script Tab) dentro de MySQL Query Browser y hacer clic en el botón Execute: USE videoteca;

INSERT INTO genero(nombre, descripcion) VALUES('CF', 'Ciencia Ficción');

INSERT INTO genero(nombre, descripcion) VALUES('A', 'Aventuras');

INSERT INTO genero(nombre, descripcion) VALUES('D', 'Drama');

De nuevo, además de SQL, tiene la opción de utilizar las herramientas de MySQL Administrator. Seleccione el nodo Catalogs en el panel de la izquierda, haga clic sobre la base de datos videoteca y, por último, haga clic con el botón derecho sobre la tabla de géneros y seleccione la opción Edit Table Data del menú desplegable que aparecerá. ¡Oh, sorpresa! Se ha abierto MySQL Query Browser pero, en lugar de una ficha del tipo Script hay una del tipo Resultset con una consulta ya introducida y ejecutada. Puede verlo en la figura 1.15. Haga clic sobre el botón Edit, que aparece en la parte inferior de la ventana de MySQL Query Browser (el puntero del ratón está sobre él en la figura 1.15).

Figura 1.15. Inserción de datos en MySQL Query Browser

Not a: Las fichas de tipo Script de MySQL Query Browser permiten ejecutar instrucciones SQL que no devuelven resultados como, por ejemplo, las de creación de tablas o inserción de datos. Utilice las fichas de tipo Resultset para realizar consultas en los datos contenidos en las tablas de una determinada base de datos.

MySQL Query Browser entrará en el modo de inserción de datos, lo que le permitirá escribir directamente los valores de las columnas que desee añadir con sólo hacer doble clic sobre el hueco del campo correspondiente. Por ejemplo, en la figura 1.16 se está insertando el primero de los géneros.

Figura 1.16. Insertando registros

Not a: No es necesario que se introduzca el identificador del género (campo id). MySQL se encarga de asignar ese valor automáticamente debido a que uno de los modificadores de su tipo es AUTO_INCREMENT. Para saber más al respecto consulte el capítulo 5, "Diseño de bases de datos".

Esta característica de MySQL Query Browser no sólo le permite insertar nuevos registros, también editar los existentes. Cuando termine de introducir los datos de los géneros haga clic en el botón Apply Changes, que se encuentra justo a la derecha del botón Edit (el que tuvo que pulsar para comenzar a añadir registros en la tabla de géneros). La figura 1.17 muestra el aspecto de la ventana de consultas después de introducir los tres nuevos géneros.

Figura 1.17. Los tres géneros de partida

Cierre MySQL Query Browser. Puede hacerlo pulsando la combinación de teclas Control-F4 o seleccionando la opción Exit del menú File. Hemos completado el primer paso de nuestro pequeño proyecto. Dispone de una base de datos, videoteca. Dentro de ella, en una tabla llamada genero, tiene tres registros, cada uno de ellos con un nombre, una descripción y un número que los identifica de forma única. El siguiente paso consiste en utilizar PHP para acceder al contenido de esta tabla y poder mostrar su contenido en una página Web. Realmente, no queda mucho por hacer, tan solo utilizar las herramientas que PHP nos ofrece para conectar con el servidor de bases de datos. Así que abra su editor de textos favoritos: ¡vamos a programar!

Trabajando con PHP La anterior versión de PHP, la 5, incorporaba novedades realmente interesantes. La mayor parte de ellas estaban relacionadas con la programación orientada a objetos, de la que hablaremos detenidamente en posteriores capítulos. Una de las novedades que no estaba relacionada con la programación orientada a objetos nos resulta ahora especialmente interesante: el acceso mejorado a MySQL. Not a: Aunque quizá sí hay relación, ya que esta nueva interfaz mejorada de acceso a MySQL viene en dos sabores: funcional y orientado a objetos. Por ahora sólo veremos la primera.

Esta nueva forma de acceder tiene nombre: MySQLi. La i latina final viene de improved (mejorado). Y tiene una limitación: sólo permite acceder a servidores MySQL modernos. Aunque gracias a esta restricción el equipo de desarrolladores de PHP ha podido crear un conjunto de funciones cuyo rendimiento y forma de funcionamiento superan en muchos aspectos a las interfaces de acceso anteriores. Acceder a MySQL a través de esta interfaz es tarea muy sencilla. En primer lugar, ha de establecer una conexión con el servidor. Para ello utilice la función mysqli_connect(). Not a: Todas las funciones de la interfaz de acceso a MySQL que vamos a ver comienzan con el prefijo mysqli_. De esta forma es sencillo reconocer a las funciones de este grupo.

La función mysqli_connect() recibe como parámetros la dirección en la que se encuentra el servidor (o su nombre), el nombre de usuario, la clave de acceso y el nombre de la

base de datos con la que queremos conectar. Si todo ha funcionado correctamente, el resultado de esta función nos permitirá realizar operaciones en el servidor de base de datos. En caso de error, el resultado de llamar a esta función es FALSE. Dicho esto, puede utilizar el siguiente código para realizar la conexión:

A continuación, el código de este ejemplo, completo: