Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
19-4-2015 LSC. José Vicente Pérez Soto Este manual es solo una referencia para la materia “Desarrolla aplicaciones web”, contiene diferentes técnicas de aprendizaje, así como ejercicios para que el estudiante ponga en práctica lo aprendido en las sesiones. PROGRAMACIÓN PHP & MYSQL PHP & MySQL Página 1 Índice PHP & MySQL Página 2 Introducción Si queremos aprender PHP debemos tener nociones de construir páginas web mediante HTML y CSS. Esto es imprescindible, ya que las partes estáticas de la página se escriben en estos lenguajes, dejando el PHP para incrustar en medio de éste las partes dinámicas o cambiantes. Si no conoces los lenguajes HTML y CSS debes aprenderlos antes de seguir con este manual. Aunque no es imprescindible, es recomendable tener conocimientos sobre el lenguaje Javascript si queremos dedicarnos, ya sea de modo profesional o aficionado, al diseño web. Javascript es un lenguaje con el que podemos crear elementos dinámicos o cambiantes dentro de la página. El conocimiento de Javascript es necesario si queremos dedicarnos al diseño de páginas Web; sin embargo no es necesario para seguir el curso de PHP. Los lenguajes Javascript y PHP tienen muchas similitudes, muchas estructuras y métodos son iguales o muy similares en ambos lenguajes, con lo que si sabemos Javascript nos será más fácil aprender PHP. PHP & MySQL Página 3 Trabajar con PHP El lenguaje PHP no puede leerlo directamente el navegador, por lo que se necesita un programa que transforme el lenguaje PHP en HTML. Este es el programa PHP, que transforma el lenguaje PHP en HTML. Actualmente está en su versión PHP 5. Por otra parte si queremos ver el resultado de nuestro trabajo en nuestra computadora, debemos hacer que nuestro equipo se convierta en un servidor, para ello utilizaremos el programa "Apache". En PHP es frecuente trabajar con bases de datos, por lo que es necesario un programa que gestione las bases de datos, utilizaremos para ello en programa MySQL. Todos estos programas son gratuitos y pueden descargarse desde sus sitios Web oficiales. Una vez descargados debemos configurarlos para que trabajen conjuntamente. Existe también la posibilidad de descargarlos conjuntamente desde el paquete integrado XAMPP, que contiene los tres programas anteriores y algunos otros, estos están ya configurados para trabajar conjuntamente. Su descarga es también gratuita. PHP & MySQL Página 4 La instalación en nuestra computadora de los tres programas anteriores, o del paquete integrado XAMPP, es imprescindible para poder ver en nuestra computadora los resultados de las páginas y pruebas que hagamos en PHP, sin necesidad de subirlas al servidor. PHP & MySQL Página 5 Programas necesarios Navegadores Los navegadores o browsers son necesarios para poder ver el resultado de cualquier página. Es conveniente tener instalados los más utilizados por los usuarios, ya que el aspecto de la página puede variar de uno a otro. De esta forma controlamos que la página se vea correctamente en los distintos navegadores Editores de texto El editor de textos es el programa en el cual escribiremos el código de la página. Podemos usar cualquier editor de textos para escribir los archivos en código PHP, JavaScript, HTML o CSS. Descargar XAMPP XAMPP es un paquete integrado que contiene varios programas necesarios para trabajar con PHP. Como ya se ha dicho en la página anterior los programas básicos para hacer funcionar el lenguaje PHP son el PHP, el Apache, y el MySQL. Estos programas y algún otro vienen en el paquete integrado XAMPP. PHP & MySQL Página 6 Instala XAMPP La instalación se hace como la de cualquier programa normal. Veamos los pasos que hay que dar: En primer lugar abrimos el archivo que hemos descargado en la página anterior y que contiene el programa. Al abrirlo veremos la siguiente ventana: Pulsamos en "Ejecutar" y se abre la ventana con el proceso de instalación. El aspecto de la ventana es el siguiente: PHP & MySQL Página 7 El botón "Browse" es por si queremos cambiar el directorio en el que se guardará el programa. Como vemos el programa por defecto, se guarda directamente en el disco local. No tocaremos este botón y dejaremos este directorio. Para empezar la instalación pulsamos en "Install" y se abre la siguiente ventana en la que debemos esperar a que se descarguen todos los archivos de XAMPP: Una vez descargados todos los archivos se nos abrirá la consola MS-DOS de Windows en la que se nos harán algunas preguntas para la configuración del programa: PHP & MySQL Página 8 La primera pregunta es si deseamos crear un icono en el escritorio y la barra de tareas contestamos que sí (y). Para ello pulsamos la tecla "y" y después "enter". La consola sigue preguntando: Esta pregunta tiene activada la opción "n" por defecto, la dejamos como está y pulsamos intro. Aparecen ahora los programas que están instalados. La consola nos indica que están configurados. Al final debemos pulsar "Intro" para continuar. Aparecen ahora una serie de opciones, estas indican algunos aspectos que pueden modificarse más adelante. Por tanto pulsamos la "x" y después "intro" para salir de la consola de Windows. PHP & MySQL Página 9 Los programas ya están instalados y configurados, sin embargo es posible que tengamos que reiniciar el equipo para que estos puedan funcionar. Por tanto reiniciamos el equipo para que pueda funcionar correctamente. Comprobar la instalación Si todo ha ido correctamente, en el escritorio deberemos tener el icono de XAMPP, y también en el menú inicio/todos los programas. Si pulsamos en el icono del escritorio se abrirá el "panel de control": PHP & MySQL Página 10 Trabajar con XAMPP Para trabajar con XAMPP lo primero que haremos será abrir el panel de control. Desde ahí vemos que programas están activados y cuáles no. Podemos cambiar algunas configuraciones, etc. Los botones Stop/Start: Sirven para poner en marcha o parar los diferentes programas que integra XAMPP. Cuando un programa está funcionando a la izquierda del botón aparece la palabra "Running" y el botón muestra la palabra "Stop". Si el programa está parado el botón muestra la palabra "Start". Al pulsar sobre el botón se activa o desactiva el programa indicado a su izquierda. Para poder trabajar con PHP debemos tener activados al menos los programas "Apache y "MySQL". Los botones Admin: Sólo están disponibles cuando el programa al que se refieren está activado. Al pulsarlos nos lleva a una pantalla donde vemos las características y la administración del programa. En "Apache" nos lleva a la página http://localhost ya vista en la página anterior. En el programa "MySQL" se abre una página en la que podemos configurar y trabajar con las bases de datos. Más adelante mostraremos cómo hacerlo. Los botones Svc: Instala el servicio FTP del programa. Los botones Shell, Setup, Port-Check: Estos botones abren la consola de Windows para poder realizar distintas configuraciones entre los programas. No los usaremos de momento. Botón Explore: Abre la carpeta donde está instalado XAMPP. Botón SCM: Abre la carpeta "Servicios Locales". Botón Refresh: Vuelve a recargar el panel de control. Si hemos hecho algún cambio, este aparece en la ventana que hay en la parte de abajo del panel. Botón Help: Abre una ventana en la que se muestra información sobre XAMPP. PHP & MySQL Página 11 Botón Exit: Cerrar el panel de control. Es la forma correcta de cerrar el panel de control, ya que si pulsamos en el aspa (X) de la esquina superior derecha (manera habitual de cerrar una aplicación) lo que estamos haciendo es minimizar el panel de control, el cual se queda en la barra de tareas (junto al reloj), de modo que sólo lo podremos abrir desde ahí. Al cerrarla barra de tareas, los programas de XAMPP en activo siguen funcionando. Ver archivos de PHP Un archivo en PHP es en realidad una página construida en lenguaje HTML a la que se le han añadido trozos (scripts) escritos en PHP. La página la guardaremos con la extensión .php Para poder ver en nuestro ordenador las páginas que vayamos haciendo en PHP debemos guardarlas en la carpeta "htdocs" que está dentro de la carpeta donde se ha instalado XAMPP. Si no se ha variado la carpeta en la instalación el directorio será: C / xampp / htdocs. Para verlos en el navegador debemos visualizarlos desde la página http://localhost. Dentro de la carpeta htdocs vemos el archivo index. Este es el que por defecto se abre al ir con el navegador a la página "localhost". No debemos cambiarlo, ya que es el que proporciona la información del servidor apache. Si lo que queremos es crear uno o varios sitios web en php, lo que haremos será crear dentro de la carpeta htdocs una o varias subcarpetas que se correspondan a cada sitio. Por ejemplo, creamos dentro de htdocs una subcarpeta llamada misitio. Dentro de ella estarán todos los archivos y carpetas del sitio que hemos creado, entre ellos la página principal, llamada index.php. PHP & MySQL Página 12 El lenguaje PHP Sintaxis Básica Abrir Scripts de PHP El código PHP está incrustado entre medio del código HTML. Por tanto debemos indicar de alguna forma que dejamos de escribir en código HTML y empezamos a escribir en código PHP. También debemos indicar dónde acaba el código PHP y volvemos a escribir en código HTML. Esto se hace indicándolo mediante unas etiquetas especiales que indican dónde empieza y acaba el código PHP. La etiqueta <?php indicará que empezamos a escribir en PHP, y la etiqueta ?> indica que acaba el código PHP. <?php .... codigo php ... ?> Escribir en la página con PHP La instrucción echo es una de las más utilizadas en PHP, ya que nos permite visualizar en pantalla lo que escribamos detrás de esta palabra clave. Si lo que queremos visualizar es un texto, debemos escribirlo entre comillas. De la siguiente manera: Lo escrito dentro de la instrucción echo entre comillas, es interpretado por el navegador como código HTML, por lo que podemos poner etiquetas HTML dentro del texto entre comillas para integrar mejor este texto en la página: PHP & MySQL Página 13 La instrucción print es en todo igual a la instrucción echo pudiendo usar una u otra indistintamente para obtener el mismo resultado: Esta instrucción o sentencia es idéntica a la anterior, y tiene el mismo efecto en la página. Escribir instrucciones Al igual que en javascript, podemos escribir las instrucciones con varios espacios en blanco entre palabras, y con tabulaciones. Estos no serán tomados en cuenta al interpretar el código, y se considera que sólo hay un espacio en blanco entre palabras aunque haya más de uno. Esto nos permite organizar el código para que pueda ser más legible. Sin embargo todas las instrucciones o sentencias PHP deben acabar con el signo de punto y coma ( ; ). El cambio de línea al escribir el código no supone un cambio de instrucción, por lo que si no se pone el signo de punto y coma seguiremos en la misma instrucción al cambiar de línea. Esto supone una diferencia importante con Javascript, ya que en Javascript al cambiar de línea acabamos la instrucción para empezar otra. En PHP el punto y coma es obligatorio al final de cada sentencia. Primera página en PHP Con lo visto hasta ahora podemos ya crear una primera página sencilla con lenguaje PHP. Para ello abriremos el programa editor de textos y escribiremos lo siguiente: En esta página el código PHP está marcado en azul. Para ver cómo funciona esta página la copiamos en nuestro editor de textos, y la guardamos en la carpeta "htdocs" del directorio de XAMPP creamos una carpeta llamada Ejemplo1 y dentro con el nombre index.php. PHP & MySQL Página 14 Para verla abrimos el navegador y escribimos en la barra de navegación: http://localhost/index.php. En el navegador debemos ver las dos líneas de texto tanto la escrita fuera de PHP como la escrita dentro de PHP. Si examinamos el código fuente de la página (en la mayoría de los navegadores barra superior: ver/código fuente) veremos que sólo hay texto en HTML. Si en lugar de abrir la página desde http://localhost/... la abrimos directamente con el navegador, sólo veremos el código escrito directamente en HTML, y el código en PHP será ignorado. La carpeta HTDOCS Este será nuestro directorio de trabajo. Dentro de esta carpeta puedes crear subcarpetas para organizar mejor todos nuestros archivos en PHP. Para verlos en el navegador debemos ir a la página "http://localhost/misubcarpeta/archivo.php". Dentro de cada subcarpeta podemos guardar pruebas, proyectos de sitios, carpetas raíz de sitios en php, etc. Cada subcarpeta puede tener un archivo principal al que llamaremos "index.php" y que será el que se abra por defecto al poner sólo el nombre de la subcarpeta. Para escribir los nombres de los archivos debemos seguir las mismas reglas descritas para los archivos en HTML. Recordemos que éstos son básicamente los siguientes: PHP & MySQL Página 15 Texto en minúsculas: Todo el texto del nombre de archivo se escribirá en minúsculas. No poner acentos: Escribiremos todas las palabras sin acento, aunque los tengan. No empezar por un número: El primer carácter o signo que escribamos no debe ser un número, pues algunos programas podrían interpretar mal el nombre del archivo No utilizar otros caracteres que no sean letras o números: no utilizar barras, paréntesis, puntos, dos puntos, comas, comillas, signo más, etc. Separar las palabras con guion normal - o con guion bajo _ : Esto nos asegura un sólo espacio entre palabras, el ocupado por el guion bajo.(El guion bajo ( _ ) se escribe pulsando la tecla Mayúsculas y la tecla Guion a la vez). Variables en PHP Definición de una variable Una variable es un elemento en el que se puede almacenar un valor o dato. Para ello basta con asignarle a una variable un valor. Si a esa misma variable le asignamos otro valor, esta cambiará el valor o dato que tenga almacenado por el que le demos de nuevo. Si conoces Javascript o cualquier otro lenguaje de programación, estarás ya familiarizado con este término. Si no es así verás que esto es muy fácil. En PHP todas las variables van precedidas del signo dólar $. Este signo delante de cualquier texto indica que lo que viene detrás es una variable: ejemplo: Asignar valor a una variable Para crear una variable basta con escribirla (siempre precedida del signo $). Por lo tanto si escribimos cualquier palabra precedida del signo $ esta será considerada como una variable. Sin embargo las variables tienen su utilidad en que pueden guardar valores, datos, u otros elementos. Por tanto al crearlas es conveniente asignarles un valor o dato. Ello se hace mediante el signo = (igual). En esta instrucción PHP hemos creado una variable llamada $texto. A partir de aquí, escribir el nombre de la variable es lo mismo que escribir su valor o dato almacenado. Por tanto, siguiendo el ejemplo anterior, la instrucción: Nos dará el mismo resultado que si escribimos: PHP & MySQL Página 16 Es más, si escribimos el nombre de una variable dentro de una cadena de texto, no veremos el nombre de la variable, sino su valor. Por tanto si escribimos, siguiendo con el ejemplo anterior, el texto Lo que veremos en la página será lo siguiente: Tipos de variables Las variables pueden ser de diferentes tipos en función del valor que almacenan. los tipos de variables son: Números enteros (integer) Números enteros sin decimales. Ejemplo: $num1 = 43 Números Reales (real) Números reales, con decimales. Ejemplo: $num2 = 12.56 Cadenas de texto (string) Texto escrito concaracteres alfanuméricos. Van siempre delimitadas por comillas al principio y al final de la cadena. Ejemplo: $texto = "Esta variable es un texto." Arrays o listas de elementos. Un array es un conjunto de elementos que están agrupados bajo una única variable, y forman una lista. Si conoces el lenguaje Javascript ya sabrás lo que son los arrays. La forma de trabajar con los arrays en PHP es similar a Javascript, aunque no es idéntica. Veremos más adelante como trabajar con arrays en PHP. Aunque más adelante se explicará con más detalle, este es un ejemplo de cómo crear un Array. $array = array("primavera","verano","otoño","invierno"); Objetos Las variables pueden guardar también otros elementos más complejos que pueden crearse con el lenguaje PHP. Estos son los objetos. Los veremos en temas posteriores. PHP & MySQL Página 17 Trabajar con variables Cambiar el tipo de variable Mediante la instrucción: setType() Las variables cambian automáticamente de tipo al asignarles un nuevo valor de otro tipo. No obstante también podemos forzar a una variable a cambiar de tipo sin cambiarle el valor. Para ello utilizaremos la función setType($variable,"nuevo_tipo"); En "nuevo_tipo" podemos escribir las siguientes palabras "integer" (entero), "double" (número real), "string" (cadena de texto), "array" (array), "object" (objeto). Veamos un ejemplo: Indicando el tipo de variable a cambiar También podemos cambiar el tipo de variable de la siguiente manera: $variable = (tipo_variable) $variable; Igualamos la variable a sí misma pero delante de ella, entre paréntesis ponemos el tipo de variable en la que se convierte. Aquí en "tipo_variable" podemos escribir: (int), (integer) : Convertir a entero. (real), (double), (float) : convertir a número real. (string): Convertir a cadena de texto. (array) : Convertir a array. (object) : Convertir a objeto. PHP & MySQL Página 18 Por lo tanto el ejemplo anterior podemos escribirlo también de la siguiente manera y el resultado será el mismo: Caracteres de escape Al igual que en HTML o Javascript y otros lenguajes de programación, existen una serie de caracteres que se utilizan para la propia programación, y que no pueden escribirse directamente para que se vean en la pantalla del ordenador, ya que serán interpretados como una instrucción y no como lo que hay que escribir. Por ejemplo, si en una cadena de texto queremos escribir el signo $ no podemos escribirlo directamente, ya que el programa PHP interpretará que queremos escribir una variable, por tanto debemos indicar de alguna manera que lo que escribimos no es una variable, sino el signo $. La manera de indicarlo es escribir delante del signo la barra inclinada inversa ( \ ). Para escribirla debemos pulsarla tecla " º " (esquina superior izquierda del teclado) a la vez que la tecla "AltGr". Veamos un ejemplo: PHP & MySQL Página 19 Los caracteres de escape no sólo sirven para imprimir los caracteres usados por PHP, sino que permiten además hacer otro tipo de acciones. Estas son tabulaciones o saltos de línea. Estas acciones se producen únicamente en el código fuente, es decir, El lenguaje PHP es traducido a lenguaje HTML por el servidor; es en este lenguaje HTML donde se producen las tabulaciones o saltos de línea indicados por los caracteres de escape. Los caracteres de escape más comunes son: \n : nueva línea. \t : tabulación. \\ : barra invertida. \$ : signo dólar. \" : comillas dobles. \' : comillas simples. \& : signo ampersand. \? : signo de interrogación. Hay más caracteres de escape, pero estos son los más utilizados. Respecto al carácter de escape \n señalar que la nueva línea se produce únicamente en el código fuente que se manda al navegador, y que podemos ver desde la barra superior en ver/código fuente. Para provocar un salto de línea en el texto visible de la página utilizaremos la instrucción echo "<br/>". PHP & MySQL Página 20 Variables y Constantes Concatenar variables Consiste en hacer que el valor de una variable se convierta en el nombre de otra variable, para ello concatenamos los signos dólar. Es decir si tenemos la variable $v1, podemos crear la variable $$v1. El nombre de esta variable será el valor que le hayamos dado a la variable $v1. Vamos a verlo con un ejemplo. Tenemos la variable $v1 = "tema1". Este es su código php: Y la veremos así: Ahora creamos la variable $$v1 = "contenido del tema 1". Para ver el valor de esta variable debemos escribir en el código: $tema1, es decir, el valor de la variable de referencia. Veamos el código: El código anterior dará el siguiente resultado: PHP & MySQL Página 21 Variables vinculadas Podemos hacer una copia de una variable de forma que dos variables tengan el mismo valor. Para ello basta con igualar la segunda variable a la primera: <?php $v1="primera"; $v2=$v1 ?> La variable $v2 tendrá el mismo valor que la variable $v1; lo cual lo comprobamos con el siguiente código: El código PHP nos dará el siguiente resultado: Si ahora cambiamos el valor de la primera variable, la segunda variable seguirá teniendo el valor antiguo: El código será: Y nos dará en el navegador el siguiente resultado: Vemos que al cambiar la primera variable, la segunda conserva el valor antiguo. Constantes Que son las constantes Las constantes son elementos parecidos a las variables, pero con la diferencia de que una vez que las hemos definido no podemos variar su valor dentro de la página. Las constantes, al contrario de las variables, se expresan sin el signo dólar ($), sin embargo su definición es un poco más complicada. PHP & MySQL Página 22 Definir una constante Para definir una constante debemos emplear una función predeterminada de PHP, la función define: define("nombre","valor") Veamos un ejemplo, el siguiente código: Lo veremos de la siguiente manera en el navegador: Como valor le podemos pasar un texto o también una variable. Una vez definida una constante no la podemos variar, a no ser que la volvamos a definir otra vez. Por tanto no podemos asignarle otro valor, aunque sí trabajar con él. Comprobar una constante A veces podemos tener problemas para acceder a una constante, sobre todo si su nombre coincide con el nombre de alguna función o algún otro elemento. Para acceder a la constante de forma fiable emplearemos la función constant("nombre"). Código de ejemplo: Este ejemplo nos dará el siguiente resultado: PHP & MySQL Página 23 FORMULARIOS Enviar datos Los formularios son la manera más común de recoger datos del usuario. Si usamos sólo el lenguaje HTML La única forma posible de mandarlos es por e-mail. Sin embargo, con PHP podemos enviar los datos directamente a otra página, tal como veremos a continuación, o podemos con PHP y MySQL guardar los datos en una base, para poder utilizarlos posteriormente; esto lo veremos en temas posteriores. Mandar un formulario a otra página Para poder mandar los datos de un formulario a otra página, el formulario lo escribiremos de manera normal, en lenguaje HTML, y la página del formulario puede ser perfectamente una página HTML, sin código en PHP Recordemos que la etiqueta form debe llevar siempre los atributos action y method. El atributo action indica el lugar al que se envía el formulario, por lo que escribiremos la ruta al archivo que recoge el formulario, el cual será una página en php. El atributo method solo admite los valores "post" y "get" en principio utilizaremos el valor "post" aunque también puede enviarse el formulario con el método "get" La etiqueta <form ...> quedará de la siguiente manera: <form action="ruta_archivo.php" method="post"> Por último cada campo del formulario debe llevar el atributo name="nombre_del_campo". Con este atributo identificaremoscada campo para crear una variable donde se guarde el dato aportado por el usuario. Por tanto el valor de esta etiqueta debe ser distinto para cada campo. Datos en campos de texto Veamos un ejemplo sencillo, con el que explicaremos de momento cómo recoger los datos que aporta el usuario en los campos de texto. Tenemos el siguiente formulario: El atributo action nos indicará la ruta del archivo en PHP donde se recogerán los datos. El atributo method debe tener siempre el valor "post". Y los atributos name son la referencia para guardar el dato dado por el usuario. PHP & MySQL Página 24 El siguiente paso consiste en crear el archivo PHP, al que en este ejemplo llamaremos form.php y que ubicaremos en la misma carpeta que el archivo que contiene el formulario anterior. Los datos que ha introducido el usuario en el formulario se recogen en una variable que tendrá la siguiente forma: $_POST['valor_de_name'] Donde pone valor_de_name escribiremos el valor que le hayamos dado al atributo name. De esta forma esta variable recogerá el texto escrito por el usuario en ese campo. El código PHP siguiente nos mostrará en una segunda página (form.php) los datos que el usuario ha introducido en la primera: El ejemplo anterior lo veremos funcionando en el siguiente enlace, en la página se muestra el formulario, una vez relleno pulsas en enviar y veremos la segunda página con los datos que hemos introducido en la primera: PHP & MySQL Página 25 Campos de Opciones Radio Button Los botones tipo radio que corresponden a un mismo campo deben llevar el atributo name en todos ellos con el mismo valor. También deben llevar el atributo value que indica el texto a mostrar en el caso de que esté seleccionado. Ejemplo: El código php de la página donde se recogen los datos lo obtendremos mediante la variable $_POST['valor_de_name'], tal como hicimos con los campos de texto en la página anterior. El dato recogido será el valor de la etiqueta value del elemento seleccionado. Si no estuviera seleccionado ningún botón, la variable quedará vacía. En el ejemplo anterior usaremos el siguiente código php para mostrar el valor en la página de recogida de datos: Botones check box Los botones check box son independientes unos de otros, por tanto el atributo name debe ser distinto e identificativo en cada uno de ellos. Para poder pasar los datos a otra página estos botones deben llevar el atributo name. El atributo value no es obligatorio, aunque sí recomendable. Veamos un ejemplo: Como en el caso anterior en la página de recogida de datos usaremos la variable $_POST['valor_de_name'] en el código php: Si el botón no se ha seleccionado se devolverá como valor una variable vacía, Si está seleccionado nos devolverá el valor "on" si no lleva el atributo value. Si lleva este atributo el valor devuelto será el que éste tenga. PHP & MySQL Página 26 Listas Select Las listas tipo "select" empiezan siempre por la etiqueta <select.>. Es en esta etiqueta donde debemos poner el atributo name para identificarla. Recordemos que las distintas opciones que puede elegir el usuario van marcadas por las etiquetas <option>...</option>. Veamos la siguiente lista: Como en los campos anteriores en la página php pondremos la variable $_POST['valor_de_name'] para obtener el dato. El dato que recoge la variable es el valor de la etiqueta value. Si la opción no lleva esta etiqueta el dato será el texto de la opción. En el ejemplo anterior, si se selecciona la primera opción, el dato recogido será "ninguno", y si seleccionamos la segunda será "red" PHP & MySQL Página 27 Ejemplo de Formulario Formulario Veremos aquí un ejemplo en el que aplicaremos lo visto hasta ahora para recoger los datos de un formulario. Lo primero es hacer un formulario en HTML. Este es la página de nuestro formulario de ejemplo. PHP & MySQL Página 28 PHP & MySQL Página 29 Comprobación de datos Los resultados los veremos en la página "comprobar.php" la cual la colocaremos en la misma carpeta que el archivo anterior (por supuesto dentro del directorio "XAMPP/htdocs"). Esta será la página "comprobar.php". PHP & MySQL Página 30 Por último colocaremos la página que nos dice que los datos han sido enviados, para ello crearemos la siguiente página llamada "enviar.html PHP & MySQL Página 31 Traspasar Datos Manejar Datos Lo que realmente le da utilidad al lenguaje PHP es poder trabajar con datos, insertándolos, borrándolos o cambiándolos de forma dinámica en una misma página, de manera que se pueda cambiar su contenido sin tener que cambiar toda la página. Imagina una página de un periódico, o de una cadena de televisión. Estas páginas están actualizando los datos varias veces al día. Otras páginas como en tiendas o pequeños negocios, también necesitan actualizar sus datos con frecuencia (por ejemplo la disponibilidad de artículos o los precios). Todo esto lo veremos en lecciones posteriores cuando tratemos sobre las bases de datos. De momento veremos cómo tratar los datos de los archivos y formularios. Incluir archivos PHP Dentro de un sitio web la mayoría de las páginas tienen muchas partes iguales. Con php podemos guardar este código en un archivo aparte, de manera que con una simple referencia, el código se incluye en la página. Esto tiene la ventaja de que si cambiamos el código del archivo, se cambia en todas las páginas en las que tiene la referencia. No tenemos que ir página por página cambiando el código de la cabecera, por ejemplo, sino que sólo hay que cambiarlo en el archivo de referencia. La forma de incluir un archivo externo en la página con PHP es la siguiente: Donde pone ruta_archivo escribiremos la ruta para abrir ese archivo, de la misma manera que haríamos con un enlace o una etiqueta tipo link. El archivo de referencia será un archivo creado mediante el editor de textos, y que tendrá únicamente el código que se quiera insertar en ese punto de la página. La extensión del archivo de referencia puede ser .html o .php dependiendo del tipo de código a insertar. Hay que tener en cuenta que lo que insertamos es un trozo de código, y no una página, por lo que en el archivo de referencia no habrá etiquetas de apertura de página, o de cabecera o cuerpo (etiquetas html, head o body). Lo que escribamos en el archivo de referencia será incluido en el código HTML de la página desde la primera a la última letra. PHP & MySQL Página 32 También podemos incluir un archivo externo de la misma manera que el anterior mediante el código: Este código funciona igual que el anterior, pero además es el único que PHP admite si está incluido dentro de una estructura condicional (en temas posteriores veremos qué es esto), es decir, si la inclusión o no del código depende de una condición indicada previamente. Aunque el código consta de varios archivos, al navegador se manda un sólo archivo HTML, por lo que si hay código en CSS o Javascript en la página, este será interpretado igualmente en los archivos de referencia, tal como si estuviera en la misma página. La ventaja de usar este método es que podemos dividir la página en varias secciones, y trabajar en cada una de ellas independientemente, sin tener que usar frames u otro tipo de particiones. La página aunque la hayamos construido por partes, llegará al navegador como una sola unidad. Ejemplo de página con archivos de referencia La siguiente página de ejemplo se compone de varios archivos. Un archivo principal, otro archivo con el código CSS y varios archivos de referencia. Puedes examinarla, copiarla en tu editor de textos y comprobar cómo funciona. Todos los archivos debemos copiarlos en una subcarpeta que crearemos, llamada por ejemplo "micarpeta", dentro de la carpeta "htdocs" del directorio de XAMPP. La ruta, si XAMPPestá instalado en el directorio por defecto será: C\XAMPP\htdocs\micarpeta\principal.php. Al archivo principal lo llamaremos "principal.php". Para verlo en el navegador, debemos escribir la dirección: "http://localhost/micarpeta/principal.php". Este es el archivo principal: PHP & MySQL Página 33 El archivo lo guardaremos con el nombre y extensión "principal.php". El archivo CSS es el siguiente y su nombre y extensión será "principal.css". PHP & MySQL Página 34 El código PHP hace referencia a tres archivos los cuales son los siguientes: Archivo "cabecera.html", el cual incluye la cabecera de la página: El segundo archivo es "menu.html", en el cual incluye el menú lateral izquierdo a la página: El tercer archivo es el que incluye el pie de página. Se llama "pie.html": Fíjate que los archivos de referencia contienen únicamente el código a insertar, insertándolo exactamente en el punto en el que está su referencia, y formando parte de la página de tal forma que el código CSS del archivo principal se aplica a estos archivos de la misma manera que al archivo principal. PHP & MySQL Página 35 Pasar variables por URL Ámbito de las variables El ámbito de una variable es el lugar en el que ésta funciona, es decir en donde la variable tiene validez. De no decir otra cosa, la variable tendrá su ámbito dentro de la página en la que fue creada, y a su vez dentro de la función en la que fue creada (más adelante explicaremos las funciones), no pudiendo ser utilizada en otra página. Sin embargo, existen métodos para pasar los valores o datos que almacena una variable a otra página, tal como hemos visto en el tema anterior con los formularios, pero también podemos pasar variables de una página a otra sin que éstas sean creadas por los formularios. Traspaso de variables por enlaces Podemos pasar una variable a otra página cuando la abrimos con un enlace, mediante el siguiente código: <a href="destino.php?variable1=valor1&variable2=valor2&... "> pasar variables</a> En el siguiente código nos fijamos en el atributo href del enlace. En primer lugar escribimos la ruta o URL del destino de manera normal. Después escribimos el signo de interrogación ? y las variables que queremos pasar a la otra página. Cada variable va separada de las demás por el signo &. De cada variable escribiremos su nombre, sin el signo dólar $, el signo igual, =, y después su valor. El valor de la variable no debe ir entrecomillado, aunque esta sea una variable de texto. Por lo tanto las variables son definidas al mismo tiempo que las mandamos. Veamos un ejemplo: <a href="bienvenida.php?var1=Hola, &var2=Bienvenido a esta página."> Página de bienvenida</a> Este es un enlace hacia la página "bienvenida.php" que está en la misma carpeta que la página de envío. En este enlace mandamos dos variables, la variable $var1="Hola " y la variable $var2="Bienvenido a esta página.". Recoger datos en la página destino La segunda parte consiste en recoger las variables en la página de destino. Estas son traspasadas mediante el método GET por lo que para recogerlas utilizaremos la variable del tipo $_GET['variable1']. Veamos cómo queda el ejemplo anterior: En la página de envío: "envio.php", escribimos las variables y las mandamos mediante un enlace. Esta es la página de envío: PHP & MySQL Página 36 En la página de destino recibiremos las variables mediante el método GET y las sacamos en pantalla: PHP & MySQL Página 37 Operadores Operadores Aritméticos Los operadores, como su nombre indica, nos permiten hacer operaciones con las variables, modificarlas, sumar, restar, comprobar si son iguales o distintas, etc. si has seguido el curso de javascript, o conoces algo de programación en algún otro lenguaje, ya sabrás lo que son los operadores. Si no es así puedes ver aquí cuáles son y cómo funcionan. De todas formas siempre hay algunas cosas que cambian de unos lenguajes de programación a otros, por lo que conviene mirar este tema para saber cuáles son. Los operadores aritméticos nos permiten hacer operaciones aritméticas con las variables, estas deben ser de tipo "numero" aunque algunas operaciones pueden hacerse también con variables de tipo "texto". Operadores Aritméticos clásicos Los operadores aritméticos clásicos son la suma "+, la resta -, la multiplicación * y la división /. A estos hay que añadir el operador módulo % cuyo resultado es el resto de la división entre números enteros y su signo es el del porcentaje (%).Operamos normalmente guardando el resultado en otra variable: $num3=$num1+$num2; Operadores de incremento Los operadores de incremento, aumentan o disminuyen en un número entero el valor de la variable a la que afectan. Existe un operador de incremento ++ y un operador de decremento -- los cuales aumentan o disminuyen respectivamente en una unidad el valor de la variable a la que se aplican. Por ejemplo si tenemos la variable $n=5 y le aplicamos el operador de incremento: ++$n; El valor de $n ahora será 6. Pero si después le aplicamos el operador de decremento: --$n; El valor de $n volverá a ser 5. Estos operadores podemos ponerlos antes o después de la variable, es decir podemos poner ++$n o $n++. El resultado puede ser distinto ya que si está unido a otra operación, al ponerlo delante primero se incrementa y luego se opera, mientras que si se pone detrás primero se opera, y luego se incrementa. PHP & MySQL Página 38 Operadores de asignación compuestos La lista de los operadores de asignación compuestos es la siguiente: $a+=$b : suma de $a y $b y el resultado cambia el valor de $a $a-=$b : resta de $a y $b y el resultado cambia el valor de $a $a*=$b : multiplicación de $a y $b y el resultado cambia el valor de $a $a/=$b : división de $a y $b y el resultado cambia el valor de $a $a%=$b : módulo de $a y $b y el resultado cambia el valor de $a $a.=$b : concatenación de $a y $b y el resultado cambia el valor de $a Aplicación Práctica A continuación un ejemplo en el que el usuario escribe dos números en un formulario y nos da los resultados de las operaciones vistas anteriormente. PHP & MySQL Página 39 Codigo Aquí el código de los archivos HTML, CSS y PHP. PHP & MySQL Página 40 Ahora el archivo donde se realizan las operaciones: PHP & MySQL Página 41 Operadores Condicionales Los operadores condicionales indican si se cumple o no una condición. El resultado de la operación sólo puede admitir dos valores: Una cadena vacía (falso) si no se cumple, o el número 1 si se cumple (verdadero). Estos operadores son parte fundamental de las estructuras condicionales, que veremos más adelante, y que permiten que el programa elija entre dos opciones dependiendo de si la condición indicada se cumple o no. Lista de Operadores condicionales Los operadores condicionales son los siguientes: == : igualdad. Este operador compara dos variables, y devuelve el valor 1 en el caso de que las dos sean iguales. No confundir con el operador de asignación (=); el cual asigna a la primera variable el valor de la segunda. > : mayor que. Compara las dos variables y devuelve 1 si el valor de la primera es mayor que el de la segunda. < : menor que. Compara las dos variables y devuelve 1 si el valor de la primera es menor que el de la segunda. >= : mayor o igual que. Compara las dos variables y devuelve 1 si el valor de la primera es mayor o igual que el de la segunda. <= : menor o igual que. Compara las dos variables y devuelve 1 si el valor de la primera es menor o igual que el de la segunda. Lista de Operadores lógicos Los operadores lógicos que podemos usar son los siguientes: and : Deben cumplirse los dos condiciones para que su valor sea verdadero. or : Deben cumplirse al menos una condición para que su valor sea verdadero. Sólo en el caso de que no se cumplaninguna de las dos el valor será falso. xor : Debe cumplirse sólo una condición para que su valor sea verdadero. si no se cumple ninguna, o si se cumplen las dos a la vez, el valor será falso. && : Igual que el operador and. || : igual que el operador or ! : Se usa con una sola condición, y cambia su valor. Si su valor es verdadero lo cambia a falso y viceversa. es como si pusiéramos un "no" delante de la condición a la que afecta. PHP & MySQL Página 42 PHP MyAdmin Inicio MySQL Una base de datos, como su nombre indica, es el lugar donde se guardan una serie de datos de manera organizada. No sólo consiste en poder guardar los datos, sino también en poder recuperarlos para trabajar con ellos; en poder buscar los datos que nos interesen en un momento dado, etc. Las bases de datos organizan los datos en tablas, Las tablas pueden estar relacionadas entre sí, de manera que los datos de una tabla tengan relación con los de otra. Hay distintos programas de gestión de base de datos, tales como Oracle, Microsoft Access, etc. Sin embargo MySQL es el que mejor se adapta al lenguaje php. Bases de datos en MySQL MySQL es un lenguaje en el que podemos crear y administrar las bases de datos en formato ".sql". Este lenguaje es compatible con php, de modo que utilizándolo dentro de php podemos utilizar las bases de datos en las páginas web; El programa phpMyAdmin nos permite crear bases de datos de forma gráfica, que luego pueden ser utilizadas en las páginas web. Esto tiene la ventaja de poder, por ejemplo, guardar registros de clientes o usuarios, con sólo hacer que rellenen un formulario. Los datos del formulario se guardarán en la base de datos, y si es necesario, se puede, por ejemplo, crear nuevas tablas, borrarlas, o incluso crear una nueva base de datos o borrar una ya existente, y todo esto de una manera bastante sencilla y desde la propia web. "phpMyAdmin" se instala junto con XAMPP, por lo que lo único que tenemos que hacer es empezar a usarlo. phpMyAdmin no es exactamente un programa, ya que éste se muestra como un con conjunto de páginas web, pero funciona como tal, y desde ahí podemos hacer todo tipo de operaciones en la base de datos. Funcionamiento de la base de datos Para el que no esté familiarizado con el manejo de bases de datos daremos aquí algunos conceptos básicos para poder manejarlas. La forma de estructurar los datos es mediante tablas. Las tablas son parecidas a las que siempre se han hecho en papel para estructurar los datos, tienen una cabecera que indica qué tipo de datos queremos poner en cada columna. Las columnas muestran cada una un tipo de dato distinto, y las filas que se corresponden con una entidad (objeto, persona, etc.) a la cual se le indican los datos concretos que posee dentro del tipo de datos mostrado en las columnas. A las filas o datos correspondientes a una misma entidad, se le llama registro, el registro es como una ficha de la persona u objeto de la que queremos guardar la información. Cada columna de la tabla es un campo, y almacena un tipo de dato específico, como por ejemplo un nombre, una fecha, un número de teléfono, una dirección de correo, etc. La confluencia de cada fila con cada columna, nos da las celdas de la tabla, en cada una de las cuales sólo puede haber un dato. PHP & MySQL Página 43 Relaciones entre tablas Las tablas de una base de datos pueden estar relacionadas unas con otras, de manera que formen estructuras. Supongamos una base de datos de obras literarias, podemos tener una tabla con autores, y otra con las obras, luego una relación entre las dos tablas unirá a los autores con sus obras. Es evidente que a cada autor le puede corresponder más de una obra, pero no al revés. Esta es una relación de uno a varios. Otro tipo de relación puede ser de uno a uno, como sería por ejemplo entre personas y números de DNI. Por último también puede existir la relacion de varios a varios, como puede ser por ejemplo entre profesores y alumnos en un instituto, ya que cada profesor tiene varios alumnos, pero cada alumno tiene también varios profesores. PHP & MySQL Página 44 Usar PHPMyAdmin Abrir PHPMyAdmin El programa phpMyAdmin viene integrado en el paquete XAMPP con el que hemos instalado php. Para abrirlo vamos a la página de bienvenida de XAMPP, la cual, si no hemos cambiado el archivo "index.php" de la carpeta "htdocs", podemos abrirlo escribiendo en el navegador: http://localhost En esta página, en la columna de la izquierda, veremos un apartado que pone "herramientas", y dentro del "phpMyAdmin", pulsamos, y se nos abre el programa. También podemos abrirlo escribiendo en la ventana del navegador http://localhost/phpmyadmin Una vez abierto obtenemos la siguiente ventana: En esta página nos fijamos donde pone Crear nueva base de datos, debajo, en la ventana de la izquierda escribiremos el nombre de la nueva base de datos que queramos crear, y después pulsamos el botón "crear". Vamos a crear una base de datos como ejemplo, la cual seguiremos rellenándola en los siguientes pasos que demos. Conviene, antes de crear una base de datos, hacer una planificación de la misma, es decir, planificar sobre un papel cuantas tablas va a tener, que columnas van a ir en cada tabla, y qué relaciones van a tener unas tablas con otras. Nuestra base de datos va a tratar de escritores y obras literarias, por lo que la planificaremos de la siguiente manera: PHP & MySQL Página 45 Tablas Campos Autores idAutor Autor Año Nacimiento Año Fallecimiento Lugar nacimiento Vida Estilo refEpoca Obras idObra Título año 1ª edición Argumento Crítica refAutor refEpoca refGenero Época idEpoca Época Tiempo comprendido Género idGenero Género Tipos de campos Observamos que aparte de los campos o columnas normales que debe tener la tabla, hemos introducido otros campos, los cuales utilizaremos para crear las relaciones entre las tablas. Los campos que empiezan por "id" sirven para identificar cada registro, para ello haremos que sean campos con auto incremento, es decir que el primer registro tendrá el número uno, y al crear nuevos registros, se aumenta el número del anterior en una unidad, así los registros quedan numerados. Es lo que se llama un campo indexado, en el cual se crea una clave primaria que identifica de manera única a cada registro. Los campos que empiezan por "ref" serán los que estén relacionados con otros registros de otras tablas, de manera que podamos vincular estos datos a otras tablas. Es decir, si un dato está vinculado a otro, esto implica que al cambiar el primero, se cambia automáticamente el segundo. Además los campos pueden clasificarse según el tipo de contenido que puedan admitir, por ejemplo, los campos de auto incremento son campos de número entero. Según el tipo de contenido los campos pueden ser: PHP & MySQL Página 46 Alfanuméricos Contienen tanto cifras como letras, podemos escribir en ellos cualquier cosa hasta 255 caracteres. Entero Se pueden escribir números enteros. Decimales Admite tanto números enteros como decimales. Fechas Para almacenar fechas, pueden admitir distintos formatos de fecha. Memo Campos alfanuméricos de longitud ilimitada. Autoincrementables Tal como se ha visto con los campos "id" son campos que contienen números enteros, los cuales se incrementan en una unidad cada vez que se crea un nuevo registro. Una vez que tenemos diseñada la estructura de la base de datos, pasaremos a crear la base de datos, abrimos phpMyAdmin, y debajo de donde pone "crear nueva base de datos, (casilla izquierda), escribimos "Literatura", después pulsamos el botón "crear. Tablas Crear tablas En la página anterior creamos la base de datos "Literatura". Para ello hemos abierto phpMyAdmin, y donde pone "crear nueva base de datos" escribimos "Literatura" y pulsamos en "crear". Nos apareceotra pantalla, en ella en la parte central tenemos lo siguiente: Nos fijamos en el recuadro "crear nueva tabla en la base de datos literatura", Donde pone "nombre" escribimos "Autores", que será el nombre de la primera tabla, y donde pone número de campos ponemos "1". De momento vamos a crear la tabla con un campo, luego iremos añadiendo los demás. Crear campo Pulsamos luego en continuar y nos sale otra pantalla, en ella nos fijamos en el siguiente cuadro: PHP & MySQL Página 47 Definimos aquí el campo o columna que queremos crear, para ello se necesitan algunos datos: Campo: Escribimos aquí el nombre del campo que queremos crear. En nuestro caso escribiremos idAutor Tipo: Se define el tipo de campo, es decir si es alfanumérico, entero, de fecha, memo, etc. Para ello elegimos entre las distintas opciones de la lista desplegable, la cual explicaremos más adelante. de momento elegimos "INT", que indica que es un número entero. Longitud/Valores: Se define aquí la longitud del campo. En caso de texto escrito es el máximo número de caracteres. Nosotros escribiremos 6 Predeterminado: Indica el valor del campo en caso de que se quede sin rellenar. Lo normal es poner "NULL", si queremos marcar que está vacío. o "como fuera definido" si queremos que muestre algún valor. En este caso, escribiremos en el recuadro inferior el valor predeterminado lo que debe mostrar. Nosotros lo dejaremos con "NULL" Indice: Aquí elegimos entre distintas opciones, Como es un campo debe contener la clave primaria elegiremos "PRIMARY". AUTO_INCREMENT: marcamos esta casilla, ya que será un campo con auto incremento. El resto de casillas las dejamos en blanco. Una vez escritos todos los datos, vamos a la parte inferior de la página, y pulsamos donde pone "Grabar". Nos aparecerá otra pantalla, la cual comentaremos más adelante, de momento vamos a explicar lo que hemos hecho. Los tres primeros datos que nos piden son obligatorios, de otra manera nos da un mensaje de error y el campo no se crea. El dato "Predeterminado", debemos ponerlo en "NULL" si el campo es numérico (entero o decimal), y no queremos un valor predeterminado. Los otros datos son opcionales, indicando algún valor, dependiendo del tipo de campo que queramos tener. PHP & MySQL Página 48 Tipos de campo En la casilla "Tipo, debemos poner el tipo de campo que queremos tener, según el tipo de campo, elegiremos las siguientes opciones: Alfanumérico: "VARCHAR" o "CHAR". Número entero: "INT" o también "TINYINT", "SMALLINT" o "MEDIUMINT". La diferencia entre ellos está en el margen de números que puede aceptar. Número decimal: "DECIMAL", "FLOAT", "DOUBLE" o "REAL". Fecha: "DATE", "DATETIME", "TIMESTAMP", "TIME" o "YEAR". Las diferencias entre ellos están principalmente en el formato de la fecha. Memo: "TEXT", "TINYTEX", "MEDIUMTEXT" o "LONGTEXT. La diferencia entre ellos está principalmente en la longitud del texto que puede guardarse. Crear nuevos campos Después de pulsar el botón "grabar" para crear el primer campo, nos aparece otra pantalla: Nos fijamos también en la parte central: Vemos la estructura de la tabla, con sus campos, como de momento sólo tenemos un campo, sólo aparece uno. Debajo de la tabla vemos que pone "Añadir 1 campo(s)"; el número "1" podríamos cambiarlo por otro número, pero vamos a dejarlo así. Marcamos esta opción y pulsamos luego en "continuar". Nos aparecerá otra vez la pantalla vista antes para crear un campo, pero ahora rellenaremos los datos de otra manera, ya que vamos a crear el segundo campo. Estos serán los siguientes: Campo: Autor - Tipo: VARCHAR - Longitud/Valores: 255 - Predeterminado: none - Índice: "UNIQUE"-. El resto de casillas las dejaremos en blanco. PHP & MySQL Página 49 La diferencia entre los índices "PRIMARY" y "UNIQUE", está en que "PRIMARY" crea una clave principal que es una referencia para diferenciar los registros de la tabla, mientras que "UNIQUE" sólo nos garantiza que no pueda haber dos celdas iguales, en diferentes registros, dentro del mismo campo. Una vez rellenas las casillas podemos optar por volver a la tabla, pulsando en "grabar", donde repetiremos el proceso para insertar un nuevo campo; o pulsar en "continuar" para seguir en la misma pantalla pero para insertar otro campo. Seguimos añadiendo los campos que faltan para completar la tabla, en los cuales insertaremos los siguientes datos: Campo Tipo Longitud/Valores Predeterminado Año nacimiento INT 4 none Año fallecimiento INT 4 none Lugar nacimiento VARCHAR 255 none Vida TEXT 1000 none Estilo TEXT 1000 none refEpoca varchar 255 none Para ello repetimos el proceso visto hasta ahora para crear los campos. Los datos que no hemos dado los dejamos en blanco. Al acabar el último campo pulsamos en "grabar". La Tabla la veremos ahora de la siguiente manera: PHP & MySQL Página 50 Vemos que a la derecha de cada campo tenemos una serie de iconos, los cuales se repiten debajo de la tabla por si queremos seleccionar más de un campo. Al pulsar sobre ellos se abren distintas opciones- Estos son los botones: Examinar. Muestra la vista de todos los datos que hay guardados en las columnas que hemos señalado. También podemos elegir esta opción con todos los campos de la tabla en la parte superior de la página. Cambiar. Abre la misma pantalla que cuando creamos un campo, desde ahí permite cambiar la estructura del campo. Eliminar. Elimina el campo señalado. Antes de eliminarlo definitivamente sale una pantalla que pregunta si realmente se desea eliminar. Clave Primaria. Crea una clave primaria en el campo señalado. Clave Única. Crea una clave única en el campo señalado. Índice. Crea una índice para el campo señalado. Siguiendo con la base de datos que habíamos diseñado en las páginas anteriores, debemos crear las tablas que faltan, para ello lo primero es posicionarse en la página inicial de la base de datos. Para ello, desde la página inicial de phpMyAdmin, en la columna de la izquierda se muestran las bases de datos que hay en el programa. Elegimos la base de datos "literatura" y pulsamos en ella. Si no estamos en la página principal, siempre podemos volver a ella desde la parte superior izquierda del cuadro principal, donde pone "Servidor: localhost". Una vez posicionados, veremos en el cuadro principal lo siguiente: PHP & MySQL Página 51 Procedemos igual que para crear la primera tabla, por lo que en el cuadro de abajo, donde pone "crear nueva tabla en la base de datos literatura", insertaremos el nombre de la tabla en "nombre", y pondremos un "1" en "Número de campos". Lo mismo haremos para las otras tablas, después de posicionarnos en la página de inicio de la base datos. Solo nos falta insertar los datos para crear las tablas, los cuales son los siguientes: Tabla Obras Campo Tipo Longitud/ Valores Predeterminado Índice AUTO_ INCREMENT idObra INT 6 none PRIMARY Marcado Titulo VARCHAR 255 none UNIQUE Año 1ª edición INT 4 none Argumento TEXT 1500 none Critica TEXT 1500 none refAutor VARCHAR 255 none refEpoca VARCHAR 255 none refGenero VARCHAR 255 none PHP & MySQL Página 52 Tabla Época Campo Tipo Longitud/ Valores Predeterminado Índice AUTO_ INCREMENT idEpoca INT 6 none PRIMARY Marcado Epoca VARCHAR 255 none UNIQUE Tiempo comprendido VARCHAR 255 none Tabla Género Campo Tipo Longitud/ Valores Predeterminado Índice AUTO_ INCREMENT idGenero INT 6 none PRIMARY Marcado Genero VARCHAR 255 none UNIQUE Relaciones entre Tablas Una vez creadas las tablas abrimos la página de inicio de la base de datos, allí veremos las diferentes tablas: Para crear las relaciones entre las distintas tablas, en esta misma página, vemos en la parte superior izquierda, un cuadro que pone "Diseñador". Pulsamos ahí, y se nos abre el siguientepanel: PHP & MySQL Página 53 Vemos que cada tabla está representada por una barra, estas barras podemos cambiarlas de sitio arrastrándolas dentro del panel. Además si pulsamos en la flecha azul de la izquierda, se abre la lista de los campos que contiene cada tabla. Abrimos pues mediante la flecha azul todas las tablas, y las arrastramos hasta una posición más cómoda: Pulsamos después en el tercer botón de la parte superior, al detener el ratón encima de este botón sale un cuadro que pone "crear relación". Al pulsar sale un cuadro con fondo verde que dice "Seleccione la llave de referencia". Llevamos el ratón hasta el campo "Epoca" en la tabla época, y hacemos clic. El mensaje del cuadro cambia, ahora pone "Seleccione la llave extranjera", ahora llevamos el ratón al campo "refEpoca" de la tabla "Autores" y hacemos clic. Sale un cuadro donde pone "crear relación", pulsamos en "ok" y vemos que las dos tablas quedan unidas por una línea. Esto indica que están relacionadas. Hacemos lo mismo con las siguientes relaciones: PHP & MySQL Página 54 Desde "Autor" en tabla "Autores" hacia "refAutor" en tabla "Obras". Desde "Genero" en tabla "Genero" hacia "refGenero" en tabla "Obras". Desde "Epoca" en tabla "Epoca" hacia "refepoca" en tabla "Obras". Una vez que hemos creado las relaciones anteriores el panel mostrará las relaciones, de manera parecida al siguiente: Ya tenemos la estructura de la base de datos acabada, ahora necesitamos saber cómo introducir los diferentes datos. Si queremos eliminar una relación pulsaremos en la parte final de la flecha que las une, nos saldrá un cuadro que dice "Eliminar la relación", pulsamos en "borrar" para eliminarla o en "cancelar" si queremos dejarla. Introducir datos Ahora debemos rellenar la base con algunos datos. Para ello empezaremos por la tabla "Genero". Abrimos esta tabla en phpMyAdmin, y vemos que en la parte de arriba hay una serie de opciones: Pulsamos sobre "insertar" y se nos abre una nueva pantalla: PHP & MySQL Página 55 Vemos que nos sale un panel para insertar nuevos registros en la tabla. Este panel puede estar repetido, para insertar dos registros a la vez, si queremos insertar sólo uno rellenaremos sólo la primera parte, y si queremos ver el panel sólo para un registro, iremos a la parte de abajo, donde pone "reinicie la inserción con 2 filas", cambiamos el 2 por el 1, y nos quedaremos con un solo panel para insertar. Los datos a insertar los escribiremos en la columna "Valor", para cada uno de los campos. Los campos que empiezan por id (con autoincremento) no los rellenaremos, por lo que aquí rellenamos el primer dato para el campo género, Escribimos "Novela" y pulsamos luego en continuar La columna "Función", a no ser que queramos hacer algún tipo de operación con los datos que insertamos, la dejaremos siempre en blanco. Vamos a la parte de abajo, donde pone "grabar y luego volver", dejamos las opciones como están, y debajo de ellas pulsamos en "continuar". Nos aparece la siguiente pantalla: PHP & MySQL Página 56 Nos aparece la tabla en vista "examinar", en la cual aparecen los diferentes registros de la tabla. Si queremos ver la tabla en la vista que estaba antes, pulsamos en la parte superior en "estructura" y si queremos volver a insertar un nuevo registro pulsamos en la parte superior en insertar, y volvemos a comenzar el proceso. Seguiremos insertando nuevos registros en la tabla, con los siguientes valores para el campo Género: "poesía", "teatro". Recuerda que el campo "idGenero no debe rellenarse al ser de auto incremento. Para ello pulsamos en insertar y volvemos a repetir el proceso. Es posible que al pulsar en "continuar" al acabar de insertar un registro, no nos salga la vista "examinar" sino la vista "SQL", podemos cambiar la vista desde la parte superior de la página, pulsando en examinar. Ahora en vista examinar, veremos la tabla con los tres registros que hemos incluido: PHP & MySQL Página 57 Rellenar tablas con datos Ahora que ya sabemos cómo introducir los datos, rellenaremos algunos datos en el resto de las tablas. Empezamos por la tabla "Epoca" en la cual introduciremos los siguientes datos: Época Periodo comprendido Edad Media Siglos X a XIV Renacimiento Siglo XV Barroco Siglos XVI y XVII Neoclásico Siglo XVIII Romanticismo Siglo XIX, primera mitad Realismo Siglo XIX, segunda mitad Generación 98 De 1890 a 1920 Generación 27 de 1920 a 1940 Actual De 1940 hasta hoy Recuerda que el campo "idEpoca" no debe rellenarse, ya que es de auto incremento. Una vez introducidos los datos, la tabla, en vista examinar, la veremos así: Para no alargar demasiado la página introduciremos sólo un registro en cada una de las dos tablas que faltan. En los campos relacionados con otras tablas, no escribimos el valor, sino que lo seleccionamos en una lista, esa lista son los valores introducidos en el campo de la tabla con el que está relacionado. En la tabla Autores introduciremos el siguiente registro: Autor: Arcipreste de Hita Fecha Nacimiento: 1280 PHP & MySQL Página 58 Fecha Fallecimiento: 1351 Lugar Nacimiento: Alcalá de Henares Vida: Fue clérigo y ejerció de arcipreste en Hita, actual provincia de Guadalajara. Se conocen muy pocos datos de su biografía, apenas su nombre y el de uno de los protagonistas de su libro, Ferrán García, Critica: Fue el creador de una obra miscelánea predominantemente narrativa en verso que constituye una de las obras literarias más importantes de la literatura medieval española, el Libro de buen amor. refEpoca: -Edad media (lo elegimos en la lista desplegable). Y ahora en la tabla Obras introducimos el siguiente registro: Obra: Libro del buen amor Año 1ª edicion: 1330 Argumento: El libro contiene una colección heterogénea de diversos materiales unidos en torno a una pretendida narración autobiográfica de asuntos amorosos del propio autor, Critica: Es una composición extensa y variada de 1728 estrofas. Está considerada de forma unánime como una de las cumbres literarias españolas de cualquier tiempo, y no solo de la Edad Media. refAutor: -Arcipreste de Hita refEpoca: -Edad media refGenero: -Poesia Aunque la base de datos ya está funcionando, tenemos que solucionar todavía algunos detalles, como lo de subirla al servidor, o poder hacer alguna copia, etc. PHP & MySQL Página 59 Más opciones de PHMyAdmin Privilegios En la parte superior de la página de PhpMyAdmin, vemos también otra serie de opciones. Algunas de estas permiten realizar una serie de operaciones con las bases de datos o con las tablas, otras dan información sobre el funcionamiento de la base de datos y de phpMyAdmin. Empezamos por la opción privilegios, si pulsamos ahí obtenemos la siguiente pantalla. Aquí tenemos la lista de usuarios, desde aquí podemos añadir o eliminar un nuevo usuario, además si pulsamos en el último cuadro del usuario, (donde hay un muñeco con un lápiz), podemos editar los privilegios. Desde ahí podemos añadir o cambiar la contraseña para el usuario, y además elegir entre otra serie de opciones. Los privilegios, así como la contraseña pueden ser para un usuario, o sólo para una base de datos. Esto si estamos trabajando en el servidor local, ("localhost"), en un ordenador personal nuestro, no tiene importancia, ya que no se suelen poner contraseñas, pero si trabajamos en un ordenador compartido, o en el servidor, es más que necesario poner contraseñas para que no puedan interferir en nuestro trabajo. PHP & MySQL Página 60 Conectar con MySQL Introducción En el tema anterior vimos cómo hacer una base de datos con el programa phpMyAdmin. Sin embargo lo realmente interesante es poder ver en una página web los datos guardados en estas bases. MySQL permite no sólo ver los datos guardados mediante phpMyAdmin, sino también introducir nuevosdatos o modificar los existentes. La conexión entre la base de datos y la página se realiza de forma automática, de manera que al insertar, cambiar o borrar cualquier dato en la base, se cambia automáticamente en la página. No sólo podemos guardar datos desde la web, sino que podemos incluso crear una nueva base de datos MySQL, insertar las tablas, y luego los datos en esas tablas, es decir, podemos prescindir de phpMyAdmin para crear la base de datos, y crearla completamente desde la página web. Para ello MySQL dispone de un lenguaje de programación específico, el cual se inserta dentro del lenguaje php. Este lenguaje es bastante fácil, ya que no tiene ni variables propias (sí podemos usar las de php), ni estructuras. Simplemente consiste en decir a la máquina lo que queremos hacer (buscar, insertar, borrar, etc.) Datos necesarios Lo primero que debemos hacer, para trabajar con una base de datos desde nuestra página, es conectar con MySQL, para ello en principio debemos saber los datos que nos permitan localizar y conectar con MySQL, estos son: Servidor: Es el nombre de la máquina en la que está el programa MySQL. Si trabajamos en local, es decir en nuestro ordenador con XAMPP o algún otro programa que nos lo haya instalado, el nombre es localhost Usuario: Dentro de MySQL puede haber uno o varios usuarios, Cada uno de ellos tiene un nombre diferente. Si trabajamos en local, el usuario por defecto es root. Contraseña: Cada usuario tiene una contraseña, trabajando en local, el usuario por defecto "root" no tiene contraseña, sin embargo siempre hay que ponerla por lo que pondremos un valor vacío: "". Para tener nuestra página en la web, el servidor debe proporcionarnos estos datos, los cuales, está claro que serán distintos que en servidor local, por lo que es conveniente guardarlos en variables para, antes de subir la página, cambiarlos. Conectar con MySQL Ahora ya podemos conectar con MySQL, para ello utilizaremos la siguiente función: Si trabajamos en local, y lo que estamos haciendo son sólo pruebas, podemos poner también; PHP & MySQL Página 61 Como parámetros debemos pasar el servidor, el usuario y la contraseña, en este orden. El funcionamiento es parecido a manejar archivos, es decir, una vez abierta la conexión, la guardamos en una variable, (en este caso $db), esta es la referencia, y funciona igual que el manejador para los archivos. Por lo tanto cuando acabemos de manipular los datos de la base, debemos cerrar la conexión, esto se hará mediante la función: Donde la variable $db es la variable de referencia que hemos puesto al abrir la conexión. Conectar con una base de datos Conectar con una base de datos. Una vez conectado a MySQL, el siguiente paso es indicarle la base de datos con la que queremos conectar, ya que dentro de un mismo usuario, éste puede tener varias bases de datos, por lo que una vez conectados, usaremos la siguiente función: Como primer argumento de la función se pone el nombre de la base de datos, y como segundo ponemos la referencia. Por lo que para conectar con la base de datos "literatura", creada en el tema anterior, escribiremos lo siguiente: PHP & MySQL Página 62 Trabajar con la base de datos Una vez que hemos conectado con la base de datos, ya podemos trabajar con ella. Cambiar, buscar, añadir, borrar, o cualquier otra operación que queramos hacer con la base de datos, debemos hacerla con la base de datos abierta. Además debemos escribirlo en lenguaje MySQL, el cual debemos mandarlo al programa MySQL para que lo ejecute. Para ello en primer lugar escribiremos el lenguaje MySQL y se guarda en una variable. Siguiendo el ejemplo anterior, podríamos escribir: En este ejemplo el código MySQL es "select * from autores". Este código seleccionará la tabla "autores" de la base "literatura". Más adelante se explicará cómo hacer para poder ver la tabla. Observa que el código MySQL lo hemos guardado en la variable $sql, esto es porque ahora debemos mandarlo a la base de datos, esto lo hacemos mediante la siguiente función: Donde el primer argumento ($sql) es el código MySQL y el segundo es la referencia a la conexión. Los datos requeridos están en la variable $datos, más adelante veremos cómo extraerlos para verlos en la página. Lo visto hasta ahora es el código básico imprescindible para trabajar con una base de datos MySQL. El código completo visto hasta ahora para trabajar con una base de datos en local quedará así: PHP & MySQL Página 63 En este código se supone que hemos guardado previamente los nombres del servidor, usuario y contraseña en sus respectivas variables. En la variable $datos mandamos o recibimos los datos que se refieren a la base y que hemos escrito en código_MySQL. El código visto hasta ahora es básico para trabajar con cualquier base de datos en MySQL. PHP & MySQL Página 64 PHP & MySQL Página 65 Agrega vida a tus páginas web Hasta el momento has creado páginas web con HTML y CSS. Seguramente has notado que los visitantes a tu página solo pueden ver el contenido de forma pasiva. La comunicación solo se da un canal y eso debe de cambiar. De hecho, a ti te interesa lo que tu audiencia está pensando. Por lo que se requiere que los usuarios ingresen información en formularios web, además esta información te debe ser procesada y entregada. Al parecer necesitaras algo más que HTML para llevar tu sitio al siguiente nivel. PHP & MySQL Página 66 HTML es estático y aburrido. HTML es grandioso para crear páginas web, y eso es todo lo que sabemos. ¿Pero qué sucede cuando necesitas que tus páginas hagan algo? Imagina que en tú página web, necesitas buscar en una base de datos o enviar un email… ¿Cómo lo haces? HTML se queda corto debido a las limitaciones del lenguaje, ya que está diseñado solo para mostrar información. El servidor web es una gran parte del problema cuando solo tienes HTML, ya que solo funciona como un aburrido mecanismo de entrega. Un navegador solicita una página, el servidor responde con el código HTML y fin de la historia. Para poder transformar las páginas web a unas verdaderas aplicaciones web, el servidor web debe de tomar un rol más dinámico, que es posible con el uso de PHP. HTML es grandioso, si tú quieres compartir una imagen de tu mascota…pero ya no lo es cuando quieres interactuar con tus visitantes. Hello? Estas personas buscan interacción. El código HTML en estas páginas es determinado por el desarrollador web. El contenido de la página web, solo cambia cuando el programador modifica el .html y lo reemplaza en el servidor. El servidor web se limita a mostrar las páginas web estáticas una tras otra. PHP & MySQL Página 67 PHP da vida a tus páginas web. PHP permite manipular el contenido en una página web desde el servidor justo antes de que la página sea entregada al navegador del cliente. Funciona del siguiente modo: Un script de PHP se ejecuta en el servidor y puede generar código HTML a voluntad. Una página web con HTML se envía al navegador, que no sabe ni le importa si PHP está involucrado Con algo de ayuda del servidor web El navegador recibe el código HTML de la página, aunque este es generado dinámicamente por PHP. El código HTML de esta página web es generado por PHP y puede cambiar de forma dinámica dependiendo de lo que se necesite. Los scripts de PHP están almacenados en el servidor web, donde son procesados y entregados al navegador como páginas web. Los scripts de PHP contienen ambos códigos (HTML & PHP), que determinan como se manipula el HTML. PHP almacena y recupera datos de una BD, y los incorpora en el código HTML generado. Las páginas web dinámicas cambian de acuerdo al contenido lógico de los scripts de PHP, haciendomuy flexible su uso. PHP & MySQL Página 68 Cachorros en el espacio. Conoce a Owen. Owen ha perdido a su cachorro Fang, solo que encontrar a su perro no se limita a buscar solo por el vecindario; ya que a Fang lo han secuestrado los Aliens. Esto hace que Owen busque por toda la galaxia. Owen sabe algo de HTML y CSS, por lo que piensa que un sitio web podría ayudarle a resolver su problema, permitiendo que otras personas puedan brindar información y a su vez compartir experiencias de encuentros cercanos. ¿Lo has visto? Existen pocos detalles, pero podemos afirmar que Fang fue visto por última vez subiendo por un rayo de luz. Pero, para obtener información de otras personas, Owen necesita un formulario Web; que sea capaz de permitir que los usuarios ingresen información. Por supuesto esto no es un problema, ya que existen diversas etiquetas HTML que ayudaran al trabajo. PHP & MySQL Página 69 Creando el código PHP & MySQL Página 70 Un formulario ayudara a Owen en su búsqueda Owen tiene un nuevo sitio web llamado AliensAbductedMe.com tiene el propósito de conectar a Owen con personas que hayan sido secuestradas por Aliens y así saber algo acerca de Fang. Owen necesita un formulario HTML para solicitar a los visitantes que compartan sus historias de abducción, para averiguar si vieron a Fang durante sus viaje inter espaciales. Solo que Owen necesita tu ayuda para diseñar el formulario, esto es lo que tiene en mente: Aquí se pide el email del visitante Owen quiere la descripción física de los aliens Owen espera que digan Sí a esta pregunta Cualquier comentario adicional puede ir aquí. Owen quiere recibir un email cuando el usuario envíe el formulario. Una imagen de Fang, insertada con puro código HTML. PHP & MySQL Página 71 Problemas con el formulario El formulario de Owen se encuentra completamente funcional, pero existe un problema ya que no recibe la información de los visitantes, veamos que nos tienen que decir: Estoy confundido ya que aparece un mensaje de email. Cuando doy clic al botón, me abre mi Outlook en blanco, pase llenando el formulario para nada. Todas mis respuestas fueron ignoradas ya que me abre el correo en blanco, alguien debería secuestrar este inútil formulario. Mi navegador me dice que no tengo cliente de email en mi equipo y no pasa nada. PHP & MySQL Página 72 Si hay un problema. El código HTML está bien, pero el método mailto no es una forma correcta para enviar datos. El formulario de Owen está bien creado, cuando el usuario presiona el botón “Reportar secuestro”, envía un paquete de datos para email, el detalle es que este email no se envía de forma automática y no solo eso el usuario debe de enviar el email por sí solo. Lo que necesitamos es una forma de enviar los datos del formulario web. Para ser más específicos necesitamos PHP, esto nos hace cambiar el esquema ya que necesitamos al cliente (HTML) y al servidor (PHP). El formulario se ve muy bien, el problema será el método para el envío de correo PHP & MySQL Página 73 HTML trabaja del lado del cliente El formulario de Owen está escrito en puro HTML con el método mailto el formulario trata de enviar datos a través de correo electrónico, aunque estuviese en Internet, este formulario está procesado desde en navegador del usuario. Quiero acceder a la página de Owen por favor. El navegador solicita la página web de Owen En el Servidor se alojan los archivos de la página web Aquí van El navegador web lo ejecuta la computadora del cliente El servidor regresa la página web Ahora quiero enviar los datos que se llenaron del formulario. El usuario llena el formulario y lo envía. El formulario le pide al navegador que abra el programa de email El programa de email crea un nuevo correo en blanco para que sea enviado. Yo no me involucro El servidor jamás recibe los datos que usen el método mailto Owen puede o no puede recibir el correo PHP & MySQL Página 74 821 831 833
Compartir