Sie sind auf Seite 1von 77

Enseanza de Calidad a Tu Alcance

Desarrollo de pginas web con PHP y MySql


V1.0






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.

<script src="Scripts/script.js" type="text/javascript"></script>

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

Das könnte Ihnen auch gefallen