Ciudad Victoria Tamaulipas, 21 de Febrero del 2011 Ing. Hugo Dimas Treto OCA (Oracle Certified Associated), MCP (Microsoft Certified Professional), MCTS (Microsoft Certified Technology Specialist) Desarrollo de pginas web con PHP y MySql 2
ndice
ndice .................................................................................................................................................................. 2 Declaratoria ........................................................................................................................................................ 4 Introduccin ....................................................................................................................................................... 5 Repaso de HTML ................................................................................................................................................. 6 Etiquetas comunes del HTML......................................................................................................................... 9 Hojas de Estilo, CSS ...................................................................................................................................... 14 JavaScript en HTML ...................................................................................................................................... 17 Instalacin de herramientas adicionales para apoyo de consultas MySql y desarrollo Php ........................ 18 Instalacin de MySQL ................................................................................................................................... 18 Instalacin de WorkBench 5.2 CE ................................................................................................................ 28 Instalacin de Apache .................................................................................................................................. 32 Instalacin de PHP........................................................................................................................................ 37 Configurar PHP en Apache ........................................................................................................................... 41 Instalacin de NETBEANS ............................................................................................................................. 41 MySql ........................................................................................................................................................... 45 Creacin de una Base de Datos .................................................................................................................... 47 ndices, Llaves Primarias y Llaves Forneas ................................................................................................. 49 Qu es un ndice y para qu sirve?............................................................................................................. 49 Qu es una llave primaria y para qu sirve? .............................................................................................. 50 Qu es una llave fornea y para qu sirve? ............................................................................................... 50 Clusulas SELECT, FROM, WHERE ................................................................................................................ 56 Insertar registros .......................................................................................................................................... 56 Eliminar registros ......................................................................................................................................... 56 Actualizar registros ...................................................................................................................................... 57 Consultar registros ....................................................................................................................................... 57 Join de Tablas ............................................................................................................................................... 58 Creacin de Stored Procedures.................................................................................................................... 59 Stored Procedure sin parmetros ................................................................................................................ 60 Stored Procedure con parmetros ............................................................................................................... 62 Php ............................................................................................................................................................... 63 Declaracin de variables y constantes ......................................................................................................... 65 Constantes ................................................................................................................................................... 65 Desarrollo de pginas web con PHP y MySql 3
Operadores .................................................................................................................................................. 66 Operadores de asignacin ........................................................................................................................... 67 Operadores bit a bit ..................................................................................................................................... 67 Operadores de comparacin ....................................................................................................................... 68 Operadores de incremento/decremento .................................................................................................... 68 Operadores lgicos ...................................................................................................................................... 68 Operadores para strings ............................................................................................................................... 69 Comillas simples ...................................................................................................................................... 69 Comillas dobles ........................................................................................................................................ 69 Operadores para arrays ............................................................................................................................... 69 Estructuras de control .................................................................................................................................. 70 If else ............................................................................................................................................................ 71 WHILE ........................................................................................................................................................... 71 DO WHILE ..................................................................................................................................................... 71 FOR ............................................................................................................................................................... 72 Variables de sesin ...................................................................................................................................... 73 Conexin a MySql ......................................................................................................................................... 73 Ejecucin de Consultas................................................................................................................................. 74 Php MyAdmin............................................................................................................................................... 75 BIBLIOGRAFIA ............................................................................................................................................... 77
Desarrollo de pginas web con PHP y MySql 4
Declaratoria
Antes que cualquier comentario es indispensable felicitarte por tomar la decisin de capacitarte, tu crecimiento profesional se ve reflejado en el deseo de superacin constante y en el espacio que le dedicas al mismo. Las tecnologas de informacin son un rea de constante crecimiento, ya sea si te dedicas a programar, administrar, al soporte o la infraestructura, es necesario que al menos cada 3 o 5 aos tomes todos tus conocimientos y prcticamente los arrojes por la venta para cambiar la forma de pensar al momento de resolver las necesidades de tus usuarios. Estamos en constante crecimiento, y las tecnologas de informacin no son para nada la excepcin, ms bien, son el motor que motiva y camina de la mano con este crecimiento continuo.
Antes de empezar es importante que sepas que este documento no puede ser usado para un auto aprendizaje, es importante la gua del instructor en el saln de clase para su discusin por lo que no se recomienda sea adquirido de forma independiente como un medio simple de aprendizaje puro, las imgenes, cdigos y dems referencias que aqu se muestran han sido escogidas con el nico objetivo de que sean una gua de apoyo exclusivamente.
Reservados todos los derechos. Ni la totalidad ni parte de esta publicacin, as como los materiales complementarios pueden reproducirse o transmitirse por un sistema de recuperacin de informacin, en ninguna forma ni por ningn medio, sea electrnico, mecnico, fotoqumico, magntico o electroptico, por fotocopia, grabacin o cualquier otro, sin permiso previo por escrito de ETI Training And Consulting S de RL MI.
Gracias por preferir a ETI Victoria como tu proveedor de capacitacin en Tecnologas de Informacin, estamos convencidos de que lo seguiremos siendo a lo largo de tu carrera profesional, si tienes alguna duda o te gustara hacernos un comentario con respecto a este curso, te invitamos a que visites nuestra pgina www.e-ti.com.mx o bien, nos escribas a la direccin comentarios@e-ti.com.mx donde con mucho gusto y atencin la direccin general podr escucharte y atender tus comentarios. Una vez ms Gracias y Bienvenido a la comunidad ETI Victoria.
Desarrollo de pginas web con PHP y MySql 5
Introduccin
Estimado programador, es una enorme satisfaccin para ETI Victoria que nos hayas brindado la oportunidad de ser tu gua en esta etapa de aprendizaje en tu carrera profesional, esperamos que el contenido de este material te sea de gran apoyo al momento en que te encuentres realizando tus propios cdigos, hemos tratado de crear un material que pueda ser consultado para aclarar algunas de las dudas que puedan surgir y que conciernan a lo que referimos en el ndice. Sabemos que el mundo de la programacin es muy amplio, y los lenguajes de programacin como MySql y PHP son muy verstiles lo que permite que puedan extenderse a niveles altsimos, prcticamente la imaginacin es el lmite, adems con el constante crecimiento y uso de la herramienta nos permite hacer cada da ms y ms aplicaciones, en los ltimos meses una idea tan simple y tan grande se potencio con el uso de PHP, me refiero a la red social Facebook, lo que hizo que el lenguaje de programacin PHP tomara un auge que haba venido decayendo por la mercadotecnia de marcas tan importantes como ORACLE, MICROSOFT, IBM y dems, pero esta idea (Facebook) vino a darle un segundo aire (y seguramente por un largo tiempo) al desarrollo web, especialmente con este lenguaje PHP y MySql. Iniciaremos comentando que PHP y MySql se rigen bajo el esquema de Open Source (Cdigo Abierto) es decir, gratuito, lo que no necesariamente es cierto, debido a que existe una versin de MySql que se denomina Enterprise, la cual puede ser usada por grandes corporativos y tiene un costo de licencia por las herramientas de monitoreo y control con las que cuenta, mysql estrechamente relacionada a ORACLE debido hace ya varios meses atrs adquirieron a la empresa SUN, la cual contaba con la expedicin de este tipo de licencias, misma adquisicin que hizo pensar la desaparicin del software debido a que ORACLE por aos, su principal fuente de ingresos ha sido la muy reconocida DBMS (Data Base Management System) ORACLE en sus diferentes versiones, pero para fortuna de nosotros los programadores de Open Source MySql permanece en el gusto de muchos y sostiene grandes e importantes compaas a nivel internacional lo que hace prcticamente imposible su desaparicin. Una vez dicho lo anterior, manos a la obra.
Desarrollo de pginas web con PHP y MySql 6
Repaso de HTML HTML, siglas de HyperText Markup Language (Lenguaje de Marcado de Hipertexto), es el lenguaje de marcado predominante para la elaboracin de pginas web. Es usado para describir la estructura y el contenido en forma de texto, as como para complementar el texto con objetos tales como imgenes. HTML se escribe en forma de "etiquetas", rodeadas por corchetes angulares (<,>). HTML tambin puede describir, hasta un cierto punto, la apariencia de un documento, y puede incluir un script (por ejemplo Javascript), el cual puede afectar el comportamiento de navegadores web y otros procesadores de HTML. Estructura completa de una pgina HTML.
<!DOCTYPE> La declaracin de tipo de documento debe ser lo primero en un documento HTML, antes de la etiqueta <html>. No es una etiqueta HTML, sino que es una instruccin para el navegador web acerca de qu versin del lenguaje de marcado se escribe la pgina. La declaracin de tipo de documento se refiere a una definicin de tipo de documento (DTD). El DTD especifica las reglas para el lenguaje de marcas, de modo que los navegadores de representar el contenido correctamente.
xmlns Declarar un namespace de etiquetas personalizadas en un documento HTML.
Meta Para "refrescar" una pgina o redirigirla a otra, transcurrido un cierto tiempo: <Meta http-equiv="refresh" content="20;URL=./indice.htm" >
Desarrollo de pginas web con PHP y MySql 7
El tipo es http-equiv="refresh", en content le decimos el nmero de segundos (si indicamos CERO ser inmediato) y a continuacin indicamos la pgina a la que debe dirigirse, para ello usamos URL=nombre de la pgina. En este ejemplo, se cargar la pgina indice.htm que est en el directorio actual transcurridos 20 segundos. Las palabras claves que los "robots" usarn: <meta name="Keywords" content="las palabras separadas por comas" >
Este tag lo usarn los "robots" enviados por los buscadores y se usar para indicar las palabras claves relacionadas con la pgina en cuestin. La descripcin de la pgina: <meta name="Description" content="descripcin de la pgina" >
Este tag lo usan los buscadores para dar una descripcin del contenido de la pgina. Si los "Robots" deben tener en cuenta esta pgina o no: <meta name="Robots" content="ver los valores" >
El valor de content puede ser:
all para que el robot tenga en cuenta esta pgina y pueda seguir los links contenidos en la misma (este es el valor predeterminado) noindex para que no la tenga en cuenta. none que es lo mismo que noindex, nofollow index para que la tenga en cuenta follow para que pueda seguir los links que haya en la pgina nofollow lo contrario de follow. La fecha en la que expira una pgina: <meta http-equiv="expires" content="fecha en formato GMT" >
La fecha en la que dicha pgina expira y por tanto el navegador "refrescar" el contenido despus de esa fecha. El formato de la fecha es algo como: Sat, 16 Nov 2002 16:05:00 GMT, tambin se puede indicar un CERO para que expire inmediatamente.
En el caso de que el valor de content sea -1, no se guardar en el cach, en teora lo mismo que si fuese 0. Si se usan pginas ASP, se puede usar tambin: Response.Expires = -1
Desarrollo de pginas web con PHP y MySql 8
Para que no se guarde la pgina en el cach: <meta http-equiv="Pragma" content="no-cache" >
Esto le indica al navegador que no guarde la pgina en el cach.
Este meta-tag no es vlido para el Internet Explorer y segn la Knowledge Base, es preferible usar el mtodo indicado arriba, es decir usar "expires" y en content -1:
<meta http-equiv="expires" content="-1" >
A ver si es cierto... ya que esto es el que yo necesito para evitar los problemillas que algunas veces me contis de que no se ve la pgina correcta... Evitar que una pgina se muestre dentro de un frame: <meta http-equiv="Window-target" content="_top" >
En Content podemos usar:
_top para indicar que se muestre en la pgina completa, no dentro de un frame,
_blank para que se muestre en una nueva ventana.
Desarrollo de pginas web con PHP y MySql 9
Etiquetas comunes del HTML INPUT El tag HTML input es usado para mostrar controles que permiten a los usuario ingresar datos en un formulario. La conducta del control depende mayormente del atributo "type". Este atributo define el tipo de control que se mostrar.
El atributo "type" puede tomar varios valores sern descriptos a continuacin. text Este valor define un control diseado para entrada de texto. Este tipo de campo permite a los usuarios ingresar informacin textual. (por ejemplo, nombres, ttulos, etc.). password Este tipo de control funciona exactamente como en tipo "text" con una pequea diferencia: el tipo "password" usualmente oculta los caracteres ingresados usando puntos o asteriscos en su lugar. checkbox Cada "checkbox" (casilla de verificacin) funciona como un interruptor "encendido/apagado" (valores booleanos). Este control es comnmente usado en formularios para seleccionar opciones, intereses, etc. Varios "checkbox" pueden compartir un mismo nombre de control (atributo "name"), permitiendo a los autores dar ms de un valor a una misma propiedad. radio Los botones "radio" funcionan como las "checkbox". La diferencia es que los botones "radio", cuando comparten un mismo nombre de control, son exclusivos. Esto significa que solo uno de ellos puede ser elegido, y cuando es elegido, el resto automticamente pierde la seleccin. submit El tipo "submit" crea un botn. Cuando un botn "submit" es presionado, el formulario es automticamente enviado. image Este valor crea un botn "submit" que puede tomar un aspecto grfico. Los botones grficos tambin pueden ser usados como mapas de imagen. Cuando se lo presiona, un botn grfico llamado "boton1" tambin enva las coordenadas del puntero (lugar de la imagen donde ocurri el click): "boton1.x" y "boton1.y". reset Este tipo crea un botn. Cuando un botn "reset" es presionado, todos los campos del formulario son re establecidos a sus correspondientes valores iniciales. Desarrollo de pginas web con PHP y MySql 10
button El tipo "button" crea un botn ordinario que no tiene ninguna funcin preestablecida. Las acciones para estos botones son usualmente definidas con scripts del lado cliente (por ejemplo, JavaScript). hidden Este tipo de control permite a los autores insertar valores en un formulario que no sern mostrados, pero que aun as sern enviados con el formulario. Estos valores son muy usados cuando los formularios consisten de dos o ms etapas, donde la transicin de una etapa a la siguiente se logra enviando un formulario. Entonces, los valores de la etapa anterior son "salvados" en controles "hidden". file Este tipo de control permite a los usuarios elegir un archivo para enviar. Este archivo es enviado con el formulario. Nota que para carga de archivos, el atributo "enctype" del formulario debe tomar le valor "multipart/form-data".
STRONG Utilizado para mostrar un texto en negritas <strong>Hola Mundo</strong> Su resultado ser Hola Mundo
A Se utiliza para crear links (ligas), estos links pueden ser hacia las mismas pginas del sitio donde se encuentra o hacia sitios completamente diferentes que se encuentren en otro dominio, adicionalmente se pueden hacer ligas hacia ubicaciones que se encuentren en el mismo archivo <a href=http://www.google.com target=_blank>Ir a Google</a> Ir a Google
<a name=top></a> <a href=#top>Ir al Inicio de la pgina</a> Ir al Inicio de la pgina
Desarrollo de pginas web con PHP y MySql 11
H1, H2, H3, H4, H5, H6 Utilizable para indicar un encabezado de pgina, el nmero a la derecha de la Letra H indica el tamao donde el nmero 1 es el encabezado con mayor tamao y el nmero 6 es el encabezado con menor tamao. Ejemplo: <H1>Esto es el encabezado</H1> Esto es el encabezado <H2>Esto es el encabezado</H2> Esto es el encabezado <H3>Esto es el encabezado</H3> Esto es el encabezado
UL, OL, LI Estos elementos se utilizan para crear listas de elementos ya sea de forma ordenada, es decir numerada, o de forma desordenada, los tags UL y OL se conjugan con el elemento LI para formar las listas Ejemplos:
<ul> <li>unorder list</li> <li>unorder list</li> </ul> unorder list unorder list
<ol> <li>order list</li> <li>order list</li> </ol> 1. unorder list 2. unorder list
Desarrollo de pginas web con PHP y MySql 12
P Se utiliza para crear prrafos dentro de un documento HTML <p>Esto es un prrafo</p>
IMG Este TAG se utiliza para insertar una imagen dentro de un HTML, forzosamente debe de ir acompaado al menos del atributo SRC Ejemplo: <img src="rssLogo.gif" /> <img src="rssLogo.gif" width=80 height=20 alt =Imagen de Prueba />
Atributo Descripcin Ejemplo WIDTH Se utiliza para establecer el ancho de la imagen WIDTH=80 HEIGHT Se utiliza para establecer el alto de la imagen HEIGHT=20 ALT Se utiliza para indicar un texto alternativo a la imagen ALT=Imagen de un gato ALIGN Con este atributo podemos indicar la alineacin de una imagen con respecto al prrafo en que se encuentre ALIGN=LEFT ALIGN=RIGHT ALIGN=CENTER BORDER Establece el tamao del borde de la imagen BORDER=1
Desarrollo de pginas web con PHP y MySql 13
TABLE, TR, TD Los siguientes tags se utilizan para crear tablas dentro de una pgina HTML, y se utilizan todos en conjunto, el TAG TABLE indica el inicio y fin de la tabla, el TAG TR indica que se est abriendo un rengln dentro de la tabla y por ltimo el TAG TD nos indica las columnas de ese rengln que se acaba de abrir. El TAG TD siempre se encuentra dentro del TAG TR y a su vez el TAG TR siempre se encuentra dentro del TAG TABLE Ejemplo: <table> <tr> <td>renglon 1, columna 1</td> <td>renglon 1, columna 2</td> <td>renglon 1, columna 3</td> </tr> <tr> <td>renglon 2, columna 1</td> <td>renglon 2, columna 2</td> <td>renglon 2, columna 3</td> </tr> </table>
Se pueden utilizar diferentes atributos tales como Atributo Descripcin Ejemplo BORDER Se utiliza para indicar el grosor del borde de la tabla BORDER=1 CELLSPACING Se utiliza para indicar el espacio que debe existir entre las celdas CELLSPACING=2 CELLPADING Se utiliza para control el ancho interno de los bordes de la tabla CELLPADING=2 WIDTH Marca el ancho que la tabla debe de tener WIDTH=200 ancho en pixeles WIDTH=50% ancho en porcentaje de la pgina
DIV El tag HTML div permite a los autores asignar ciertos atributos a bloques de contenido. Es principalmente utilizado en conjunto con hojas de estilo para dar atributos visuales a porciones de contenido en un documento. Tambin, el atributo "id" provee una forma de cambiar dinmicamente estos atributos con o sin la interaccin del usuario. Los navegadores usualmente insertan un quiebre de lnea antes y despus de un bloque div Ejemplo: <div> <p>Esto es un prrafo dentro de un DIV</p> </div>
Desarrollo de pginas web con PHP y MySql 14
El TAG DIV puede estar acompaado de una clase (se observarn las clases en el siguiente tema) o del atributo STYLE (el cual puede ser utilizado en diferentes TAGS y enseguida se explica) STYLE Este atributo puede ser utilizado en prcticamente todos los TAG del cdigo HTML, se utiliza para manejar la parte visible de un TAG, con este atributo se pueden definir, colores, tamaos, y diferentes caractersticas que pueden dar un realce a cada elemento. Ejemplo: <p style=text-align:center; color: red; Font-size: 18px; font-weight: bold;>Este es un prrafo con Style<p/> El resultado sera Este es un prrafo con Style Todas estas caractersticas que hemos declarado dentro del TAG P y con el atributo STYLE pueden declararse dentro de un archivo independiente al .HTML y al cual se puede hacer referencia para que no se tenga que reescribir los mismos atributos (en caso de que as se requiera) para todos los TAGS P de la siguiente manera.
Hojas de Estilo, CSS
Las hojas de estilo representan un avance importante para los diseadores de pginas web, al darles un mayor rango de posibilidades para mejorar la apariencia de sus pginas. Las hojas de estilo resuelven estos problemas al mismo tiempo que reemplazan al limitado rango de mecanismos de presentacin del HTML. Con las hojas de estilo es ms fcil especificar la cantidad de espacio entre lneas, el sangrado de las lneas, los colores a utilizar para el texto y el fondo, el tamao y estilo de las fuentes, y otros muchos detalles. Dentro de estas hojas de estilo (CSS, Cascading Style Sheets) se pueden declarar, clases, elementos e identificadores. Las clases se declaran con un punto (.) seguidas del nombre que se le asigna, generalmente algo descriptivo del mismo, por ejemplo, si requerimos declarar una clase para los prrafos, conveniente sera que se declarara de la siguiente manera. .p { color: red; font-size: 18px; font-weight: bold; text-align: center; }
Desarrollo de pginas web con PHP y MySql 15
Y se debe aplicar en el cdigo HTML de la siguiente forma <p class=p>Este prrafo tiene estilo</p> Y obtendramos el mismo resultado Este es un prrafo con Style De tal forma que cada que declaremos un TAG P y a su vez le agregamos la clase p ste prrafo obtendr las caractersticas que estn declaradas en la hoja de estilos. Si y solo s, declaramos la clase p en el prrafo en tanto no lo tengamos declarado dentro del TAG no tomar las caractersticas indicadas.
Los elements de una hoja de estilos, se declaran simplemente con la declaracin del TAG que queremos asignarle estilo, es decir, si tuviramos la necesidad de que todos los TAGS P tengan el mismo formato declararamos el element dentro de la hoja de estilos CSS. Ejemplo: p { color: red; font-size: 18px; font-weight: bold; text-align: center; } De tal forma que cada vez que nosotros utilicemos el TAG P en el cdigo HTML, tomar las caractersticas mencionadas en el archivo CSS sin necesidad de declarar algn clase dentro del TAG <p>Este prrafo tiene estilo</p> Y obtendramos el mismo resultado Este es un prrafo con Style Ahora bien, si necesitamos contar con identificadores o ids, es decir, partes especialmente sealadas dentro del cdigo HTML mediante un ID como atributo dentro del TAG ser necesario que en el archivo CSS declaremos esa seccin de la siguiente forma, escribiendo primeramente el signo # seguido del nombre del ID. Ejemplo: #id_prueba { color: red; font-size: 18px; font-weight: bold; text-align: center; } Desarrollo de pginas web con PHP y MySql 16
En este caso, a todos los tags que cuenten con el atributo ID=id_prueba se le aplicar las caractersticas declaradas en la hoja de estilos. <div id=id_prueba>prueba de IDs</div> Y obtendramos el siguiente resultado Prueba de IDs
Por ltimo debemos destacar como es que se hace la referencia de la pgina .CSS en nuestro cdigo. Esto se hace dentro de las etiquetas <HEAD> que se indican en la parte superior del archivo con el TAG LINK y los atributos HREF, REL y TYPE, de la siguiente manera Ejemplo: <LINK HREF=style.css REL=stylesheet TYPE=text/css> Atributo Descripcin Ejemplo HREF Se utiliza para identificar la ruta del archivo donde se ubica el archivo .css HREF=style.css REL Se usa para definir la relacin entre el archivo enlazado y el documento HTML. REL=StyleSheet especifica un estilo persistente o preferido REL="Alternate StyleSheet" define un estilo alterno. Puede utilizarse con cookies, fcilmente usable con mozilla, pero no aplicable para IE. TYPE El atributo requerido TYPE se usa para especificar un tipo de medio, as como su funcin con el elemento LINK TYPE=text/css
Desarrollo de pginas web con PHP y MySql 17
JavaScript en HTML
Una de las caractersticas importantes que debemos sealar en este manual, es precisamente la forma en que podemos agregar cdigo JAVASCRIPT JavaScript, es una de las mltiples maneras que han surgido para extender las capacidades del lenguaje HTML. Al ser la ms sencilla, es por el momento la ms extendida. Antes que nada conviene aclarar un par de cosas: 1. JavaScript no es un lenguaje de programacin propiamente dicho. Es un lenguaje script u orientado a documento, como pueden ser los lenguajes de macros que tienen muchos procesadores de texto. Nunca podrs hacer un programa con JavaScript, tan slo podrs mejorar tu pgina Web con algunas cosas sencillas (revisin de formularios, efectos en la barra de estado, etc...). 2. JavaScript y Java son dos cosas distintas. Principalmente porque Java s que es un lenguaje de programacin completo. Lo nico que comparten es la misma sintaxis.
El cdigo que se escriba para funciones JavaScript, puede de igual forma que las hojas de estilo, declararse en un archivo separado del mismo .HTML, y a su vez hacer referencia de la siguiente manera.
A diferencia de los archivos .css, stos (los archivos .js) pueden declararse en cualquier parte del documento .html y pueden declararse tantos como se necesiten.
Con esto concluimos la parte introductoria al cdigo HTML, aqu se lograron observar los elementos ms comunes utilizados para el desarrollo de una pgina web, sin duda, que lo que se menciona en esta seccin del manual, es solamente una parte de la cantidad inmensa de aplicaciones que se pueden hacer con el cdigo HTML. Si bien es cierto que solamente se mencionan en una mnima parte, se mencionaron las caractersticas ms importantes y estrictamente necesarias para crear un proyecto web en base a la extensin .html puro, las necesidades que puedan surgirte como programador pueden ser demasiadas extensas que no podran cubrirse con un solo curso o manual de HTML, sin duda que tu imaginacin es el lmite para crear aplicaciones tan complejas como innovadores y vistosas, existen diferentes medio para crear una pgina web, desde software de programacin como Flash, Silverlight, o diferentes lenguajes de programacin como PHP, ASPX, JSP, Etc. Pero sin duda, de todos los mencionados y no mencionados, el principal ingrediente es el cdigo que puedas desarrollar con HTML. Desarrollo de pginas web con PHP y MySql 18
Instalacin de herramientas adicionales para apoyo de consultas MySql y desarrollo Php
Como uno de los objetivos del curso, adems del HTML, es la utilizacin del lenguaje de programacin PHP y MySql como gestor de Base de Datos, pues bien, antes de iniciar con la explicacin de lo restante en este curso pondremos a punto nuestro equipo para poder ejecutar consultas y adems instalaremos lo necesario para que podamos empezar a programar con PHP.
Instalacin de MySQL
El archivo instalador se puede descargar desde el siguiente link http://dev.mysql.com/downloads/mysql/
Pgina de bienvenida al asistente
Desarrollo de pginas web con PHP y MySql 19
Aceptamos trminos de licencia
Por default seleccionamos una tpica instalacin.
Desarrollo de pginas web con PHP y MySql 20
Pantalla inicial de instalacin
Pantalla de instalacin
Desarrollo de pginas web con PHP y MySql 21
Iniciamos de forma predeterminada nuestro asistente para la configuracin de MySql
Desarrollo de pginas web con PHP y MySql 22
Desarrollo de pginas web con PHP y MySql 23
Desarrollo de pginas web con PHP y MySql 24
Desarrollo de pginas web con PHP y MySql 25
Desarrollo de pginas web con PHP y MySql 26
Desarrollo de pginas web con PHP y MySql 27
Desarrollo de pginas web con PHP y MySql 28
Instalacin de WorkBench 5.2 CE Adems instalaremos la herramienta necesaria para contar con una interface de acceso a MySql, propiamente es una herramienta desarrollada por los colaboradores de MySql y de tipo open source desde luego que se puede descargar en la siguiente ruta. http://dev.mysql.com/downloads/workbench/5.2.html
Pantalla de bienvenida al asistente
Desarrollo de pginas web con PHP y MySql 29
Desarrollo de pginas web con PHP y MySql 30
Desarrollo de pginas web con PHP y MySql 31
Desarrollo de pginas web con PHP y MySql 32
Instalacin de Apache
La instalacin puede ejecutarse de 2 formas distintas, por medio de una lnea de comandos en el DOS de nuestro Windows de la siguiente forma C:\Program Files\Apache Software Foundation\Apache2.2 Comando httpd.exe -k install
O bien, utilizando el MSI de forma grfica
Desarrollo de pginas web con PHP y MySql 33
Desarrollo de pginas web con PHP y MySql 34
Desarrollo de pginas web con PHP y MySql 35
Desarrollo de pginas web con PHP y MySql 36
Desarrollo de pginas web con PHP y MySql 37
Instalacin de PHP
Desarrollo de pginas web con PHP y MySql 38
Desarrollo de pginas web con PHP y MySql 39
Desarrollo de pginas web con PHP y MySql 40
Desarrollo de pginas web con PHP y MySql 41
Configurar PHP en Apache En el transcurso de esta configuracin ocuparemos una librera denominada php5apache2_2.dll la cual, curiosamente en el instalador de PHP no se agrega, por tal motivo sera necesario obtenerla de la siguiente ruta http://windows.php.net/download/#php-5.3-nts-VC9-x86 Obteniendo el formato ZIP adems del Installer.
El primer paso para la configuracin es acceder a esta ruta C:\Program Files\Apache Software Foundation\Apache2.2\conf Posteriormente deberemos editar nuestro archivo de configuracin de Apache, llamado "httpd.conf" que est en el directorio "conf" de nuestra instalacin de Apache. Tambin podemos encontrar un acceso directo para editar este archivo accediendo a Inicio - Programas - Apache HTTP Server - Configure Apache HTTP Server - Edit httpd.conf configuration file. Debemos aadir las siguientes lneas de configuracin del mdulo de Apache. ScriptAlias /php/ "c:/php/" AddType application/x-httpd-php .php Action application/x-httpd-php "/php/php.exe" El lugar adecuado para aadir esas lneas es en el bloque de carga de mdulos, que podemos encontrar si buscamos por el texto "LoadModule". Podemos aadir las lneas de carga del mdulo PHP despus de la carga de los otros mdulos que vienen ya configurados en archivo httpd.conf de Apache.
Instalacin de NETBEANS
Netbeans es un IDE (Integrated Developer Environment) que se utiliza para programar con diferentes lenguajes informticos, entre tantos JAVA y desde luego PHP en su reciente versin 5.0, por tal motivo aprovecharemos las bondades de este IDE y lo utilizaremos en esta ocasin para las practicas que realizaremos en este curso, su proceso de instalacin es muy simple, a continuacin se enumeran las pantallas para un visual apoyo. Una vez que damos doble click sobre el ejecutable de instalacin, a las pocas ventanas que se abren y cierran solas que sirven para preparar la instalacin esta es nuestra pantalla de bienvenida. Desarrollo de pginas web con PHP y MySql 42
Desde luego y como en todos los instaladores, debemos aceptar la licencia.
Desarrollo de pginas web con PHP y MySql 43
Dejamos que se instale en las carpetas predefinidas
Nos realiza algunos comentarios con respecto al tamao de instalacin.
Desarrollo de pginas web con PHP y MySql 44
Damos click en Install, y comienza el proceso de instalacin.
Finalizamos registrando y si lo deseas contribuyendo enviando informacin annima del uso de NETBEANS
Desarrollo de pginas web con PHP y MySql 45
MySql
Ya hemos instalado previamente la versin workbench CE 5.2 para trabajar con nuestra base de datos, demasiado til para trabajar de manera visual directamente con la base de datos, esta es la visin que debemos tener en nuestra pantalla al abrir WB.
Ahora bien para tener acceso a nuestra instancia local, debemos dar click sobre Local Instance MySql
Desarrollo de pginas web con PHP y MySql 46
Y de este modo nos abrir la ventana de acceso, la cual nos solicita la contrasea de acceso que dimos de alta cuando configuramos nuestra instancia al momento de la instalacin de la MySql
Una vez dentro (Espero que puedan recordar su contrasea) esta ser nuestra visin
Pues bien, esta pantalla podra ser el pan nuestro de cada da, con esta herramienta tendremos la capacidad de crear, actualizar, eliminar, ejecutar consultas sobre nuestra base de datos, cabe mencionar algo que normalmente no se expresa en ninguno de los cursos (al menos en ninguno de los cuales he tenido la oportunidad de asistir) esta pantalla tambin podr ser la que nos haga sufrir cuando no tengamos el resultado esperado en alguna consulta o transaccin que realicemos con ella. Desarrollo de pginas web con PHP y MySql 47
Pero descuiden que al final de todo las recompensas son valiosas, la experiencia, algo que no se puede comprar, que no se vende en ninguna parte, precisamente es lo que hacemos en este curso, cualquiera puede acceder a Google e investigar alguna sintaxis, pero la experiencia que tomaremos aqu nos servir para resolver situaciones en el da a da que se nos vendr a partir de este momento que nos decidimos iniciar a programar con MySql.
Creacin de una Base de Datos Para crear una base de datos nos apoyaremos con la herramienta WB, el primer paso es el siguiente: Utilizamos el botn
Y nos abre la siguiente venta, en la cual debemos indicar el nombre de nuestro esquema
Una vez que demos click en aplicar, nos arrojara una venta de confirmacin, la que adems nos muestra el script que debiramos utilizar si es que deseamos crear nuestro esquema de forma manual. Desarrollo de pginas web con PHP y MySql 48
Al final nuestra pantalla de xito en la ejecucin del script
Desarrollo de pginas web con PHP y MySql 49
Al final en nuestro Object Browser veremos representado nuestro esquema
Con el nombre que elegimos, desde luego vaco, sin ninguna tabla, vista o rutina (Stored Procedure). Con esto ya estamos preparados para iniciar a programar con nuestra Base de Datos, a partir de este momento, mencionaremos algunos de los apoyos que el WB nos ofrece para crear tablas, vistas o rutinas, pero trataremos de crearlas de forma manual, esto con el fin de conocer a mayor profundidad como es que trabaja el MySql y cmo podramos resolver algunos de los escenarios que comnmente se presentan en el mundo laboral de un programador.
ndices, Llaves Primarias y Llaves Forneas Es comn que los programadores omitamos ciertos requisitos indispensables para la creacin correcta de una base de datos, es comn adems que no pensemos o no tomemos en cuenta cuantos van a ser los usuarios de nuestra base de datos, por tal motivo no optimizamos la creacin de nuestras tablas y sus relaciones, por tal motivo se presenta el presente capitulo. Para empezar iniciaremos como siempre, con un poco de teora. Qu es un ndice y para qu sirve? Un ndice es una estructura de datos que permite acceder a diferentes filas de una misma tabla a travs de un campo (o campos clave). Un ndice permite un acceso mucho ms rpido a los datos. En otras palabras, un ndice en nuestras tablas nos permitir que las consultas que hagamos sobre las mismas, sean ms agiles, obviamente lo veremos reflejado en la ltima capa de nuestra aplicacin, es decir la capa de interface, misma interface que nuestros usuarios del sistema utilizan para tomar una decisin que lento est el sistema o en caso contrario cuando el sistema funciona bien (vaco) no es que no lo noten, pero el hecho real es que las cosas estn hechas para funcionar tal y cual deberan, una aplicacin de software debiera funcionar en ptimo estado siempre. Esto es lo que hace a un buen programador, un programador prev lo que los usuarios pueden hacer, tanto como cometer errores, provocar fallas, acceder a lugares no permitidos o simplemente expresar un comentario con respecto al sistema. Desarrollo de pginas web con PHP y MySql 50
Qu es una llave primaria y para qu sirve? Con la ayuda de nuestro gran aliado Wikipedia, logramos obtener una definicin para una llave primaria En el diseo de bases de datos relacionales, se llama clave primaria a un campo o a una combinacin de campos que identifica de forma nica a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria. Creo que la definicin por si sola se explica, pero vamos a hacerla un poco ms clara, si es que esto es posible. La llave primaria, es el identificador nico, que hace diferente a cada registro en nuestra tabla, se puede conformar mediante 1 o varios campos, tantos como sean necesarios y esto hace posible que al momento de insertar registros, no perdamos la integridad de nuestros datos, si quisiramos agregar por ejemplo en nuestra tabla de usuarios, 2 usuarios con el mismo nombre y apellido Paterno el resultado al momento de insertar el registro sera un error que se reflejara en nuestra interface, y obtendramos a la vez un comentario clsico de nuestros usuarios esto no sirve esto no funciona, cabe mencionar que no tengo nada en contra de los usuarios de mis sistemas, es solo que he aprendido a conocer sus necesidades y sobre todo sus comentarios cuando algo no est bien. Por tal motivo (hablando del registro que deseamos agregar en nuestra tabla usuarios) sera necesario complementarlo con un campo adicional que los pueda hacer diferentes, en nuestro caso agregaremos una columna usuarioId que ser auto incrementable y de valor nico.
Qu es una llave fornea y para qu sirve? Una clave fornea (o Foreign Key FK) es una limitacin referencial entre dos tablas. La clave fornea identifica una columna o grupo de columnas en una tabla (tabla hija o referendo) que se refiere a una columna o grupo de columnas en otra tabla (tabla maestra o referenciada). Las columnas en la tabla referendo deben ser la clave primaria u otra clave candidata en la tabla referenciada. Dicho de otra forma, una llave fornea nos da la oportunidad de que nuestros datos tengan integridad, es decir, que correspondan y no tenga datos equivocados o agregados por error, la informacin de nuestra tabla primaria en determinados campos, debern existir en una tabla secundaria la cual contiene la informacin que estamos tratando de referenciar, en caso que esta tabla secundaria no tenga los datos que necesitamos agregar a nuestra tabla primaria no podremos agregar los datos solicitados. Para explicar mejor como podemos crear un ndice, una llave primaria y fornea, es indispensable crear una tabla, mediante la ayuda de nuestro WB lo podremos lograr de la siguiente forma.
Desarrollo de pginas web con PHP y MySql 51
Si hacemos click sobre
Nos aparecer el asistente de la siguiente forma
El nombre que elegimos para esta tabla es usuarios obviamente hacemos el nombre descriptivo y en este caso estamos hablando de una tabla que conservar los nombres de los usuarios que tendrn acceso a nuestro sistema. Una vez establecido el nombre establecemos las columnas de nuestra tabla Para lo cual debemos acceder a la pestaa de Columns
Desarrollo de pginas web con PHP y MySql 52
Para nuestro ejemplo lo definimos de la siguiente forma
En la siguiente tabla se indica el significado de cada una de las columnas que se podran especificar en caso de requerirse Columna Descripcin Column Name Se establece el nombre del campo DataType Se establece el tipo de dato del campo PK Se indica si el campo es una Llave Primaria (Primary Key) NN Se indica si el campo acepta valores nulos (Not Null) UQ Se indica si el campo es un ndice nico, es decir, si el valor debiera ser irrepetible (Unique Index) BIN Se utiliza para indicar si el valor es un campo binario (Is binary column) UN Se utiliza para indicar que el campo no tiene un tipo de dato en particular (Unsigned data type) ZF En caso que es establezca un valor numrico se especifica si el campo aceptar el 0 como valor vlido (Fill up values for that column with 0s if it is numeric) AI Se utiliza para indicar si el campo es auto incrementable, es decir, si ocupamos que la siguiente vez que insertemos un registro, este campo en automtico se asigne el siguiente valor disponible de forma incremental (Auto increment) Default Se utiliza para indicar un valor predeterminado en dado caso que al momento de insertar un registro, no se contemple este campo en el script INSERT
Desarrollo de pginas web con PHP y MySql 53
En nuestra tabla debemos establecer los ndices que como ya lo hemos mencionado, nos dar la oportunidad de que la tabla sea fcilmente accesible, para tal objetivo, nos trasladamos a la pestaa de Indexes
Para nuestros ejemplo, nicamente establecemos el campo idUsuario como ndice, pero en general, se pueden establecer tantos ndices como se deseen y se considere sean necesarios para ordenar nuestra tabla. Adems vamos a establecer una llave fornea de la siguiente manera
Desarrollo de pginas web con PHP y MySql 54
Previamente como, hemos creado la tabla Roles, en la cual agregamos los siguientes campos RolId, int, not null, autoincrement, Primary Key Rol, varchar(45), not null Descripcin, varchar(45) Como primer paso indicamos el nombre que habremos de especificar a nuestra llave, una vez hecho lo anterior, debemos indicar cul es el campo de nuestra tabla que servir de referencia para nuestra tabla secundaria, la cual podemos seleccionar en la columna de Referenced Table y por ltimo el campo al que se hace referencia. De momento estos sern los parmetros que indicaremos en nuestra tabla, un poco ms adelante en este mismo tutorial observaremos las dems caractersticas, y en este caso, procederemos a aplicar nuestros cambios en la tabla.
Como podemos observar, el asistente nos arroja al final el script necesario que se ejecutar para crear esta tabla con los estndares necesarios para que no se comentan errores al momento de su ejecucin. Y como resultado final despus de la ejecucin obtenemos la pantalla de confirmacin y de xito de ejecucin del script Desarrollo de pginas web con PHP y MySql 55
Una vez concluido hemos creado nuestra primera tabla en MySql
Y desde luego, refrescamos nuestro object browser para observar los cambios, hasta aqu concluimos con el proceso de la creacin de una tabla y logramos observar el objetivo final de este tema que es la creacin de un ndice para nuestra tabla, como lo observamos en el script que creamos con el apoyo del asistente para la creacin de tablas del WB.
Desarrollo de pginas web con PHP y MySql 56
Clusulas SELECT, FROM, WHERE Ya hemos creado nuestro esquema de trabajo, creamos 2 tablas y las suficientes relaciones necesarias entre ellas para una integridad en la informacin, adems claro est, de los ndices correspondientes necesarios para agilizar el trabajo en nuestras tablas. Ahora vamos a comenzar a trabajar en la obtencin de la informacin. En esta parte vamos a mencionar las CLAUSULAS que utilizaremos y uso de forma rpida puesto que son prcticamente descriptivas, y en el aula lo haremos de forma prctica y explicaremos a detalle su uso. Primero que nada para poder hacer consultar en nuestras tablas es necesario agregar datos, para consultarlos posteriormente. Insertar registros Para agregar un registro en la tabla utilizamos la clusula INSERT INTO seguido del nombre de la tabla que deseamos afectar adems es necesario el uso de la clusula VALUES. Ejemplo: INSERT INTO ROLES (ROL, DESCRIPCION) VALUES ('ADMINISTRADOR','ADMINISTRADOR GENERAL DEL SISTEMA')
Es necesario que se indiquen los campos que se van a afectar, adems de los respectivos valores que se agregarn, es importante mencionar que los campos que sean necesarios es decir que en la creacin de la tabla se hayan declarado como NOT NULL, debern de estar presentes en este script, puesto que es indispensable que cada vez que se agregue un registro, este campo contenga algn valor.
Eliminar registros Cuando tengamos la necesidad de borrar fsicamente algunos registros de nuestra tabla se deber de utilizar la clusula DELETE. Ejemplo: DELETE FROM ROLES WHERE ROL = 'EMPLEADO'
Importante es mencionar que esta es una de las clusulas que ms dolores de cabeza nos puede crear, debido a que es de vital importancia que al momento de utilizarla nos podamos cerciorar de que la informacin que se eliminar sea efectivamente la que deseamos, es comn que los datos no se validen antes de eliminarse y esto puede ocasionar perdida de informacin importante.
Desarrollo de pginas web con PHP y MySql 57
Actualizar registros Constantemente tenemos la necesidad de corregir informacin de algunos campos en nuestras tablas, ya sea un estatus, fecha o campos en especial por valores nuevos o de uso diferente, por lo tanto para este objetivo podremos utilizar la clusula UPDATE, SET Ejemplo: UPDATE ROLES SET ROL = 'EMPLEADO', DESCRIPCION = 'USUARIO FINAL DEL SISTEMA' WHERE IDROLES = 2 De igual forma esta clusula nos puede afectar registros no deseados, por tal motivo es importante validar que la informacin por actualizar es la que necesariamente deseamos actualizar.
Consultar registros La clusula mayormente utilizada, la cual es el ncleo principal de cualquier base de datos, obviamente es la clusula SELECT, puesto que con ella podemos obtener la informacin. Existen diferentes formas de uso, veamos las principales SELECT * FROM USUARIOS Con este script, obtendremos todos los campos y todos los registros de una tabla SELECT nombre, apellidoPaterno FROM usuarios Con este script obtendremos los campos Nombre y Apellido Paterno de la tabla usuarios Ahora bien, si deseamos condicionar la informacin que necesitamos utilizamos la clusula WHERE, AND, OR, GROUP BY, HAVING Ejemplos: SELECT nombre, apellidoPaterno FROM usuarios WHERE nombre = HUGO AND apellidoPaterno = DIMAS Con el script anterior condicionamos la consulta a que solamente obtenga los campos nombre y apellido paterno siempre y cuando el nombre sea igual a HUGO y el apellido paterno sea DIMAS, los dems registros que no cumplan con exactamente estas 2 condiciones sern ignorados y no se mostrarn.
Desarrollo de pginas web con PHP y MySql 58
SELECT nombre, apellidoPaterno FROM usuarios WHERE nombre = HUGO AND apellidoPaterno = DIMAS OR apellidoPaterno = GARCIA
Misma condicin que el script anterior solamente que aqu hacemos un poco ms flexible la bsqueda y buscamos los apellidos DIMAS o GARCIA. Entonces al momento de hacer la consulta el motor de bsqueda ignorar los que no correspondan a esta condicin.
SELECT apellidoPaterno FROM usuarios GROUP BY apellidoPaterno
En caso que tengamos la necesidad de reducir ms nuestra informacin podemos hacer uso de las clusulas WHERE, AND, OR, etc. Adems podemos hacer uso de la Clusula HAVING
SELECT APELLIDOPATERNO, COUNT(1) FROM USUARIOS GROUP BY APELLIDOPATERNO HAVING COUNT(1) >= 2
En el ejemplo anterior, hacemos primeramente una agrupacin de los apellidos, en una columna por separado contamos la cantidad de registros con los que contamos en cada grupo, y adems, usamos la clusula HAVING para indicar que adems del grupo, solo deseo contar con los grupos que tengan 2 o ms registros.
Join de Tablas Para realizar consultas de 2 o ms tablas (algo de lo ms comn en nuestras consultas) es necesario que establezcamos las condiciones necesarias para la relacin de ambas tablas, las cuales, normalmente son las llaves primarias y forneas de relacin entre ambas tablas (aunque no siempre sea de esta forma, en clase observaremos ambos ejemplos), es necesario conocer adems un concepto llamado ALIAS, el cual nos permite darle un sobre nombre a nuestra tabla la cual reduce la cantidad de lneas de nuestro script, observaremos ambos ejemplos. Ejemplo sin Alias: SELECT USUARIOS.NOMBRE, USUARIOS.APELLIDOPATERNO, ROLES.ROL FROM USUARIOS, ROLES WHERE USUARIOS.ROLID = ROLES.IDROLES
En el ejemplo anterior notamos que para especificar el campo de alguna tabla en particular es necesario que sea precedida el nombre de la tabla a la cual pertenece, separando el dato de la tabla y el nombre del campo por un punto (.)
Desarrollo de pginas web con PHP y MySql 59
Ejemplo con Alias: SELECT u.NOMBRE, u.APELLIDOPATERNO, r.ROL FROM USUARIOS as u, ROLES as r WHERE u.ROLID = r.IDROLES
Obtenemos el mismo resultado que la consulta anterior, pero con la diferencia de que hemos utilizado menos cdigo, al simplificar el nombre de la tabla por una sola letra, de momento en un script tan corto posiblemente no veamos una diferencia clara, sin embargo, al momento de generar consultar amplias el script se podra ver considerablemente reducido.
De esta forma podremos realizar consultas entre dos o ms tablas que puedan tener relacin mediante llaves forneas, lo que no necesariamente es una regla, puesto que an y cuando no existan llaves forneas entre s, se puede consultar por el contenido de los campos
Una forma alternativa de consultar entre dos o ms tablas se puede crear de la siguiente manera
Ejemplo:
SELECT u.NOMBRE, u.APELLIDOPATERNO, r.ROL FROM USUARIOS as u INNER JOIN ROLES as r ON (u.rolid = r.idroles) WHERE u.ROLID = r.IDROLES Adems de que se puede cambiar la Clusula INNER por LEFT o RIGHT, lo que permitira traer los datos adicionales de una de las dos tablas que no coincidan con la relacin. Creacin de Stored Procedures Nuestro amigo Wikipedia, sigue siendo nuestro mejor aliado Un procedimiento almacenado (stored procedure en ingls) es un programa (o procedimiento) el cual es almacenado fsicamente en una base de datos. Su implementacin vara de un manejador de bases de datos a otro. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una peticin de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y slo necesita enviar sus resultados de regreso al usuario, deshacindose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes. Iniciaremos comentando que un procedimiento almacenado es bsicamente un cdigo que tenemos bajo un nombre al cual le podemos enviar parmetros de diferentes tipos. Comnmente utilizado para no tener que reescribir cdigo y sobre todo un punto que comnmente no tomamos en cuenta, el cual es la seguridad y rapidez, puesto que el procedimiento almacenado acepta los parmetros como parmetros puros y no como cdigo, adems de que por estar pre compilados, las consultas son en promedio 30% ms rpidas que una consulta directa.
Desarrollo de pginas web con PHP y MySql 60
Stored Procedure sin parmetros Tambin con nuestro buen amigo WB vamos a crear un procedimiento almacenado, el cual tendr la capacidad de regresar todos los usuarios en un nuestra base de datos junto con el rol que tiene asignado
Al hacer click sobre el cono anterior obtendremos el asistente para crear nuestro stored procedure o rutina como se le conoce en MySql.
Con los comandos bsicos para su creacin, iniciaremos por cambiarle el nombre, posteriormente agregaremos el cdigo que necesitamos Desarrollo de pginas web con PHP y MySql 61
Al aplicar los cambios, el WB nos arrojar el cdigo necesario para crear el procedimiento almacenado el cual podremos ejecutar directamente en nuestra ventana de consulta.
Desarrollo de pginas web con PHP y MySql 62
O bien, podemos dejar que el asistente haga el trabajo por nosotros al dar click en APPLY. De esta forma ya contamos con nuestro primer procedimiento almacenado el cual podemos llamar desde nuestra ventana de consultas con la lnea CALL USUARIOSALL(); Y nos devolver como resultado todos los usuarios que estn registrados en esta tabla con su nombre, apellido paterno, apellido materno y el rol que ejerce sobre el sistema.
Stored Procedure con parmetros Bsicamente utilizamos los mismos pasos que un SP sin parmetros, solo agregamos lo siguiente.
De igual forma aplicamos los cambios y ejecutamos con la siguiente lnea en nuestra ventana de comandos CALL USUARIOSBYNAME('HUGO'); Y el resultado ser, todos los usuarios que en el campo NOMBRE tengan valor HUGO.
Difcilmente en este curso podremos abarcar todos los temas o posibles escenarios que se puedan presentar, la labor de investigacin ser un factor importante, la forma en que paso a paso vayas obteniendo experiencia te dar el conocimiento necesario para mejorar tus tcnicas de programacin, o Desarrollo de pginas web con PHP y MySql 63
bien, te invito a que sea un GOD (Google Oriented Developer), en estos tiempos la mejor ayuda la puedes obtener adems de este tutorial de otro buen amigo Google.com Php PHP es un lenguaje de programacin interpretado, diseado originalmente para la creacin de pginas web dinmicas. Es usado principalmente en interpretacin del lado del servidor (server-side scripting). PHP es un acrnimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado originalmente por Rasmus Lerdorf en 1994; sin embargo la implementacin principal de PHP es producida ahora por The PHP Group y sirve como el estndar de facto para PHP al no haber una especificacin formal. Publicado bajo la PHP License, la Free Software Foundation considera esta licencia como software libre. Puede ser desplegado en la mayora de los servidores web y en casi todos los sistemas operativos y plataformas sin costo alguno. El lenguaje PHP se encuentra instalado en ms de 20 millones de sitios web y en un milln de servidores, el nmero de sitios en PHP ha compartido algo de su preponderante sitio con otros nuevos lenguajes no tan poderosos desde agosto de 2005. Este mismo sitio web de Wikipedia est desarrollado en PHP. Es tambin el mdulo Apache ms popular entre las computadoras que utilizan Apache como servidor web. La versin ms reciente de PHP es la 5.3.5, del 6 de enero de 2011.
Versin Fecha Cambios ms importantes PHP 1.0 8 de junio de 1995 Oficialmente llamado "Herramientas personales de trabajo (PHP Tools)". Es el primer uso del nombre "PHP". PHP Version 2 (PHP/FI) 16 de abril de 1996 Considerado por el creador como la "ms rpida y simple herramienta" para la creacin de pginas webs dinmicas . PHP 3.0 6 de junio de 1998 Desarrollo movido de una persona a muchos desarrolladores. Zeev Suraski y Andi Gutmans reescriben la base para esta versin. PHP 4.0 22 de mayo de 2000 Se aade un sistema ms avanzado de anlisis de etiquetas en dos fases anlisis/ejecucin llamado el motor Zend. PHP 4.1 10 de diciembre de 2001 Introducidas las variables superglobals ($_GET, $_SESSION, etc.). PHP 4.2 22 de abril de 2002 Se deshabilitan register_globals por defecto. Desarrollo de pginas web con PHP y MySql 64
PHP 4.3 27 de diciembre de 2002 Introducido la CLI, en adicin a la CGI. PHP 4.4 11 de julio de 2005 PHP 5.0 13 de julio de 2004 Motor Zend II con un nuevo modelo de objetos. PHP 5.1 25 de noviembre de 2005 PHP 5.2 2 de noviembre de 2006 Habilitado el filtro de extensiones por defecto. PHP 5.2.4 30 de agosto de 2007 PHP 5.2.5 8 de noviembre de 2007 Versin centrada en mejorar la estabilidad (+60 errores solucionados). PHP 5.2.8 8 de diciembre de 2008
PHP 5.2.9 26 de febrero de 2009 Diversas mejoras en el mbito de la seguridad (+50 errores solucionados). PHP 5.2.12 17 de diciembre de 2009 Diversas mejoras en el mbito de la seguridad (+50 errores solucionados).
PHP 5.3 30 de junio de 2009 namespaces, late static binding, closures, optional garbage collection for cyclic references, nuevas extensiones (+140 errores solucionados). PHP 5.3.1 19 de noviembre de 2009 Diversas mejoras en el mbito de la seguridad (36 errores solucionados).
PHP 5.3.2 4 de marzo del 2010 Diversas mejoras en el mbito de la seguridad (99 errores solucionados). PHP 5.3.3 22 de julio del 2010 Diversas mejoras en el mbito de la seguridad y estabilidad. (ms de 100 errores solucionados).
PHP 5.3.4 10 de diciembre del 2010 Diversas mejoras en el mbito de la seguridad y Desarrollo de pginas web con PHP y MySql 65
estabilidad. (105 errores solucionados). PHP 6 S/D Es necesario mencionar lo siguiente Para indicar el contenido de las instrucciones PHP iniciaremos y terminaremos de la siguiente forma
Declaracin de variables y constantes Una de las caractersticas ms importantes de un desarrollo en cualquier lenguaje de programacin, es sin duda, las variables, elementos dentro de nuestro sistema que puedan cambiar en cada momento de nuestro sistema. En PHP podremos declarar variables de la siguiente forma
Al final de la declaracin imprimiremos en pantalla el resultado con el comando ECHO Constantes Para la declaracin de constantes utilizaremos el comando DEFINE y entre parntesis con dos parmetros el primero de ellos ser el nombre de la constante y el segundo parmetro ser su valor. Cabe recalcar que tanto las variables como las constantes no pueden ser nombradas inicialmente con un signo o nmero, como se indica en el ejemplo. Desarrollo de pginas web con PHP y MySql 66
Operadores La precedencia de un operador indica qu tan "estrechamente" se unen dos expresiones juntas. Por ejemplo, en la expresin 1 + 5 * 3 , la respuesta es 16 y no 18 porque el operador de multiplicacin ("*") tiene una precedencia mayor que el operador de adicin ("+"). Los parntesis pueden ser usados para forzar la precedencia, si es necesario. Por ejemplo: (1 + 5) * 3 se evala como 18. Si la precedencia de operadores es la misma, de izquierda a derecha se utiliza la asociatividad. La siguiente tabla lista la precedencia de los operadores con los operadores de mayor precedencia listados en la parte superior de la tabla. Los operadores en la misma lnea tienen la misma precedencia, en cuyo caso su asociatividad decide cual el orden para evaluarlos. Precedencia de operadores Asociatividad Operadores Informacin adicional no asociativo clone new clone and new izquierda [ array() no asociativo ++ -- incremento/decremento derecha ~ - (int) (float) (string) (array) (object) (bool) @ tipos no asociativo instanceof tipos derecha ! lgico izquierda * / % aritmtica izquierda + - . aritmtica y string izquierda << >> bit a bit no asociativo < <= > >= <> comparacin no asociativo == != === !== comparacin izquierda & bit a bit y referencias izquierda ^ bit a bit izquierda | bit a bit izquierda && bit a bit izquierda || lgico izquierda ? : ternario derecha = += -= *= /= .= %= &= |= ^= <<= >>= => asignacin izquierda and lgico izquierda xor lgico izquierda or lgico izquierda , muchos usos
Desarrollo de pginas web con PHP y MySql 67
Operadores aritmticos Ejemplo Nombre Resultado -$a Negacin Opuesto de $a. $a + $b Adicin Suma de $a y $b. $a - $b Sustraccin Diferencia de $a y $b. $a * $b Multiplicacin Producto de $a y $b. $a / $b Divisin Cociente de $a y $b. $a % $b Mdulo Resto de $a dividido por $b.
Operadores de asignacin El operador bsico de asignacin es "=". Se podra inclinar a pensar primero que es como un "igual a". No lo es. Realmente significa que el operando de la izquierda se establece con el valor de la expresin de la derecha (es decir, "se define como"). El valor de una expresin de asignacin es el valor asignado. Es decir, el valor de "$a = 3" es de 3. Esto permite hacer algunas cosas intrincadas:
Operadores bit a bit Los operadores bit a bit permiten la evaluacin y la manipulacin de bits especficos dentro de un integer. Operadores bit a bit Ejemplo Nombre Resultado $a & $b And (y) Los bits que estn activos en ambos $a y $b son activados. $a | $b Or (o inclusivo) Los bits que estn activos ya sea en $a o en $b son activados. $a ^ $b Xor (o exclusivo) Los bits que estn activos en $a o en $b, pero no en ambos, son activados. ~ $a Not (no) Los bits que estn activos en $a son desactivados, y viceversa. Bits that are set in $a are not set, and vice versa. $a << $b Shift left(desplazamiento a izquierda) Desplaza los bits de $a, $b pasos a la izquierda (cada paso quiere decir "multiplicar por dos"). $a >> $b Shift right (desplazamiento a derecha) Desplaza los bits de $a, $b pasos a la derecha (cada paso quiere decir "dividir por dos").
Desarrollo de pginas web con PHP y MySql 68
Operadores de comparacin Los operadores de comparacin, como su nombre lo indica, permiten comparar dos valores. Puede tambin estar interesado en ver las tablas de comparacin de tipos, ya que muestran ejemplos de las varias comparaciones relacionadas con tipos. Operadores de comparacin Ejemplo Nombre Resultado $a == $b Igual TRUE si $a es igual a $b despus de la manipulacin de tipos. $a === $b Idntico TRUE si $a es igual a $b, y son del mismo tipo. (a partir de PHP 4) $a != $b Diferente TRUE si $a no es igual a $b despus de la manipulacin de tipos. $a <> $b Diferente TRUE si $a no es igual a $b. $a !== $b No idntico TRUE si $a no es igual a $b, o si no son del mismo tipo. (a partir de PHP 4) $a < $b Menor que TRUE si $a es estrictamente menor que $b. $a > $b Mayor que TRUE si $a es estrictamente mayor que $b. $a <= $b Menor o igual que TRUE si $a es menor o igual que $b. $a >= $b Mayor o igual que TRUE si $a es mayor o igual que $b.
Operadores de incremento/decremento PHP soporta operadores estilo C de pre- y post-incremento y decremento. Nota: Los operadores de incremento/decremento no afectan a los valores booleanos. Decremento de valores NULL tampoco tiene efecto, pero incrementarlos entonces resulta en 1. Operadores de incremento/decremento Ejemplo Nombre Efecto ++$a Pre-incremento Incrementa $a en uno, y luego retorna $a. $a++ Post-incremento Retorna $a, y luego incrementa $a en uno. --$a Pre-decremento Decrementa $a en uno, luego retorna $a. $a-- Post-decremento Retorna $a, luego decrementa $a en uno.
Operadores lgicos Operadores lgicos Ejemplo Nombre Resultado $a and $b And (y) TRUE si tanto $a como $b son TRUE. $a or $b Or (o inclusivo) TRUE si cualquiera de $a o $b es TRUE. $a xor $b Xor (o exclusivo) TRUE si $a o $b es TRUE, pero no ambos. ! $a Not (no) TRUE si $a no es TRUE. $a && $b And (y) TRUE si tanto $a como $b son TRUE. $a || $b Or (o inclusivo) TRUE si cualquiera de $a o $b es TRUE.
Desarrollo de pginas web con PHP y MySql 69
Operadores para strings Existen dos operadores para datos tipo string. El primero es el operador de concatenacin ('.'), el cual retorna el resultado de concatenar sus argumentos derecho e izquierdo. El segundo es el operador de asignacin sobre concatenacin ('.='), el cual aade el argumento del lado derecho al argumento en el lado izquierdo. Por favor consulte Operadores de asignacin para ms informacin.
Comillas simples Se basa en la delimitacin del texto mediante comillas simples ( ' ). Esta es la forma ms sencilla de construir una cadena, pero tambin la ms estricta: Todo lo que aparece en el interior es ntegramente la cadena. Comillas dobles Cuando necesitamos incluir muchos valores guardados en variables dentro de una cadena, es tedioso tener que utilizar repetidamente el operador concatenador de cadenas ( . ) para unir variables con pedazos de cadena, como hemos visto en el primer ejemplo. Para esto existe una forma de cadena ms flexible, pero con el inconveniente de que hay ms cosas que debemos tener en cuenta a la hora de insertar smbolos especiales. Podemos en este caso introducir variables dentro de la cadena y stas sern interpretadas como su valor, no como su nombre. Operadores para arrays
Operadores para arrays Ejemplo Nombre Resultado $a + $b Unin Unin de $a y $b. $a == $b Igualdad TRUE si $a i $b tienen las mismas parejas clave/valor. $a === $b Identidad TRUE si $a y $b tienen las mismas parejas clave/valor en el mismo orden y de los mismos tipos. $a != $b Desigualdad TRUE si $a no es igual a $b. $a <> $b Desigualdad TRUE si $a no es igual a $b. $a !== $b No- identidad TRUE si $a no es idntica a $b. Desarrollo de pginas web con PHP y MySql 70
El operador + aade elementos de las claves restantes del array del lado derecho al del lado izquierdo, mientras que las claves duplicadas NO son sobrescritas.
Como recorrer un ARRAY
Estructuras de control Todo script PHP est construido en base a una serie de sentencias. Una sentencia puede ser una asignacin, una llamada de funcin, un ciclo, una sentencia condicional o incluso una sentencia que no hace nada (una sentencia vaca). Las sentencias generalmente finalizan con un punto-y-coma. Adicionalmente, las sentencias pueden agruparse en un conjunto de sentencias, encapsulndolas entre corchetes. Un grupo de Desarrollo de pginas web con PHP y MySql 71
sentencias es una sentencia por s misma tambin. Los diferentes tipos de sentencias son descritos en este captulo. If else El constructor if es una de las caractersticas ms importantes de muchos lenguajes, incluido PHP. Permite la ejecucin condicional de fragmentos de cdigo. PHP dispone de una estructura if. Con frecuencia se desea ejecutar una sentencia si una cierta condicin se cumple y una sentencia diferente si la condicin no se cumple. Esto es para lo que es else. El else extiende una sentencia if para ejecutar una sentencia en caso que la expresin de la sentencia if se evala como FALSE. Por ejemplo, el siguiente cdigo deber mostrar a es mayor que b si $a es mayor que $b y a NO es mayor que b en el caso contrario:
WHILE El significado de una sentencia while es simple. Le dice a PHP que ejecute las sentencias anidadas, tanto como la expresin while se evale como TRUE. El valor de la expresin es verificado cada vez al inicio del bucle, por lo que incluso si este valor cambia durante la ejecucin de las sentencias anidadas, la ejecucin no se detendr hasta el final de la iteracin (cada vez que PHP ejecuta las sentencias contenidas en el bucle es una iteracin). A veces, si la expresin while se evala como FALSE desde el principio, las sentencias anidadas no se ejecutarn ni siquiera una vez.
DO WHILE Los bucles do-while son muy similares a los bucles while, excepto que la expresin verdadera es verificada al final de cada iteracin en lugar que al principio. La diferencia principal con los bucles while es que est Desarrollo de pginas web con PHP y MySql 72
garantizado que corra la primera iteracin de un bucle do-while (la expresin verdadera slo es verificada al final de la iteracin), mientras que no necesariamente va a correr con un bucle while regular (la expresin verdadera es verificada al principio de cada iteracin, si se evala como FALSE justo desde el comienzo, la ejecucin del bucle terminara inmediatamente).
El bucle de arriba se ejecutara exactamente una sola vez, ya que despus de la primera iteracin, cuando la expresin verdadera es verificada, se evala como FALSE ($i no es mayor que 0) y termina la ejecucin del bucle. FOR Los bucles for son los ciclos ms complejos en PHP. Se comportan como sus contrapartes en C. La sintaxis de un bucle for es: for(expr1; expr2; expr3) sentencia La primera expresin (expr1) es evaluada (ejecutada) una vez incondicionalmente al comienzo del bucle. En el comienzo de cada iteracin, la expr2 es evaluada, Si es TRUE, el bucle contina y las sentencias anidadas son ejecutadas. Si se evala como FALSE, termina la ejecucin del bucle. Al final de cada iteracin, la expr3 es evaluada (ejecutada). Cada una de las expresiones puede est vaca o contener mltiples expresiones separadas por comas. En la expr2, todas las expresiones separadas por una coma son evaluadas pero el resultado se toma de la ltima parte. Que la expr2 est vaca significa que el bucle deber ser corrido indefinidamente (PHP implcitamente lo considera como TRUE, como en C). Esto puede no ser tan intil como se pudiera pensar, ya que muchas veces se quiere terminar el bucle usando una sentencia condicional break en lugar de utilizar la expresin verdadera del for.
Desarrollo de pginas web con PHP y MySql 73
Variables de sesin Las sesiones, en aplicaciones web realizadas con PHP y en el desarrollo de pginas web en general, nos sirven para almacenar informacin que se memorizar durante toda la visita de un usuario a una pgina web. Dicho de otra forma, un usuario puede ver varias pginas durante su paso por un sitio web y con sesiones podemos almacenar variables que podremos acceder en cualquiera de esas pginas
Utilizadas con frecuencia, normalmente para registrar los roles o los usuarios de los visitantes, pero cabe mencionar que un exceso en su uso puede repercutir en el performance del servidor, por tal motivo un uso moderado es perfectamente normal que pueda ser usado y sobre todo efectivo. Conexin a MySql Las conexiones a las bases de datos son por lo general una de las partes ms problemticas para los nuevos programadores en cualquier lenguaje de programacin, incluso en PHP en caso que la configuracin de nuestro archivo .ini del PHP no sea la correcta. Pero desde luego que una vez que tengamos todo en orden, una conexin a la base de datos con PHP es prcticamente la ms sencilla de establecerse. Lo hacemos de la siguiente manera. Primeramente necesitamos hacer uso de la sentencia MYSQL_CONNECT la cual nos permite el acceso a las clases de PHP que se encargan de realizar el trabajo sucio por nosotros y nos permite establecer la conexin al servidor de nuestro inters.
Como se muestra en la imagen anterior, seguido de nuestra conexin es importante mencionar (a fin de hacer nuestras consultas posteriores) cual es la base de datos a la cual necesitamos conectarnos con la Desarrollo de pginas web con PHP y MySql 74
sentencia MYSQL_SELECT_DB adems de indicar cul es la conexin que se va utilizar, es indispensable esta parte, puesto que tenemos la capacidad en PHP de tener n cantidad de conexiones. Como lo hemos mencionado a lo largo del taller, es de vital importancia manejar los errores que ocurren en nuestro sistema, puesto que somos vulnerables de un ataque malicioso si los errores se muestran en pantalla, para tal fin deberemos echar mano de la instruccin ERROR_REPORTING(0), para inhabilitar los mensajes de errores y tratar de manejarlos a nuestro gusto. Aqu un ejemplo.
Ejecucin de Consultas Ya en los ejemplos anteriores hemos visto algo de lo que son la ejecucin de consultas, ahora lo veremos algo ms detallado. Desde luego es importante en primer trmino hacer la conexin a la base de datos, una vez establecida, nuestro siguiente paso es establecer la consulta propiamente, para esto hacemos uso de la instruccin MYSQL_QUERY() con esta instruccin indicamos cul es la consulta que necesitamos ejecutar en nuestro sistema. Aqu el ejemplo. Desarrollo de pginas web con PHP y MySql 75
Otro punto importante, es sin duda, la forma en que podemos recorrer los registros que fueron extrados de la base de datos MYSQL_FETCH_ASSOC() nos apoya con este recorrido como se muestra en el ejemplo anterior y es explicada a detalle en el aula de clase.
Php MyAdmin phpMyAdmin en un panel de control que nos permite de forma grfica tener acceso a la administracin de nuestra base de datos.
Desarrollo de pginas web con PHP y MySql 76
phpMyAdmin es una herramienta escrita en PHP con la intencin de manejar la administracin de MySQL a travs de pginas web, utilizando Internet. Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y aadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos en varios formatos y est disponible en 62 idiomas. Se encuentra disponible bajo la licencia GPL. Este proyecto se encuentra vigente desde el ao 1998, siendo el mejor evaluado en la comunidad de descargas de SourceForge.net como la descarga del mes de diciembre del 2002. Como esta herramienta corre en mquinas con Servidores Webs y Soporte de PHP y MySQL, la tecnologa utilizada ha ido variando durante su desarrollo.
Desarrollo de pginas web con PHP y MySql 77
BIBLIOGRAFIA Las imgenes mostradas en este material son estrictamente utilizables como medio de enseanza se extrae principalmente del IDE Netbeans, Dreamweber y Workbench CE 5.0 Medios de consulta www.php.net www.es.wikipedia.org www.forosdelweb.com www.portalhecker.net www.desarrolloweb.com www.comodicemonterrey.com