You are on page 1of 168

1

Manual de PHP

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
2

INDICE

1. PHP Y APACHE
1.1. INTRODUCCIN PHP
1.2. INTRPRETE
1.3. EJECUCIN DE PHP EN EL SERVIDOR
1.4. INSTALACIN DE APACHE
1.5. INSTALACIN DE PHP 4
1.6. INSTALACIN Y CONFIGURACIN DE DREAMWEAVER

2. DREAMWEAVER
2.1. BIENVENIDOS A DREAMWEAVER MX 2004
2.2. IMGENES.
2.3. INSERTAR TABLA.
2.4. MODIFICAR TABLA.
2.5. FORMULARIOS
2.6. CAMPO DE TEXTO.
2.7. BOTN DE OPCIN.
2.8. CASILLAS DE VERIFICACIN.
2.9. LISTAS Y MENS.
2.10. BOTONES DE BORRAR Y ENVIAR.
2.11. INSERTANDO UN OBJETO MULTIMEDIA.
2.12. CAPAS.
2.12.1. Insertar una capa.
2.12.2. Formato de una capa.
2.12.3. Comportamientos en las capas.
2.13. MENS DESPLEGABLES.
2.14. MARCOS.

3. LENGUAJE PHP.
3.1. FORMATO DEL CDIGO PHP
3.1.1. Delimitadores
3.1.2. Extensin de los archivos en PHP
3.1.3. Comentarios
3.1.4. Fin de lnea
3.2. SINTAXIS BSICA
3.2.1. Variables
3.2.2. Tipos de datos
3.2.2.1. Enteros
3.2.2.2. Nmeros en punto flotante
3.2.2.3. Booleano
3.2.2.4. Cadenas
3.2.2.5. Arrays
3.2.2.6. Conversin de tipos
3.2.3. Otros componentes asociados a las variables
3.2.3.1. Variables predefinidas de Apache
3.2.3.2. Variables predefinidas de PHP
I.S.C. Alejandro Guzmn Zazueta
a_zazuetag@hotmail.com
3

3.2.3.3. mbito de las variables


3.2.3.4. Variables de variables
3.2.3.5. Variables de Formulario
3.2.3.6. Funciones para variables
3.2.4. Constantes
3.2.4.1. Constantes predefinidas de PHP
3.2.5. Expresiones
3.2.6. Operadores
3.2.6.1. Operadores Aritmticos
3.2.6.2. Operadores de Asignacin
3.2.6.3. Operadores de Comparacin
3.2.6.4. Operadores de incremento/decremento
3.2.6.5. Operadores Lgicos
3.2.6.6. Otros Operadores
3.2.6.7. Precedencia de Operadores
3.3. ESTRUCTURAS DE CONTROL
3.3.1 if
3.3.2. else
3.3.3. elseif
3.3.4. Sintaxis Alternativa de Estructuras de Control
3.3.5. while
3.3.6 do..while
3.3.7. for
3.3.8 foreach
3.3.9. switch
3.3.10. break
3.3.11. continue
3.3.12. Inclusin de archivos
3.3.12.1. require() y include()
3.4. MANEJO DE CADENAS
3.4.1. Visualizacin de cadenas
3.4.2. Acceso al contenido
3.4.3. Bsqueda en cadenas
3.4.4. Comparacin de cadenas
3.4.5. Modificacin del contenido
3.4.5.1. Limpieza de cadenas
3.4.5.2. Conversin entre maysculas y minsculas.
3.4.5.3. Divisin de cadenas
3.5. ARREGLOS
3.5.1. Arrays escalares
3.5.2. Arrays asociativos
3.5.3. Arrays multidimensionales
3.5.4. Recorrer un array
3.5.4.1. Recorridos en arrays secuenciales
3.5.4.2. Recorridos en arrays no secuenciales
3.5.5. Ordenar un array
3.5.6. Otras operaciones
I.S.C. Alejandro Guzmn Zazueta
a_zazuetag@hotmail.com
4

3.5.6.1. Modificar un array


3.5.6.2. Usando arrays como pilas
3.6. FUNCIONES
3.6.1. Declaracin de una funcin
3.6.2. Llamada a una funcin
3.6.3. Paso de parmetros
3.7. FUNCIONES DE FECHA Y HORA

4. MENSAJES HTTP.
4.1. EL PROTOCOLO HTTP.
4.2. ESTRUCTURA DE LOS MENSAJES HTTP.
4.3. Formularios en HTML
4.3.1. El elemento FORM
4.3.2. Envi de formularios al servidor
4.4. ESTRUCTURA DE LAS COOKIES
4.4.1. Utilizacin de cookies en PHP
4.4.1.1. Creacin de cookies
4.4.1.2. Eliminacin de cookies
4.4.1.3. Consulta de contenidos
4.5. SESIONES EN PHP
4.5.1. Creacin de sesiones
4.5.2. Acceso a las variables de sesin
4.5.3. Otra funciones asociadas con el manejo de sesiones

5. ACCESO A BASES DE DATOS


5.1. CONEXIONES USANDO ODBC
5.1.1. Introduccin
5.1.2. Conexin a travs de ODBC
5.2. INSERT, UPDATE Y DELETE
5.2.1. Introduccin
5.2.2. Insertando datos en PHP
5.3. QUERYS Y CURSORES
5.3.1. Introduccin
5.3.2. Consultando informacin en PHP

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
5
1. PHP Y APACHE

1.1 INTRODUCCIN PHP

PHP es un lenguaje de scripting que permite la generacin dinmica de contenidos en un


servidor Web. El nombre de PHP fue empleado por vez primera a principios de 1995 y ha
sido utilizado para definir a un conjunto de macros conocido como Personal Home Page
Tools. Entre sus principales bondades se pueden destacar: su potencia, alto rendimiento
y su facilidad de aprendizaje.

Fue creado por Rasmus Lerdof como un conjunto de utilidades para aadir dinamismo a
las pginas Web y posteriormente fue rediseado completamente por Zeev Suraski y Andi
Gutmans y rebautizado como PHP 3.0. Ms tarde se volvi a redisear completamente el
intrprete, aadindole ms potencia y nuevas funcionalidades, para dar lugar al lenguaje
que hoy se conoce como PHP4.

Es un lenguaje de programacin que contiene muchos conceptos de C, Perl y Java. El


cdigo PHP est basado en documentos HTML de manera que es muy fcil incorporar
informacin actualizada en un sitio Web.

Para activar y desactivar el <<modo PHP>> dentro de una pgina HTML existen varias
posibilidades:
" Utilizando las etiquetas <? php y ?>.
" Empleando las etiquetas cortas (short tags) <? Y ?>
" Con la etiqueta <SCRIPT> de HTML: <SCRIPT LANGUAJE= php> y
</SCRIPT>.
" Con las etiquetas <% y %>

CARACTERSTICAS

o Es un potente y robusto lenguaje de programacin basado en documentos


HTML.

o Dispone de libreras de conexin con la gran mayora de los sistemas de


gestin de bases de datos para el almacenamiento de informacin
permanente en el servidor.

o Proporciona soporte a mltiples protocolos de comunicaciones en Internet


(http, imap, ftp, etc).

o Cdigo fuente abierto: el cdigo del intrprete est accesible para permitir
posibles mejoras o sugerencias acerca de su desarrollo.

o Es gratuito.
o Portable y multiplataforma: existen versiones del intrprete para mltiples
plataformas. Esto permite que las aplicaciones puedan ser portadas de una
plataforma a otra sin necesidad de modificar ni una sola lnea de cdigo.
I.S.C. Alejandro Guzmn Zazueta
a_zazuetag@hotmail.com
6

o Eficiente: PHP consume pocos recursos en el servidor, por lo que con un


equipo relativamente sencillo es posible desarrollar interesantes
aplicaciones.

o Alta velocidad de desarrollo: PHP permite desarrollar rpidamente sitios Web


dinmicos.

1.2. INTRPRETE
Las pginas que contienen exclusivamente cdigo HTML se pueden desarrollar y probar
sin la intervencin de un servidor Web, ya que el cdigo HTML es interpretado en el
navegador del usuario. PHP se ejecuta en el servidor antes de que la pgina sea enviada
al usuario que realiz la peticin.

Cuando llega una peticin a un servidor Web, ste localiza el documento solicitado por el
cliente y, en funcin de una serie de parmetros de la propia configuracin del servidor,
decide la accin a realizar con el documento.

9 Fases en la obtencin de un documento esttico:

Servidor
CLIENTE 1
2
SOLICITUD 3

RESPUESTA

4 Documentos
estticos
(html, jpg...)

1. El usuario pulsa sobre un link solicitando un documento (un archivo HTML, una
imagen en formato jpg, etc.) y el navegador enva la peticin al servidor
utilizando el protocolo HTTP (protocolo de transferencia de hipertexto),
2. La solicitud llega hasta el servidor Web correspondiente a travs de la red. El
servidor localiza el documento solicitado.
I.S.C. Alejandro Guzmn Zazueta
a_zazuetag@hotmail.com
7

3. El servidor lee el documento del sistema de archivos y enva al cliente una copia
exacta del mismo.

4. El documento llega al cliente y se visualiza su contenido en el navegador del


usuario.

9 Fases en la obtencin de un documento dinmico:

Servidor

CLIENTE 1

SOLICITUD
2 3
RESPUESTA

SCRIPTS
PHP

1. El usuario pulsa sobre un link solicitando un documento (un archivo .phtml o


.php) y el navegador enva la peticin al servidor utilizando el protocolo HTTP
(protocolo de transferencia de hipertexto).

2. Llega la solicitud al servidor y localiza el documento. Por la extensin del


nombre del archivo determina que se trata de un archivo que contiene cdigo
PHP y lanza el intrprete.

3. El intrprete ejecuta el script solicitado y genera un resultado (habitualmente


una pgina HTML) que se devuelve al servidor para que ste a su vez lo
transfiera al cliente.

4. Se visualiza el documento en el navegador del usuario.


A una solicitud del usuario el proceso es exactamente el mismo: pulsa sobre un link y
recibe la informacin requerida. Sin embargo, en el servidor el proceso realizado antes de
enviar la informacin ha sido diferente, ya que en el segundo caso ha sido necesaria la
intervencin del intrprete de PHP para elaborar dinmicamente el contenido.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
8
PHP puede ser instalado al menos de tres modos diferentes:
9 Como un intrprete externo (modo CGI).
9 Como una extensin del servidor (via ISAPI y NSAPI).
9 Como un mdulo interno del servidor (disponible solo para Apache).

La interfaz CGI (interfaz de pasarela comn) dota de capacidades de comunicacin a los


servidores Web con otros programas. Esta interfaz de comunicaciones es comn en el
sentido de que es exactamente igual para todos los servidores, independientemente de la
plataforma sobre la que trabajen. La interfaz CGI establece de una forma clara y precisa la
manera en la que se transfiere la informacin entre el servidor Web y otros programas. De
esta forma es posible conectar el servidor Web con cualquier tipo de programa que sea
capaz de ejecutarse en la misma mquina que el propio servidor. Habitualmente se
emplean programas escritos en lenguajes como C, C++, Perl, etc.

9 Pasos que suceden cuando un usuario pulsa sobre un enlace que


apunta a un programa CGI:

1. El usuario pulsa sobre un link solicitando un documento (un archivo .cgi o .exe) y el
navegador enva la solicitud al servidor.

2. Llega la solicitud al servidor y ste localiza el programa. El servidor determina cmo


debe lanzar la ejecucin del mismo.

3. Se ejecuta el programa CGI generando un contenido (habitualmente un documento


HTML) y devuelve el resultado al servidor. ste reenva el resultado al cliente que
realiz la peticin.

4. Se visualiza el contenido del documento en el navegador del usuario.

En los programas CGI desarrollados con lenguajes como Perl o C, cuando se obtiene la
informacin enviada desde el cliente es necesario realizar un proceso de decodificacin,
puesto que dicha informacin se enva siguiendo las reglas de codificacin de URL
(permiten identificar de manera nica un recurso de internet). Con PHP esto no sucede,
dado que el propio intrprete se encargar de realizar el proceso de descodificacin.

Aparte del modo CGI, tambin se puede instalar el intrprete como una extensin del
servidor empleando la API correspondiente, o como un mdulo adicional del servidor.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
9
1.3. EJECUCIN DE PHP EN EL SERVIDOR
PHP reside y se ejecuta en la mquina en la que se encuentra el servidor Web. De esta
forma el cliente lo nico que recibe es el resultado generado (pginas en formato HTML,
imgenes en formato gif o jpeg, etc) y no le afecta si ha sido producido por un programa
CGI escrito en lenguaje C o por un script escrito en Perl o por una pgina con cdigo PHP
o ASP.

A diferencia de JavaScript, o de un applet Java, PHP es una tecnologa que solamente se


ejecuta en el lado del servidor.
PHP ha sido diseado para generar dinmicamente contenidos, y uno de sus puntos
fuertes es su gran capacidad para interactuar con multitud de gestores de bases de datos.
Adems, tambin puede producir de manera dinmica cdigo que se enva con la pgina
HTML y se ejecuta en el lado del cliente.

1.4. INSTALACIN DE APACHE

Lo primero que se debe hacer es instalar el servidor Web; en nuestro caso, instalaremos
Apache en su versin para Windows.

Apache es un servidor Open Source, y el ms usado por los servidores en todo Internet,
se puede encontrar toda la informacin acerca de l en su pgina Web:
http://www.Apache.org/ (en ingls por supuesto), y se puede bajar de la siguiente
direccin: Apache_2.0.43-win32-x86-no_ssl.exe

Bien, una vez bajado el Apache (7 megas aproximadamente) lo que procede es


instalarlo; estos son los pasos a seguir:

1 - Dar doble clic sobre el archivo y aparecer la siguiente ventana:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
10

2 - En esta nueva ventana hacer clic en el botn Next y mostrar la siguiente:

3 - Despus de haber ledo la licencia del Apache y haber seleccionado la casilla de


aceptacin (I Accept the Terms in the Licence Agreement), hacemos clic en el botn Next,
apareciendo la siguiente ventana:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
11

4 De nueva cuenta, hacer clic en el botn Next, y aparecer esta otra ventana:

5 - En esta ventana se deber teclear informacin en cada casilla:

- Network Domain:

Esta casilla presenta varias opciones y que es necesario atender: lo ms normal es


que se prefiera instalar el servidor para ser usado de manera personal. Si por el
contrario, desea que el resto del mundo pueda ver las maravillas que puede hacer con
PHP, entonces aqu deber indicar su direccin IP.

Nota: Si no sabe cul es su direccin IP, lo podr investigar ejecutando, en modo


consola, el comando ipconfig.

- Server Name:

Es el nombre que desea asignar a su servidor Web, por ejemplo www.miServer.com

- Administrators Email Adress:

Aqu debe escribir la direccin de correo electrnico del administrador del servidor
web; por ejemplo: yo_mimo@hotmail.com

Despus de haber llenado estas casillas, aparecen dos opciones ms:

- For all users in port 80, as a service: instala Apache como un servicio de Windows,
es decir que Apache se ejecuta al iniciar el ordenador; eligiendo esta opcin el servidor
se pone a la escucha en el puerto 80.
I.S.C. Alejandro Guzmn Zazueta
a_zazuetag@hotmail.com
12

- Only for the current user, on port 8080, when started manually: instala Apache
como un programa normal, para ejecutar el servidor lo elegimos en el men de inicio y
se abre una ventana para indicar que se est ejecutando Apache.

Una vez llenados todos los campos y elegida la opcin que se desee, hacer clic en el
botn Next; entonces aparecer esta ventana:

En esta ventana se escoge si se quiere hacer una instalacin tpica o personalizada,


comnmente se elige la instalacin personalizada (custom) y luego se presiona el botn
Next.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
13
Aqu se elige el directorio donde se desea instalar el Apache, por defecto se instala en
Archivos de programa, por lo tanto, se da clic en el botn Next. Despus de esto,
aparecer un mensaje de confirmacin y se da clic en el botn Next para que comience la
instalacin. Cuando sta termine, nuevamente aparecer una ventana, simplemente se
hace clic en el botn de Finish y habr terminado la instalacin del servidor.

Una vez hecho lo anterior, es necesario ejecutar el servidor Apache eligiendo la opcin
Start Apache in Console, abrindose una ventana (negra) indicando que se est
ejecutando el servidor Apache.

Despus de esto, abrir el explorador de Internet para ver si realmente el servidor est
funcionando.

Una vez abierto, existen varias opciones segn se haya llenado el campo network domain:

- Si se ha puesto la direccin IP, en la barra de direccin del explorador se escribe lo


siguiente: http://nuestra direccin ip:8080

Nota: Lo de 8080 es para indicar al explorador que el servidor est escuchando en el


puerto 8080.

- Si en el campo Network Domain se indic una direccin de dominio, por ejemplo


david.com, se pondr en la barra de direccin del navegador: http://localhost.

Si todo es correcto aparecer una ventana diciendo que el servidor Apache ha sido
configurado exitosamente.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
14
1.5. INSTALACIN DE PHP 4
La versin de ISAPI se distribuye en un archivo en formato ZIP.

Una vez obtenida debe ser descomprimido en la direccin definida (se recomienda
emplear el directorio c:\PHP). A continuacin se explican los pasos a seguir si el servidor
es Apache.

Para continuar con la instalacin del servidor Apache, siga los siguientes pasos:

1.- Detenga el servidor.

2.- Posicinese en el directorio c:\php.

3.- Mueva el archivo php4ts.dll a su directorio \Windows.

4.- Cambie el nombre del archivo php.ini.recommended por el de php.ini y cpielo a la


carpeta C:\Windows.

Enseguida, abra el archivo php.ini para ser configurado de acuerdo a los siguientes
puntos:

9 Se busca la siguiente lnea:

display_errors = off // y se cambia por display_errors = on

Se cambia el off a on con la finalidad de que los errores de sintaxis sean


mostrados.

9 Busque la parte de [sessiones] en la cual se va a configurar la siguiente


lnea:

session.save_path = /tmp

Aqu debe poner las ruta donde se guardarn los archivos temporales de las
sesiones, posteriormente, si no existe la ruta, tendr que crearla.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
15
Configuracin de Apache con PHP

Antes de continuar pare el servidor Apache, y enseguida edite el archivo de configuracin


de Apache httpd.conf que se encuentra en Inicio (windows) -> Todos los programas ->
Apache HTTP Server 2.0.48 -> Configure Apache Server; e incluya las siguientes lneas:

LoadModule php4_module c:/php/sapi/php4Apache2.dll


# Le indica al servidor Apache que carge el mdulo php4.

Bien, lo siguiente es modificar la lnea de DocumentRoot como se muestra a continuacin:

DocumentRoot "c:/Apache/Apache2/htdocs"

Esta es la carpeta donde se van a almacenar los archivos .php, .html, etc, lo mejor es
cambiarla, por ejemplo vamos a poner:

DocumentRoot "c:/InetPhp"

(Este directorio se identificar como el directorio remoto ms adelante), es importante


fijarse que la barra sea "/" y no "\".

El siguiente texto a buscar es este:

<Directory "c:/Apache/Apache2/htdocs">

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
16
Aqu se debe hacer lo mismo que antes: sustituir el directorio y poner la misma direccin
que DocumentRoot, en este caso:

Directory "c:/InetPhp"

Posteriormente se agrega la siguiente lnea al archivo de configuracin:


AddType application/x-httpd-php .php .phtml

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
17

Esta ltima lnea indica al servidor Apache que identifique las extensiones .php para que el
mdulo del intrprete entre en funcionamiento.

Vuelva a poner en marcha su servidor Apache.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
18

1.6. INSTALACIN Y CONFIGURACIN DE DREAMWEAVER

Inicio -> Todos los programas -> Macromedia -> Dreamweaver.

Seleccin de un diseo para el espacio de trabajo.

En Windows, la primera vez que inicie Dreamweaver aparecer un cuadro de dilogo en el


cual seleccionaremos codificador. Si cambia de idea posteriormente, podr cambiar a otro
espacio de trabajo distinto a travs del cuadro de dilogo Preferencias.

Definir una carpeta local mediante el asistente para la Definicin del sitio.

Crear una definicin del sitio y definir una carpeta local mediante el cuadro de dilogo
Definicin del sitio. Puede usar este cuadro de dilogo en una de estas dos vistas: Bsicas
o Avanzadas. El mtodo Bsico le orientar paso a paso a lo largo del proceso de
configuracin del sitio. Si prefiere editar informacin del sitio sin esta orientacin, puede
hacer clic en la ficha Avanzadas en cualquier momento.

El procedimiento siguiente describe cmo configurar las opciones de la versin Bsica del
cuadro de dilogo, que tambin se denomina asistente para la Definicin del sitio.

Para definir un sitio:

1. Seleccione Sitio > Administrar sitios (es decir, seleccione Administrar sitios en el
men Sitio). Aparece la ventana Administrar sitios.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
19
2. En el cuadro de dilogo Administrar sitios, haga clic en Nuevo y seleccione Sitio
en el men emergente. Aparecer la ventana Definicin del Sitio.

3. Si la ventana muestra la ficha Avanzadas, haga clic en Bsicas.


Aparecer la primera pantalla del asistente para definir el sitio solicitndole que
introduzca un nombre para el sitio. En el cuadro de texto, introduzca un nombre que
identifique el sitio en Dreamweaver. Puede elegir el nombre que desee. Por
ejemplo, Agz como a continuacin se muestra:

4. Haga clic en Siguiente para continuar. Aparecer la siguiente pantalla del


Asistente preguntndole si desea trabajar con una tecnologa de servidor.
Seleccione la opcin No para indicar que el sitio es esttico por el momento, sin
pginas dinmicas.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
20
5.- Haga clic en Siguiente para continuar. Aparecer la siguiente pantalla del
asistente preguntndole cmo desea trabajar con los archivos. Seleccione la opcin
Editar localmente y luego cargar al servidor de prueba remoto, y seleccione la
carpeta en la cual desea almacenar los archivos que genere (para este ejemplo fue
InetDW, en esta se almacenarn los archivos locales de dreamweaver), en caso de
no existir crela y seleccinela, como a continuacin se muestra:

6. Haga clic en Siguiente para continuar. Aparecer la siguiente pantalla del


Asistente preguntndole cmo se conecta al servidor remoto.

Definir un Sitio remoto

Despus de crear un sitio Web, el paso siguiente es publicarlo cargando los archivos en
un servidor Web remoto. Antes de continuar, deber disponer de acceso a un servidor
Web (Apache), configurado de acuerdo con los pasos anteriores.

7. En el men emergente "Cmo conecta con su servidor remoto?", elija un


mtodo para conectar con el sitio remoto. Se elige Local/red (porque el servidor se
instal localmente Apache).

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
21

8. Haga clic en el cono de carpeta situado junto al cuadro de texto y acceda a la


carpeta raz servidor Apache (directorio de archivos remotos). Si lo desea, puede
desactivar la opcin Actualizar lista de archivos remotos automticamente para
aumentar la velocidad. Como se muestra en la figura anterior.

9. Una vez introducida la informacin adecuada, haga clic en Siguiente. Aparecer


la siguiente pantalla del Asistente preguntndole Desea activar la
desproteccin y proteccin de archivos para que usted y sus colaboradores no
puedan editar el mismo archivo simultneamente? deber seleccionar No, no
activar la desproteccin y proteccin

10. Haga clic en Siguiente para continuar. Aparecer una pantalla del asistente
mostrando un resumen de la configuracin. Haga clic en Completado para terminar
de configurar el sitio remoto.

11. Haga clic en Listo para cerrar el cuadro de dilogo Administrar sitios.

El panel Archivos mostrar ahora la nueva carpeta raz local correspondiente al sitio
actual. La lista de archivos del panel Archivos acta como administrador de archivos, ya
que permite copiar, pegar, eliminar, mover y abrir archivos como si se tratara del escritorio
de la PC.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
22

Cargar los archivos locales

Despus de configurar las carpetas local y remota, puede cargar los archivos de la carpeta
local al servidor Web. Para que las pginas sean accesibles pblicamente, debe cargarlas
incluso aunque el servidor Web se ejecute en el equipo local.

1.- Antes de cargar los archivos en el sitio remoto, como ejemplo cargaremos los archivos
en el directorio local del sitio que se encuentran en:

c:\archivos de programas\macromedia\Dreamweaver 2004\samples\GetinStarted\finalsite

Copiar el contenido de la carpeta y mandarlo al directorio local de Dreamweaver.

c:\InetDW.

2.- En el panel Archivos (Ventana > Archivos), seleccione la carpeta raz local del sitio. Y
deben estar los archivos que se copiaron en el paso anterior, de lo contrario actualice el
panel de archivos con F5 o botn actualizar.

3.- Haga clic en el cono de flecha azul Colocar archivos de la barra de herramientas del
panel Archivos. Dreamweaver copia todos los archivos en la carpeta. Esta operacin
puede ocupar cierto tiempo, ya que Dreamweaver debe cargar todos los archivos en el
sitio remoto InetPHP.

4.- Abra el sitio remoto en un navegador para comprobar que todo se ha cargado
correctamente.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
23

Para definir un sitio de Dreamweaver con PHP:

1. En Dreamweaver, seleccione Sitio > Administrar sitios. En el cuadro de dilogo


Administrar sitios, seleccione el sitio creado y haga clic en el botn Editar.

Aparecer la ventana Definicin del sitio.

2. Si se muestra la ficha Bsicas, haga clic en la ficha Avanzadas.

3. En la ficha Avanzadas del cuadro de dilogo Definicin del sitio, haga clic en Servidor
de prueba en la lista Categora. Aparecer la pantalla Servidor de prueba. Dreamweaver
necesita los servicios de un servidor de prueba para generar y mostrar contenido dinmico
mientras se trabaja.

El servidor de prueba puede ser el equipo local, un servidor de desarrollo, un servidor en


funcionamiento o un servidor de produccin, siempre y cuando permita procesar pginas
PHP; ya que se dirige a un servidor capaz de procesar pginas PHP.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
24

4. Seleccione PHP MySQL en el men emergente Modelo de servidor.

5. En el men emergente Acceso, elija el mismo mtodo (Local/red) que ha especificado


para acceder a la carpeta remota.

6. Damos clic en Aceptar y por ltimo en Listo.

7. Para comprobar que todo funcione correctamente, creamos un documento de php.


Seleccionamos Archivo -> Nuevo. En el cuadro de dilogo en la seccin categora
seleccionamos pgina dinmica, en la seccin de pgina dinmica del mismo cuadro
seleccionamos PHP.

Entre las etiquetas de <body> tecleamos el siguiente cdigo:

<body>
<p>Esta Pgina fue creada a las <b>
<?php
echo date("h:i:s a", time());
echo "</b> en una computadora corriendo PHP.</p>";
phpinfo();
?>
</body>

8. Guardamos el archivo. En el cuadro de dilogo le asignamos un nombre y en el combo


de tipo seleccionamos archivos php (.php .php3).

9. Si queremos ver nuestra pgina en el iExplorer debemos cargar el archivo en el


servidor:
a.- Hacemos clic en la flecha azul ubicada en el panel de Archivo.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
25
b.- Aparecer el siguiente cuadro de dilogo, damos clic en el botn de s.

c. Despus hacemos clic en el cono de Vista previa/Depurar en explorador,


en el cuadro emergente seleccione vista previa en iExplorer o F12.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
26
2. DREAMWEAVER

2.1. BIENVENIDOS A DREAMWEAVER MX 2004

Dreamweaver MX 2004 es un editor HTML profesional para disear, codificar y desarrollar


sitios, pginas y aplicaciones Web. Tanto si desea controlar manualmente el cdigo HTML
como si prefiere trabajar en un entorno de edicin visual, Dreamweaver le proporciona
tiles herramientas que mejorarn su experiencia de creacin Web.

Las funciones de edicin visual de Dreamweaver permiten crear pginas de forma rpida,
sin escribir una sola lnea de cdigo. No obstante, si prefiere crear el cdigo manualmente,
Dreamweaver tambin incluye numerosas herramientas y funciones relacionadas con la
codificacin. Adems, Dreamweaver le ayuda a crear aplicaciones Web dinmicas
basadas en bases de datos empleando lenguajes de servidor como ASP, ASP.NET,
ColdFusion Markup Language (CFML), JSP y PHP. En el presente manual explicaremos
con detalle el manejo de pginas dinmicas con PHP.

2.2. IMGENES.

Para insertar una imagen es conveniente tenerla previamente guardada en la carpeta del
sitio; de lo contrario, Dreamweaver nos advertir para que guardemos una copia en la
carpeta correspondiente.

Las imgenes pueden estar sueltas en la carpeta raz junto con los archivos de cada uno
de los documentos o, mucho mejor, en una carpeta especial dentro del sitio a la que
llamaremos imag (nombre de los archivos y carpetas sin acentos) o cualquier otro nombre
que nos sugiera que, dentro de esa carpeta, estn nuestras imgenes.

Para crear una carpeta dentro de la carpeta raz del sitio, pulsamos la pestaa Archivo de
la franja lateral derecha y elegimos Nueva carpeta.

Por cierto, para hacer visible o invisible la franja lateral derecha le damos al cono

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
27
Se crear una carpeta con el nombre untitled que habr que cambiar por el que deseemos
tenga nuestra carpeta de imgenes:

Por ejemplo, podemos llamarla imag:

Podemos llevar las imgenes a la carpeta por cualquiera de los procedimientos habituales
en Windows. Si por ejemplo, tal como indicbamos al principio, la imagen no est
previamente guardada en la carpeta, Dreamweaver nos va a sugerir que lo hagamos.
Supongamos que queremos insertar una imagen que tenemos guardada en el Escritorio.
La imagen se llama obras.

Hacemos clic en Insertar de la barra de mens y luego en Imagen:

Aparecer la ventana Seleccionar origen de imagen:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
28

Hacemos clic en Escritorio y seleccionamos la imagen: obras.

Aparecer el mensaje de advertencia dicindonos que la imagen no est en la carpeta raz


del sitio:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
29
Le decimos que S y se abrir la ventana Copiar archivo como.

Hacemos doble clic sobre la carpeta imag para abrirla.

Le damos Guardar. La imagen se guardar en la carpeta imag y se colocar en el


documento:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
30

Todo esto se puede hacer en la barra de Insertar que es un acceso directo para colocar
una imagen en nuestra pgina (jpg o gif). Como se muestra en la figura:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
31
2.3. INSERTAR TABLA.

Desde Insertar de la barra de Mens, elegimos Tabla.

Aparecer una ventana similar a sta:

Podemos determinar el nmero de Filas, el nmero de Columnas, el Ancho de la tabla en


pixeles o porcentaje, especificar si queremos que la tabla tenga Borde e indicarle el grosor
del borde en su caso. El Relleno de celda hace referencia al espacio que queremos que
exista entre el texto, o lo que coloquemos en cada una de las celdas y su borde. El
Espacio celda es el espacio que queremos que haya entre una celda y otra. Ambos se
indican en pixeles y se pueden quedar vacos en el caso de que queramos que tanto el
relleno de celda como el espacio de celda sea el mnimo posible.

A modo de ejemplo, vamos a insertar una tabla con 3 filas y 6 columnas y que ocupe el
80% del ancho, un borde de 2 pixeles y un relleno de celda de 5 pixeles:

Lunes Martes Mircoles Jueves Viernes

Maana

Tarde

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
32
2.4. MODIFICAR TABLA.

Si ponemos el cursor en cualquier punto de la tabla, en la barra de estado, encontraremos


una informacin similar a sta:

La etiqueta <body> hace referencia a todo el documento que se visualiza con el


navegador. La etiqueta <table> se refiere a la tabla entera, la etiqueta <tr> a la fila en la
que est el cursor y la etiqueta <td> a la celda. Observe que la ltima etiqueta est en
negrita. Eso quiere decir que es la celda que est seleccionada.

Por debajo de esta barra de estado nos encontramos con el panel del Inspector de
Propiedades que harn referencia a la celda en la que, en ese momento, est el cursor:

Desde ese panel podramos cambiar las propiedades de la celda en cuestin.

Agregamos los datos que estn en el dibujo anterior dentro de cada celda, seleccionando
la celda correspondiente e ingresaremos el texto.

Seleccionamos cualquiera de las celdas de la tabla para despus seleccionar en la Barra


de Estado la etiqueta <table>, se seleccionar toda la tabla.

Si ahora vemos las propiedades, stas sern las propiedades de la tabla y, desde ah,
podremos cambiar las propiedades de la tabla y su configuracin.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
33
Podemos modificar el nmero de Filas en Filas, el nmero de columnas en Cols, la
anchura en An, la altura en Al, el espacio entre los bordes y el contenido en Rell.celda, el
espacio entre las celdas en Esp.celda, la alineacin en Alinear, el grosor del borde en
Borde, Podemos establecer un color de fondo en Col.Fondo, un color de borde en
Col.borde o una imagen en Im.

Vamos a realizar algn cambio en la tabla:

Hemos aadido una fila alineada al centro, incrementando el grosor del borde a 5 pixeles,
estableciendo un color de fondo y otro diferente para el borde. El resultado es este:

Lunes Martes Mircoles Jueves Viernes

Maana

Tarde

Podemos hacer cambios a una celda concreta, a una fila entera, o a la tabla entera como
acabamos de ver.

Para hacer cambios a una fila colocamos el cursor en una celda de esa fila y marcamos la
etiqueta <tr> de la barra de estado. Quedar seleccionada la fila entera. Desde el panel
Propiedades podemos hacer los cambios oportunos:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
34
Hemos seleccionado la primera fila. Ahora el panel Propiedades afectar a la fila
seleccionada:

Si pulsamos, por ejemplo, el botn el texto que est escrito en las celdas de esa fila
se colocar centrado en cada una de las celdas. Pulsando, por ejemplo, el botn el
texto escrito pasar a estar en negrita. El resultado ser:

Otra forma de seleccionar filas y/o celdas consiste en situar el cursor en una de las celdas
y arrastrar con el ratn hasta donde se desee:

Seleccionamos como ejemplo las cuatro celdas intermedias de la ltima fila. Si le damos,
por ejemplo al cono las celdas seleccionadas se agruparn en una sola:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
35
Podemos aadir texto o variar las propiedades de las celdas por los procedimientos
descritos:

Hemos seleccionado por el mtodo de arrastrar el cursor las celdas anteriores para
cambiar el color de fondo:

El resultado es:

Podremos crear vnculos a otras pginas muy fcil con Dreamweaver solo hay que
presionar el crculo al lado de la caja de texto en el panel de propiedades de vnculo y
soltarlo en la pgina que queremos que sea la pgina de enlace.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
36
2.5. FORMULARIOS

Vamos con una de las herramientas ms tiles de toda pgina Web. Es aquella que
recoge informacin del visitante y la almacena en el servidor, o bien, se nos enva a travs
de una direccin de correo electrnico.

Nota: Otra manera de ver el panel de Insertar es verlo como fichas, damos clic en el botn
de insertar y seleccionamos ver como fichas.

Para insertar un formulario: Damos clic en para que se despliegue el panel:

Si no est ya desplegado, elegimos la pestaa

Colocamos el cursor en el sitio en vista diseo o en vista cdigo donde queramos que se
coloque el formulario y damos clic en el cono .

Aparecern los lmites del formulario representados por un rectngulo cuyos lados son una
lnea discontinua de color rojo:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
37
A continuacin insertaremos una tabla dentro del formulario con dos columnas y varias
filas: situamos el cursor dentro del rectngulo de lneas discontinuas, introducimos la tabla
y la centramos, para que la tabla no contenga contorno le ponemos 0 a grosor de borde, 4
filas y 2 columnas; seleccionamos <tabla> en el panel de propiedades seleccionamos en
alinear -> centro.

2.6. CAMPO DE TEXTO.

Vamos a hacer, como ejemplo, un formulario que recoja la opinin sobre esta pgina Web.
Empezamos con el primer Objeto de formulario: Campo de texto.

Situamos el cursor en la primera celda, alineamos a la derecha y escribimos, por ejemplo,


Nombre:

En la primera celda de la derecha insertamos un campo de texto .

Dando clic en el panel insertar -> Formulario -> campo de texto.

Nuestro formulario tendr este aspecto:

Y abajo, aparecer la ventana de del campo de texto:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
38
Ah podemos elegir la anchura del campo, el nmero de caracteres mximo, si queremos
que conste de una o varias lneas, si queremos que se oculte al ser escrito (tipo
contrasea), si queremos que aparezca un texto inicialmente y, lo que es ms importante,
el nombre que le queremos dar: Quitamos textfield y ponemos: nombre.

Esto tambin se puede hacer por medio del cdigo haciendo lo siguiente:

<INPUT TYPE=text NAME=nombre VALU=valor por defecto SIZE=tamao


MAXLENGTH=longitude_maxima>

Type=text es donde indicamos que es una caja de texto.

TYPE=password hacemos que sea de tipo contrasea.

2.7. BOTN DE OPCIN.

Vamos ahora a preguntar la opinin sobre la pgina. En la segunda celda de la columna


de la derecha, insertamos un botn de opcin .

Recuerde que todos los controles de formularios se insertan como la caja de texto en
insertar -> formularios ->tipo de formulario que se quiere.

Nuestro formulario tendr este aspecto:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
39

Y en la parte inferior de la pantalla, aparecer el panel de propiedades del botn:

En la primera casilla de la izquierda borramos radiobutton y escribimos el nombre de la


opcin global: opinion. En la segunda casilla, al lado de Valor activado, escribimos lo que
corresponda con esta primera opcin que puede ser: muy buena. Podemos elegir que esta
opcin est activada o desactivada de entrada. Tenemos que escribir a la derecha del
botn el texto (que est dentro de la celda) que ver el visitante: Muy buena, excelente. El
formulario ir quedando as:

Tenemos que seguir insertando los dems botones de opcin correspondientes a este
ejemplo. Por lo tanto, los siguientes botones se debern seguir llamando opinion y en cada
caso habr que escribir lo que corresponde con esa opcin. De no llamarse igual, se
podrn seleccionar todos y no uno solo que es lo que pretendemos. A esto se le llama
grupo de opcin.

Para que el segundo botn no quede muy separado del primero, le damos un salto de
lnea Insertar > texto > caracteres > salto de lnea o introduciendo <BR> en el codigo
despus de excelente.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
40

El segundo botn, por ejemplo, debera quedar as:

Ponemos un tercer botn con la opcin de que la pgina es Mala.Bastante mala: Ya sabes
el mismo nombre: opinion y como valor activado: mala.

Si queremos colocar otra pregunta de opcin debemos llamarla de otra manera para que
no se excluyan las selecciones. Por ejemplo, podemos preguntarle al visitante sobre sus
conocimientos de informtica. El nombre de la opcin podra ser conoc_infor (por
ejemplo).

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
41

El formulario va teniendo este aspecto:

2.8. CASILLAS DE VERIFICACIN.

Vamos a insertar ahora casillas de verificacin las cuales permiten elegir varias
opciones. En nuestro caso, podramos hacerlo con las cosas que le han gustado.

Introducimos la pregunta en la siguiente celda de la izquierda Qu es lo que ms te ha


gustado del curso? En la celda de la derecha introducimos la primera casilla de
verificacin pulsando en el cono correspondiente.

Le ponemos un nombre a la casilla, por ejemplo, gustado, y como primer valor uno de los
que se nos puedan ocurrir, por ejemplo, paso a paso (para Valor activado) y una frase un
poco ms construida para el formulario visible.

Damos un salto de lnea e introducimos nuevas casillas, siempre con el mismo nombre,
gustado, y una frase nueva como Valor activado que debe ser una expresin corta de lo
que escribamos en el formulario. Esta parte del formulario podra quedar as:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
42

El cdigo es el siguiente:

<INPUT TYPE=checkbox NAME=ingeniero VALUE=si checked>

Donde checked seleccionar la opcin por defecto.

2.9. LISTAS Y MENS.

A continuacin, podemos incluir un men o lista desplegable. La diferencia entre men y


lista es que la lista permite varias elecciones y el men una sola. Podemos hacerlo, por
ejemplo, preguntando por la edad del visitante. Escribimos la pregunta en la siguiente
celda Indica tu edad e incluimos el men en la celda de la derecha pulsando en .

Le damos un nombre a la Lista/men, por ejemplo, edad y pulsamos .


Aparecer la siguiente ventana:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
43

Vamos escribiendo en los elementos del men. En Valor escribimos lo


mismo (ser lo que aparezca al ser enviado el formulario). Pulsando la tecla para
incluir el siguiente y la tecla para quitar uno ya introducido. Con las flechas vamos
cambiando el orden de las etiquetas de elemento.

Cuando lo tengamos todo le damos Aceptar. Las diferentes etiquetas no aparecen, solo lo
harn al lanzar la pgina con el navegador.

El cdigo es el siguiente:

<select name="select">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
44
Podemos crear fcilmente la lista ya teniendo un men solo hay que teclear la opcin de
lista en el cuadro de propiedades y, en la opcin de alto, cuntos se van a ir mostrando en
la lista y seleccionando la opcin mltiple seleccionamos varias lneas.

Podemos incluir un campo de texto para comentarios. Lo podemos hacer con el botn de
Campo de texto definiendo en las propiedades, o
bien, dando directamente al botn: (rea de texto):

Lo introducimos:

Podemos introducir ahora (campo de texto) la direccin de correo electrnico del visitante.
En este caso, podemos poner un Valor inicial:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
45

2.10. BOTONES DE BORRAR Y ENVIAR.

Finalmente, tenemos que insertar un botn para enviar el formulario y, si lo deseamos, un


botn para borrar todo lo que haya podido escribir el visitante. Empezamos por el de
Borrar:

Vamos a colocar el botn de borrar en la ltima celda de la izquierda alineando a la


derecha. Colocamos el cursor en la celda, alineamos y pulsamos el cono . Por
defecto, Dreamweaver coloca el botn de Enviar.

Nosotros modificamos de la siguiente forma:

A continuacin, nos colocamos en la celda de la derecha, alineamos a la izquierda,


pulsamos el cono . Aparecer, de nuevo la ventana anterior que modificamos:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
46

Podemos dar por finalizado nuestro formulario. Queda por definir la accin que queremos
que haga una vez relleno. Para usuarios personales, la opcin ms habitual es el envo
por correo electrnico de los datos obtenidos. Esto se hace colocando el cursor en
cualquier punto del formulario y eligiendo <form> desde la barra de estado
. Aparecern las propiedades del formulario:

En Accin escribimos mailto:direcciondecorreo. Por ejemplo:


mailto:a_zazuetag@hotmail.com

De todas formas, para que el envo del formulario pueda leerse como un mensaje de
correo ordinario, hay que escribir en la etiqueta del formulario del cdigo fuente el atributo
enctype="text/plain".

Podemos intentar seleccionarlo del men: . Si no est ah,


tenemos que escribirlo directamente en el cdigo. Seleccionamos el formulario colocando
el cursor y pulsando <form>

<form action=mailto:a_zazuetag@hotmail.com method=post name=form1>

Incluimos lo acordado:

<form action=mailto:a_zazuetag@hotmail.com method=post name=form1


enctype=text/plain>

Vemos, de nuevo, las propiedades del formulario:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
47

Nuestro formulario ya tiene que funcionar. Lo guardamos primero, lo lanzamos con el


navegador, y realizamos un rellenado de prueba para ver si lo recibimos
satisfactoriamente por el correo electrnico.

Antes de dar por concluido el formulario podemos hacer alguna modificacin en la tabla,
aadiendo algn color de fondo para separar unas filas de otras. Con el cursor
(arrastrando) seleccionamos la primera fila:

Y en la ventana de propiedades de la fila:

Elegimos un color de fondo:

Elegimos otro color para la segunda fila y vamos alternando.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
48
2.11. INSERTANDO UN OBJETO MULTIMEDIA.

Site el punto de insercin en la ventana de documento en la que desea insertar el objeto.

1. Inserte el objeto siguiendo uno de estos procedimientos:


o En la categora Comn de la barra Insertar, haga clic en el botn Media y
seleccione el botn para el tipo de objeto que desea insertar.
o Seleccione el objeto adecuado en el submen Insertar > Media.
2. En la ventana de documento, coloque el punto de insercin en el lugar en el que
desea insertar un elemento Flash y siga uno de estos procedimientos.
o En la categora Elemento Flash de la barra Insertar, haga clic en el cono del
elemento Flash que desea insertar.

o Seleccione Insertar > Elemento Flash > Nombre del elemento Flash.

Aparecer el cuadro de dilogo Guardar elemento Flash.

3. Introduzca un nombre de archivo para el elemento Flash y gurdelo en una


ubicacin adecuada de su sitio.
4. Haga clic en Aceptar.

Aparece el marcador de posicin del elemento Flash en el documento. Puede


modificar las propiedades del elemento Flash mediante el inspector de etiquetas y
el inspector de propiedades.

Seleccione Archivo > Vista previa en el navegador para obtener una vista previa del
elemento Flash.

2.12. CAPAS.

Las capas no son ms que unos recuadros, que pueden situarse en cualquier parte de la
pgina, en los que podemos insertar contenido HTML. Dichas capas pueden ocultarse y
traslaparse entre s, lo que proporciona grandes posibilidades de diseo.

Las capas pueden moverse de una posicin a otra de la ventana pulsando sobre el
recuadro blanco, y sin soltar el ratn, arrastrndola hacia la nueva posicin. Tambin
pueden ser redimensionadas pulsando sobre los recuadros negros, y arrastrndolos hasta
conseguir el tamao deseado.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
49
Dentro del recuadro de la capa es posible insertar texto, tablas, imgenes, animaciones
flash y todos los elementos que puede contener un documento HTML.

2.12.1. Insertar una capa.

Las capas pueden insertarse en una pgina a travs del men Insertar ->objeto de diseo
-> opcin Capa. Una vez que se ha insertado la capa, pueden editarse sus atributos, pero
para ello hay que seleccionarla primero.

Seleccionarlas a travs del panel Capas, que puede abrirse a travs del men Ventana ->
capas o con F2.

2.12.2. Formato de una capa.

Las propiedades de la capa se especifican a travs de su inspector de propiedades, al


igual que casi todo lo que hemos visto hasta el momento.

ID de capa es el nombre de la capa. Tambin puede ser cambiado a travs del panel
Capas, haciendo doble clic sobre l.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
50
Iz y Sup indican la distancia en pixeles que hay entre los lmites izquierdo y superior del
documento y la capa.

An y Al indican la anchura y la altura de la capa. ndice Z es el nmero de orden de


colocacin de las capas. Este valor tambin puede cambiarse a travs del panel Capas.
Una capa ser solapada por aquellas capas cuyo ndice Z sea mayor que el suyo.

Vis indica la visibilidad inicial de la capa. La visibilidad puede ser de cuatro tipos: Default
(visibilidad segn el navegador), Inherit (se muestra la capa mientras la pgina a la que
pertenece tambin se est mostrando), Visible (muestra la capa, aunque la pgina no se
est viendo) y Hidden (la capa est oculta). La visibilidad tambin puede cambiarse a
travs del panel Capas, pulsando sobre la imagen del ojo. El ojo abierto indica Visible, y el
ojo cerrado indica Oculto.

A travs de Im. fondo y Col. fondo puede indicarse una imagen o un color de fondo para
la capa.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
51
2.12.3. Comportamientos en las capas.

Los comportamientos son acciones que suceden cuando los usuarios realizan algn
evento sobre un objeto, como puede ser mover el ratn sobre una imagen, pulsar sobre un
texto, hacer doble clic sobre un mapa de imagen, etc.

Los comportamientos no existen como cdigo HTML, se programan en JavaScript.


Dreamweaver permite insertarlos a travs del panel Comportamientos, por lo que no es
necesario escribir ninguna lnea de cdigo JavaScript para programarlos.

El panel Comportamientos se puede abrir a travs del men Ventana, opcin


Comportamientos. Tambin pulsando Mays+F3.

En este panel hay que desplegar el botn pulsando sobre l, y en Mostrar eventos
para elegir una versin de la lista de navegadores. Algunos comportamientos no funcionan
para algunos navegadores, por lo que dependiendo del navegador elegido aparecern
unos u otros comportamientos posibles. Existen comportamientos que funcionan en
Internet Explorer pero no en Netscape o en Mozilla. Una vez elegido un navegador ya no
es necesario volver a elegirlo las siguientes veces que se desee insertar algn
comportamiento.

Cuando ya estableci algn navegador, ya se pueden insertar comportamientos. Lo


primero que hay que hacer es seleccionar el objeto sobre el que se ha de aplicar el
comportamiento, como puede ser una imagen, un fragmento de texto, capas, etc.

Al desplegar el botn del panel Comportamientos aparece la opcin Mostrar eventos, a


travs de la cual se haba elegido el navegador. Tambin aparece la lista de todas las
acciones posibles para el navegador elegido previamente, de entre las que se puede
seleccionar una. Segn el elemento sobre el que se desee aplicar el comportamiento, se
podrn elegir unas acciones, mientras que otras no.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
52

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
53
2.13. MENS DESPLEGABLES.
Para crear un men despegable es necesario crear una capa, dentro de la cual vamos a
insertar una tabla de una columna y una fila. A modo de ejemplo solo crearemos uno;
despus de eso crearemos otra capa un poco ms larga para poder insertar una tabla en
la cual tendr una fila y tres columnas.

En cada celda vamos a insertar una botn de flash, para hacerlo de clic en el panel de
insertar -> comn, y por ltimo, clic en el en cono de y seleccionamos botones de
flash.

En el men emergente seleccionamos un estilo y le damos un nombre al botn, el tipo de


fuente y si queremos asignarle un vnculo desde aqu, adems de todo esto tenemos que
guardar el botn en nuestro proyecto. As lo vamos hacer con cada una de las celdas de
las tablas.

Seleccionamos la capa con tres botnes y le ponemos la propiedad visibilidad (vis) en


hidden.

Seleccionamos la capa con un solo botn, a la cual le vamos a dar comportamiento dando
clic en el panel de comportamiento y seleccionamos el signo + seleccionamos mostrar
ocultar- capas, en el men emergente seleccionamos la capa que queremos que se
oculte o mostrar y damos en aceptar, se agregar un comportamiento en el panel y a
continuacin seleccionamos la accin onMouseMove como se muestra a continuacin:

Despus agregamos otro comportamiento a la misma capa y le damos que nos oculte la
capa y en el evento seleccionamos OnMouseOut. Ahora, en el panel capas
seleccionamos la capa que tenemos oculta y la posicionamos en la parte que deseemos
que aparezca.

Teniendo la capa oculta le vamos a dar comportamiento y vamos a agregar el de ocultar


mostrar capa y le damos seleccionar la capa, que es a la que le estamos dando el
comportamiento mostrar, damos aceptar en el evento OnMouseMove, y agregamos otro
evento y a la misma capa damos en ocultar y en el evento OnMouseOut.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
54
Nota: los enlaces se pueden hacer de la forma tradicional, mostrada anteriormente, o en el
cuadro de dilogo en donde seleccionamos el botn.

2.14. MARCOS.

Un marco es una zona de una ventana de navegador que puede mostrar un documento
HTML independiente de lo que se muestra en el resto de la ventana.

Un conjunto de marcos es un archivo HTML que define el diseo y las propiedades de un


grupo de marcos, que incluyen el nmero, el tamao, la ubicacin de los marcos y el URL
de la pgina que aparece inicialmente en cada marco. El archivo de conjunto de marcos
no incluye el contenido HTML que se muestra en el navegador.

Para ejemplificar estos crearemos una nueva pgina.

Los marcos los podemos localizar en la barra de insertar en la pestaa de diseo

Con la barra Insertar puede crear un conjunto de marcos y mostrar el documento actual
en uno de los nuevos marcos.

Seleccione un conjunto de marcos predefinido en el submen Insertar > HTML >


Marcos.

En la categora Diseo de la barra Insertar, haga clic en la flecha situada bajo el botn
Marcos y, a continuacin, seleccione un conjunto de marcos predefinido. En la creacin
de marcos, los conos de conjunto de marcos proporcionan una representacin visual
del conjunto de marcos aplicado al documento actual. El rea azul de un cono de
conjunto de marcos representa el documento actual y las reas blancas representan
marcos que mostrarn otros documentos.

Ya que tenemos nuestro marco es necesario guardarlo, esto nos har que guardemos
cuatro documentos, en virtud de que cada parte de la pgina actual es tratada como una
pgina independiente.

Una vez seleccionado un marco a travs del panel Marcos, pueden establecerse sus
propiedades mediante el inspector de propiedades.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
55

Cada marco tiene asignado un nombre, que puede cambiarse a travs de Nombre del
marco (parte izquierda de la imagen superior). El nombre no puede contener espacios en
blanco. En Origen aparece el nombre del documento HTML que est contenido en el
marco.

En Bordes puede elegirse si aparecer o no una lnea separando el marco del resto de
marcos. En el caso de que se muestre el borde, se puede especificar un color para ste a
travs de Color borde.

Desplaz. (Desplazamiento) indica si aparecern o no las barras de desplazamiento


cuando el documento del marco no pueda visualizarse completamente.

Si la opcin Mismo tamao est activa, indica que los usuarios no podrn variar las
medidas del marco desde el navegador.

El Ancho del margen y el Alto del margen indican la separacin que habr entre el
contenido del marco y sus bordes izquierdo-derecho y superior-inferior.

Si lo seleccionado es todo el conjunto de marcos (la pgina de marcos), el inspector de


propiedades es algo diferente.

En Bordes puede elegirse si aparecer o no una lnea separando los marcos entre s, y
puede especificarse un color para ste a travs de Color borde. Tambin es posible
establecer un grosor para el borde a travs de Ancho.

El campo Columna (o Fila dependiendo del marco elegido en Seleccin Fila Col.) sirve
para especificar el tamao del marco, que puede ser en Pixeles, Porcentaje (de la
ventana) o Relativo (proporcional al resto de marcos).

Normalmente utilizar dos marcos, uno de ellos con tamao en Pixeles, que ser el que
contenga la barra de navegacin; y el otro marco con tamao Relativo, para que se ajuste
a la ventana.

Cuando trabajamos con marcos, queremos poder cargar diferentes documentos en cada
uno de ellos. El contenido de alguno de los marcos ha de ser fijo, mientras que el de otros
ha de poder variar
I.S.C. Alejandro Guzmn Zazueta
a_zazuetag@hotmail.com
56
Ahora que ya sabe trabajar con marcos le ser ms fcil entender estos enlaces:.

_blank: Abre el documento vinculado en una ventana nueva del navegador.


_parent: Abre el documento vinculado en la ventana del marco que contiene el
vnculo o en el conjunto de marcos padre. Como ya sabe, el marco padre es el
marco en el que se encuentra el documento inicial, sobre el que se han insertado el
resto de los marcos.
_self: Es la opcin predeterminada. Abre el documento vinculado en el mismo
marco o ventana que el vnculo.
_top: Abre el documento vinculado en la ventana completa del navegador, lo cual
quiere decir que los marcos de la ventana desaparecern al abrir el vnculo en ella.
Mainfram en la pgina de la derecha mostrar el vnculo.
Left frame como su nombre lo indica ser en la izquierda.
Topframe que ser en la de arriba.

Estos tres ltimos son los nombres que Dreamweaver ha dado a cada uno de los
marcos; si nosotros cambiamos uno de ellos, es necesario seleccionar el que hayamos
dado al marco para referenciarlo hacia a l.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
57

3. LENGUAJE PHP.
3.1 FORMATO DEL CDIGO PHP

3.1.1. Delimitadores

Para facilitar la comprensin de algunos ejemplos, nicamente se indica el cuerpo


del cdigo en HTML.

PHP esta muy relacionado con el lenguaje de hipertextos HTML; tanto es as que
el cdigo PHP aparece normalmente insertado dentro de un documento HTML. El
documento PHP, una vez interpretado correctamente en el servidor genera una
pgina HTML y para diferenciar ambos lenguajes dentro de un mismo documento
se utilizan etiquetas de comienzo y final de cdigo PHP. Las etiquetas mas
habituales para delimitar los bloque de cdigo PHP son las siguientes:

<?php
echo "Esto es una instruccin PHP";
?>

Existen otros posibles formatos de etiquetas menos utilizados que el anterior, su


utilizacin ser correcta dependiendo de las caractersticas de configuracin
seleccionadas en el proceso de instalacin del intrprete de PHP:

<?
echo "Esto es una instruccin PHP";
?>

Existen otras pero en el presente manual usaremos estas.

3.1.2. Extensin de los archivos en PHP

La extensin de los archivos que se utilizan en PHP es muy importante, ya que,


dependiendo de esta, el servidor Web utilizado decide si el documento solicitado
debe ser procesado por el intrprete de PHP o no. Las extensiones que indican al
servidor HTTP que el archivo contiene cdigos PHP son las siguientes:

.php3 Cdigo PHP 3.x


.php4 Cdigo PHP4.x
Indica cdigo PHP(esta ser la que utilizaremos a la hora de
.php
guardar nuestros programas PHP)
.phps Utilizada para ver la sintaxis del cdigo resaltado en colores

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
58

3.1.3. Comentarios

Los comentarios son porciones del programa que se ponen slo para facilitar la
documentacin del cdigo, lo primero que hace el intrprete de PHP es quitar
todos los comentarios del programa. PHP ofrece la posibilidad de insertar
comentarios de tres formas distintas. La primera consiste en emplear dos
caracteres / seguidos (//), para comentar una nica lnea de cdigo. La segunda es
utilizando el carcter almohadilla #, tambin para comentar una nica lnea de
cdigo, con la diferencia que el comentario termina con el retorno de carro de la
lnea comentada o con el smbolo de finalizacin de interpretacin de PHP.

La tercer tipo de comentario es de tipo multilnea, es decir, nos permite comentar


varias lneas de cdigo fuente, de tal forma que el comienzo se indica con la
secuencia de caracteres /* y el final con */.

<?php
// Esto es un comentario de una lnea
echo "Esto es una instruccin PHP <BR>\n"; #Otro comentario
echo "Esto es otra instruccin";
/* Esto sera un
comentario de varias lneas */
?>

Hay que tener cuidado con este ultimo tipo de comentarios ya que produce
errores.

<?php
/* Este comentario /* dar unos
errores horribles en la ltima */ palabra
*/
?>

3.1.4. Fin de lnea

El fin de lnea o separacin de instrucciones se hace de la misma manera que en


C, terminando cada declaracin con un punto y coma.

La etiqueta de fin de bloque (?>) implica el fin de la declaracin, por lo tanto lo


siguiente es equivalente:

<?php
echo "Esto es un ejemplo de fin de lnea";
?>

<?php echo " Esto es un ejemplo de fin de lnea " ?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
59

3.2. SINTAXIS BSICA

3.2.1. Variables
La forma principal de almacenar valores en el medio de un programa son las
variables. Los puntos ms importantes a recordar son:

Todas las variables en PHP comienzan con el smbolo de pesos $,


seguido, al menos, por una letra o un guin bajo (_) para despus
continuar por cualquier combinacin de letras, de dgitos y de guiones
bajos.
Las variables no necesitan ser declaradas antes de ser usadas, se
crean en el instante en que son utilizadas por primera vez.
El valor de una variable es igual al valor ms recientemente asignado.
Las variables son asignadas e inicializadas con el operador de
asignacin '=', con la variable a la izquierda del operador y la expresin
a evaluar a la derecha.
Las variables no tienen un valor intrnseco, sino que toman el tipo del
ltimo valor asignado.
Las variables que se usan antes de ser asignadas tienen un valor por
defecto.
El nombre de la variable es sensible a minsculas y maysculas. Por
ejemplo $Unavariable y $unavariable son variables distintas:

<?php
$Unavariable = "Hola"; //Con 'U' mayscula
$unavariable = "Adis"; //Con 'u' minscula
echo "El contenido de Unavariable es: ", $Unavariable, "<BR>";
echo "El contenido de unavariable es: ", $unavariable, "<BR>";
$Edad = 30; //De tipo entero
echo "La edad es: ", $Edad, "<BR>";
$Edad = 25; //De tipo entero
echo "La edad es: ", $Edad, "<BR>";
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
60

3.2.2. Tipos de datos

PHP soporta los siguientes tipos:


Entero
Nmeros en punto flotante
Booleano
Cadena
Array
Objeto

El tipo de una variable normalmente no lo indica el programador; en su lugar, lo


decide PHP en tiempo de ejecucin, dependiendo del contexto en el que se utilice
esa variable.

Si se quisiese obligar a que una variable se convierta a un tipo concreto, se podra


forzar la variable o usar la funcin settype() para ello. Para ms informacin, vea la
seccin Conversin de Tipos.

3.2.2.1. Enteros

Las variables de tipo entero pueden contener nmeros enteros que varan entre un
rango de -2 billones y +2 billones y se pueden representar en formato decimal,
octal o hexadecimal. Los enteros se pueden especificar usando una de las
siguientes sintaxis:

$Entero1 = 1234; # nmero decimal


$Entero2 = -123; # un nmero negativo
$Entero3 = 0123; # nmero octal (equivalente al 83 decimal)
$Entero4 = 0x12; # nmero hexadecimal (equivalente al 18 decimal)

La funcin echo muestra por defecto siempre la informacin en decimal, a pesar


de que internamente sta se haya almacenado en la variable con un formato
distinto.

<?php
$NumeroHexa = 0xA; //En base decimal es un 10
$OtroHexa = 0xE; //En base decimal es un 14
$ResHexa = $NumeroHexa + $OtroHexa;
echo "<BR>La suma de \$NumeroHexa + \$OtroHexa es
$NumeroHexa + $OtroHexa = $ResHexa\n" ;
$NumeroOctal=011; //En base decimal es un 9: 1*8+1
echo "<BR>El nmero octal es: $NumeroOctal\n";
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
61

3.2.2.2. Nmeros en punto flotante

Los nmeros en punto flotante ("double") se pueden especificar utilizando la forma


decimal o en forma de exponente:

<?php
$Flotante1 = 1.234;
$Flotante2 = 1.2e3;
?>

Conviene destacar que PHP define estos nmeros como double, pero que dispone
de sinnimos, que son real y float.

3.2.2.3. Booleano

Una variable de este tipo es aquella que nicamente admite dos posibles valores:
True o False (en minsculas o maysculas, estos valores son aceptados en
cualquier combinacin, debido a que son constantes predefinidas). Significa,
respectivamente, cierto y falso y normalmente estas variables almacenan el
resultado de evaluar expresiones lgicas. Expresiones de este tipo pueden ser:

<?php
$VarBool = True;
echo "El valor de la variable es $VarBool <BR>";
$VarBool = (4 - 2 == 3 + 6);
//Al ser falsa la expresin se almacena false en $VarBool
?>

Por ltimo, hay que mencionar que PHP trata el valor True como un valor distinto
de cero y el valor False como cero.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
62

3.2.2.4. Cadenas

Las cadenas de caracteres se pueden especificar usando uno de dos tipos de


delimitadores.

Si la cadena est encerrada entre dobles comillas (), las variables que estn
dentro de la cadena sern expandidas (sujetas a ciertas limitaciones de
interpretacin). Como en C y en Perl, el carcter de barra invertida ("\") se puede
usar para especificar caracteres especiales:

Caracteres protegidos

Secuencia Significado
\b Espacio hacia atrs.
\f Cambio de pgina.
\n Nueva lnea.
\r Retorno de carro.
\t Tabulacin horizontal.
\\ Barra invertida.
\$ Signo del pesos.
\" Comillas dobles.
La secuencia de caracteres que coincida con la expresin regular es un carcter en
\[0-7]{1,3}
notacin octal.
La secuencia de caracteres que coincida con la expresin regular es un carcter en
\x[0-9A-Fa-f]{1,2}
notacin hexadecimal.

La segunda forma de delimitar una cadena de caracteres usa el carcter de


comilla simple ( ). Las variables no sern evaluadas dentro de una cadena entre
comillas simples ni tampoco los caracteres protegidos, simplemente se mostrarn.

Siempre se debe utilizar el mismo tipo de comilla para rodear cada cadena. Los
siguientes son ejemplos de cadenas:

Cadenas
Saludos
Saludos
Incluye dobles comillas
Incluye \dobles\ comillas

En algunos casos se puede entremezclar el uso de los dos tipos de entrecomillado


como ocurre en el penltimo ejemplo.

Incluye dobles comillas

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
63

Y el ltimo ejemplo

Incluye \dobles\ comillas

Hace uso del carcter \ para poder introducir comillas dobles dentro de un texto
entrecomillado con comillas dobles. Veamos un ejemplo:

<?php
$lenguaje="PHP";
$ver="v6";
echo "<B>Estamos \"trabajando\" con $lenguaje ($ver) </B><BR><BR>";
echo 'La variable $lenguaje contiene: ';
echo $lenguaje;
echo "<BR>La variable \$ver contiene: $ver";
?>

Las cadenas se pueden concatenar usando el operador . (punto). Ntese que el


operador + (suma) no sirve para esto.

$CadenaResultante = Cadena Uno . Cadena Dos

El resultado es una sola cadena de caracteres Cadena Uno Cadena Dos


contenida en la variable $CadenaResultante.

3.2.2.5. Arrays

Los arrays o matrices son estructuras que permiten el almacenamiento de un


conjunto de datos identificados por un ndice bajo un mismo nombre. Se puede
construir tantos ndices como se quiera, aunque el uso habitual de los arrays es en
forma de matriz unidimensional. La longitud del array se modifica de forma
dinmica siempre que le aadimos un nuevo elemento. Los arrays
multidimensionales se vern en un captulo posterior. En el caso de PHP, los
arrays pueden estar compuestos de elementos de diferente naturaleza (tipo
diferente de dato) y su primer ndice o posicin es la 0. Existen arrays especiales
denominados asociativos en los que el ndice es un valor de tipo string. La
siguiente imagen nos muestra dos posibles estructuras de arrays como un
conjunto de elementos, cada uno de los cuales tiene asociada una posicin o una
clave:

Array con ndice numrico

Cugar Ford 2.500 V6 182

0 1 2 3 4 5

Array con ndice string (Asociativo)

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
64

Cugar Ford 2.500 V6 182


Modelo Marca Fecha CC Motor Potencia

Podemos observar que en ambos arrays los ndices son de diferente naturaleza y
que pueden existir posiciones o claves sin contenido asociado. Para manejar el
array de forma global, utilizamos el nombre asignado a la variable que lo contiene
y, para manejar cada uno de sus elementos, tendremos que hacer referencia a su
posicin o clave dentro del conjunto global.

Con los conocimientos adquiridos en el manejo de Dreamweaver, puede crear en


modo de diseo la siguiente tabla.

Al inicio del cuerpo del programa cree las matrices siguientes:

<?php
$matriz1[0]="cougar";
$matriz1[1]="ford";
$matriz1[2]=""; // la tercera posicin del array esta vaca
// por eso le asignamos una cadena sin contenido
$matriz1[3]="2.500";
$matriz1[4]="V6";
$matriz1[]=182; // para aadir el ltimo elemento a una matriz
// no es necesario poner el nmero de ndice
// creamos la matriz asociativa
$matriz2['modelo']="cougar";
$matriz2['marca']="ford";
$matriz2['fecha']=null; // para marca una posicin sin contenido use <null>
$matriz2['cc']="2.500";
$matriz2['motor']="V6";
$matriz2['potencia']=182;
?>

Habiendo realizado esto, incruste despus del cdigo referente a la lnea de


matriz1

<TD BGCOLOR="yellow">matriz1</TD>

o en su caso reemplace las lneas que contengan la siguiente instruccin

<td>&nbsp;</td>

con el cdigo siguiente:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
65

<?php
echo "<TD> $matriz1[0] </TD>";
echo "<TD> $matriz1[1] </TD>";
echo "<TD> $matriz1[2] </TD>";
echo "<TD> $matriz1[3] </TD>";
echo "<TD> $matriz1[4] </TD>";
echo "<TD> $matriz1[5] </TD>";
?>

y del cdigo referente a la lnea de matriz2 lo siguiente

<?php
echo "<TD>". $matriz2['modelo'] ."</TD>";
echo "<TD>". $matriz2['marca'] ."</TD>";
echo "<TD>". $matriz2['fecha'] ."</TD>";
echo "<TD>". $matriz2['cc'] ."</TD>";
echo "<TD>". $matriz2['motor'] ."</TD>";
echo "<TD>". $matriz2['potencia'] ."</TD>";
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
66

3.2.2.6. Conversin de tipos

Dentro del lenguaje de algunos programadores existe la palabra Type Juggling,


que quiere decir, que si se asigna un valor de cadena a la variable $Var, $Var se
convierte en una cadena. Si despus se asigna un valor entero a la variable $Var,
se convierte en una variable entera.

$Var = "0"; // $Var es una cadena (ASCII 48)


$Var++; // $Var es la cadena "1" (ASCII 49)
$Var += 1; // $Var ahora es un entero (2)
$Var = $Var + 1.3; // $Var ahora es un doble (3.3)
$Var = 5 + "10 Creditos"; // $Var es entero (15)
$Var = 5 + "10 Creditos"; // $Var es entero (15)

Para explicar los dos ltimos ejemplos veremos el siguiente.

En el ejemplo se suma primeramente una cadena que contiene dos caracteres


numricos (10) con una variable $UnNumero, que contiene el valor 25 (un
entero). El intrprete detecta que se desea realizar una suma y provoca la
conversin de la cadena 25 al valor entero adecuado. A continuacin, se realiza
otra suma entre dos cadenas: una con contenido numrico y otra con la cadena
5cinco y, como se puede observar a continuacin, el intrprete convierte la
segunda en el valor entero correspondiente (5) hasta que se encuentra con un
carcter que no puede convertir (la c):

<?php
$UnaCadena = "10";
$OtraCadena = "5cinco";
$UnNumero = 25;
$Resultado = $UnaCadena + $UnNumero;
echo "Cadena 'sumada' con nmero: $Resultado <BR>\n";
$Resultado = $UnaCadena + $OtraCadena;
echo "Cadenas 'sumadas': $Resultado <BR>\n";
?>

Hay que destacar que una cadena que no contenga caracteres numricos es
evaluada como un valor cero a efecto de operar aritmticamente con ella.

En PHP se dispone de una serie de sencillas funciones que permiten obtener,


comprobar y cambiar los tipos de las variables.

La funcin gettype() recibe como parmetro una variable y devuelve una cadena
de caracteres que indica su tipo (integer, string, boolean, array, object).

<?php
$UnaCadena = "65";
$UnNumero = 25;
$Res = settype($UnaCadena, 'integer');
echo "Conversin de cadena a nmero: ", gettype($UnaCadena);
echo "<BR>\n";

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
67

$Res = settype($UnNumero, 'string');


echo "Conversin de nmero a cadena: ", gettype($UnNumero), "\n";
?>

Por otra parte, est la funcin settype(), que recibiendo de parmetros un


identificador de variable y una cadena de caracteres, fuerza el cambio de tipo de la
variable al indicado por dicha cadena.

Dicho de otra manera, este es el famoso Casting, donde se escribe entre


parntesis el tipo de dato desead, antes de la variable que se pretende convertir.

$Cadena = 3.1416 es el valor de Pi;


$aux = (integer)$Cadena; //Cadena es igual a 3(entero)
$aux = (double)$Cadena; //Cadena es igual a 3.1416(punto flotante)

Los forzados de tipo permitidos son los siguientes:

(int), (integer) - fuerza a entero (integer)


(real), (double), (float) - fuerza a doble (double)
(string) - fuerza a cadena (string)
(array) - fuerza a array (array)
(object) - fuerza a objeto (object)
<?php
$UnNumero = 3;
$OtroNumero = (int)($UnNumero / 2);
echo "El otro nmero es $OtroNumero<BR>\n";
$UnArray = (array)$UnNumero;
echo "El primer elemento del array es ", $UnArray[0], "<BR>\n";
$UnObjeto = (object)$UnNumero;
echo "El atributo escalar del objeto es ", $UnObjeto->scalar;
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
68

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
69

3.2.3. Otros componentes asociados a las variables

En PHP3, las variables siempre se asignan por valor. Esto significa que cuando se
asigna una expresin a una variable, el valor ntegro de la expresin original se
copia en la variable de destino. Esto quiere decir que, por ejemplo, despus de
asignar el valor de la variable1 a una variable2, los cambios que se efecten en la
variable1 no afectarn a la variable2.

PHP4 ofrece otra forma de asignar valores a las variables: asignar por referencia.
Esto significa que la nueva variable simplemente referencia (en otras palabras, "se
convierte en un alias de" o "apunta a") la variable original. Los cambios a la nueva
variable afectan a la original, y viceversa. Esto tambin significa que no se
produce una copia de valores; por tanto, la asignacin ocurre ms rpidamente.
De cualquier forma, cualquier incremento de velocidad se notar slo en los
bucles crticos cuando se asignen grandes arrays u objetos.

Para asignar por referencia, simplemente se antepone un ampersand (&) al


comienzo de la variable cuyo valor se est asignando (la variable fuente). Por
ejemplo, el siguiente trozo de cdigo produce la salida 'Soy variable por
Referencia' dos veces:

<?php
$var1 = 'Referencia'; // Asigna el valor 'Referencia' a $var1
$var2 = &$var1; // Referencia $var1 va $var2
$var2 = "Soy variable por $var2"; // Modifica $var2
echo $var1; // $var1 tambin se modifica.
echo $var2;
?>

Algo importante a tener en cuenta es que slo las variables con nombre pueden
ser asignadas por referencia.

<?php
$var1 = 25;
$var2 = &$var1; // Esta es una asignacin vlida.
$var2 = &(24 * 7); // Invlida; referencia una expresin sin nombre.
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
70

3.2.3.1. Variables predefinidas de Apache

PHP ofrece una gran cantidad de variables predefinidas a cualquier script que se
ejecute en su sistema. Estas variables guardan informacin relativa del entorno de
ejecucin del intrprete y del propio PHP. De todas formas, muchas de esas
variables no pueden estar completamente documentadas ya que dependen de
sobre qu servidor se est ejecutando, la versin y configuracin de dicho
servidor, y otros factores. La siguiente tabla muestra las variables de entorno ms
utilizadas. Para ver una lista de todas las variables predefinidas disponibles en una
instalacin por defecto de PHP corriendo como mdulo de un Apache se puede
usar la funcin phpinfo():

Variable Significado
SERVER_NAME Indica el nombre del equipo servidor sobre el que se ejecuta el script.
Indica el puerto del equipo servidor que usa el servidor Web para la
SERVER_PORT
comunicacin.
SERVER_SOFTWARE Indica que software esta siendo utilizado en el equipo servidor.
Contiene el puerto que utiliza el peticionario para comunicarse con el
REMOTE_PORT
servidor Web.
REMOTE_ADDR Contiene la direccin remota desde la que se realiza la peticin.
DOCUMENT_ROOT Indica el directorio raz del documento bajo el que se ejecuta el script.
Contiene la direccin de la pgina (en caso de haberla) desde la que
http_REFERER
el navegador salt a la pgina actual.

La variable global $_SERVER es un array asociativo que contiene, entre otras,


toda la informacin de las cabeceras tanto de peticin como de respuesta.

<?php
echo "Nombre del servidor: <B>$_SERVER[SERVER_NAME]</B><BR>\n";
echo "Puerto local: <B>$_SERVER[SERVER_PORT]</B><BR>\n";
echo "Software: <B>$_SERVER[SERVER_SOFTWARE]</B><BR>\n";
echo "Puerto remoto: <B>$_SERVER[REMOTE_PORT]</B><BR>\n";
echo "Direccin de conexin: <B>$_SERVER[REMOTE_ADDR]</B><BR>\n";

echo "Directorio raz: <B>$_SERVER[DOCUMENT_ROOT]</B><BR>\n";


echo "Nombre del script: <B>$_SERVER[PHP_SELF]</B><BR>\n";
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
71

3.2.3.2. Variables predefinidas de PHP

La siguiente tabla muestra algunas de las variables que PHP ofrece al programador para
facilitar su tarea:
Variable Significado

Array de argumentos pasados al script. Cuando el script se ejecuta desde la


lnea de comandos, esto da un acceso, al estilo de C, a los parmetros pasados
argv en lnea de comandos. Cuando se le llama mediante el mtodo GET, contendr
la cadena de la peticin. Requiere que est activada la directiva
register_argc_argv en el archivo de inicializacin.

Contiene el nmero de parmetros de la lnea de comandos pasados al script


argc (si se ejecuta desde la lnea de comandos). Requiere que est activada la
directiva register_argc_argv

El nombre del archivo que contiene el script que se esta ejecutando, relativo al
PHP_SELF directorio raz de los documentos. Si PHP se est ejecutando como intrprete
de lnea de comandos, esta variable no est disponible.

Un array asociativo de variables (clave, valor) pasadas al script actual mediante


cookies HTTP. Slo est disponible si el seguimiento de variables ha sido
_COOKIE
activado mediante la directiva de configuracin track_vars o la
directiva<?php_track_vars?>.

Un array asociativo de variables (clave, valor) pasadas al script actual mediante


el mtodo HTTP GET. Slo est disponible si --variable tracking-- ha sido
_GET
activado mediante la directiva de configuracin track_vars o la directiva
<?php_track_vars?>.

Un array asociativo de variables (clave, valor) pasadas al script actual mediante


el mtodo HTTP POST. Slo est disponible si variable trackingha sido
_POST
activado mediante la directiva de configuracin track_vars o la directiva
<?php_track_vars?>.

Array asociativo que contiene informacin de los archivos recibidos usando el


_POST_FILES
mtodo POST.

_ENV_VARS Array asociativo de pares (clave, valor) del entorno.


_SERVER_VARS Array asociativo de pares (clave, valor) del servidor
_SESSION_VARS Array asociativo de pares (clave, valor) de sesin

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
72

3.2.3.3. mbito de las variables

El mbito de una variable es el contexto dentro del que la variable est definida.
Cualquier variable que se use dentro de una funcin est, por defecto, limitada al
mbito local de la funcin. Por ejemplo:
<?php
$cadena1 = "Uno "; // mbito global
function Escribe(){
echo "Escribe = $cadena1 <br>\n"; // Referencia de mbito local
}
Escribe();
?>

Este script no producir salida, ya que la orden echo utiliza una versin local de la
variable $cadena1, a la que no se ha asignado ningn valor en su mbito. En
PHP, las variables globales deben ser declaradas globales dentro de la funcin si
van a ser utilizadas dentro de dicha funcin. Veamos un ejemplo:

<?php
$cadena1 = "Uno "; // mbito global
function Escribe1(){
global $cadena1;
echo "Escribe1 = $cadena1 <br>\n";
}
Escribe1();
?>

El script anterior producir la salida "Uno". Al declarar $cadena1 como global


dentro de la funcin, todas las referencias a tal variable se referirn a la versin
global. No hay lmite al nmero de variables globales que se pueden manipular
dentro de una funcin.

Un segundo mtodo para acceder a las variables desde un mbito global es


usando el array $GLOBALS propio de PHP3. El ejemplo anterior se puede
reescribir as:

<?php
$cadena1 = "Uno "; // mbito global
function Escribe3(){
echo "Escribe3 = ";
echo $GLOBALS["cadena1"], "<BR>\n";
}
Escribe3();
?>

El array $GLOBALS es un array asociativo con el nombre de la variable global


como clave y los contenidos de dicha variable como el valor del elemento del
array.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
73

Otra carcterstica importante del mbito de las variables es la variable static. Una
variable esttica existe slo en el mbito local de la funcin, pero no pierde su
valor cuando la ejecucin del programa abandona este mbito. Consideremos el
siguiente ejemplo:

<?php
function Test(){
$Var = 0;
echo $Var;
$Var++;
}

Test();
?>

Esta funcin tiene poca utilidad ya que cada vez que es llamada asigna a la
variable $Var el valor 0 y representa un "0". La sentencia $Var++, que incrementa
la variable, no sirve para nada, ya que en cuanto la funcin termina la variable
$Var desaparece. Para hacer una funcin til para contar, que no pierda la pista
del valor actual del conteo, la variable $Var debe declararse como esttica:

<?php
function Test(){
static $Var = 0;
echo $Var;
$Var++;
}

Test();
?>

Ahora, cada vez que se llame a la funcin Test(), se representar el valor de $Var
y se incrementar.

Las variables estticas tambin proporcionan una forma de manejar funciones


recursivas. Una funcin recursiva es la que se llama a s misma. Se debe tener
cuidado al escribir una funcin recursiva, ya que puede ocurrir que se llame a s
misma indefinidamente. Hay que asegurarse de implementar una forma adecuada

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
74

de terminar la recursin. La siguiente funcin cuenta recursivamente hasta 10,


usando la variable esttica $count para saber cundo parar:

<?php
function Test()
{
static $count = 0;
$count++;
echo $count;
if ($count < 10)
{
Test ();
}
}

Test();
?>

3.2.3.4. Variables de variables

PHP tiene la posibilidad de incorporar variables especiales cuyos contenidos son


nombre de otras variables. Esto resulta muy til cuando, durante la ejecucin de
un determinado programa, existen instrucciones en las que se usen distintos
juegos de variables o se quiera generar cdigo dinmicamente. Una variable
normal se establece con una sentencia como:

<?php
$Var = "Hola";
?>

Una variable de variable toma el valor de una variable y lo trata como el nombre
de una variable. En el ejemplo anterior, Hola, se puede usar como el nombre de
otra variable utilizando dos signos de pesos ($$).

<?php
$$Var = "Mundo";
?>

En este momento se han definido y almacenado dos variables en el rbol de


smbolos de PHP: $Var, que contiene "Hola", y $Hola que contiene "Mundo".

Es ms, la sentencia:

<?php
echo "$Var ${$Var}";
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
75

produce el mismo resultado que:

<?php
echo "$Var $Hola";
?>

Ambas producen el resultado Hola Mundo:

Para usar variables de variables con matrices, hay que resolver un problema de
ambigedad. Si se escribe $$Var[1] el intrprete necesita saber si nos referimos a
utilizar $Var[1] como una variable, o si se pretenda utilizar $$Var como variable y
el ndice [1] como ndice de dicha variable. La sintaxis para resolver esta
ambigedad es:

En $Var[1] como una variable ${$Var[1]}

En $$Var como variable y el ndice [1] ${$Var}[1]

3.2.3.5. Variables de Formulario

En PHP se puede tener acceso directo a los valores introducidos por un usuario
en los campos de un formulario de una pgina Web.

Lo que el programador obtiene es un conjunto de variables cuyos nombres se


corresponden con los definidos en el formulario para los distintos campos.

<input name="user" type="text" id="user" size="20">

En este caso el atributo NAME contiene la futura variable llamada $user.

Para hacerlo ms claro veremos el siguiente ejemplo. formularios.php contiene


un formulario que solicita los datos de Usuario y Password, y a travs de la
ejecucin de un botn submit, provoca la ejecucin de dicho formulario
llamndose a si mismo. Al presionar el botn guarda en la variable $user el valor
que se teclee en la caja de texto 1 (la cadena aceptada es Usuario1) y en la
variable $psw el valor que contenga la siguiente caja (la cadena aceptada es
nuevo)
<body>
<?php
if(!$_POST)
{
?>

<center><h1>Teclea tu Nombre de Usuario<br>y tu Contrasea</h1></center>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
76

<table width="800" border="0" align="center" cellpadding="0" cellspacing="0">


<!--DWLayoutTable-->
<tr>
<td width="192" height="92">&nbsp;</td>
<td width="147">&nbsp;</td>
<td width="204">&nbsp;</td>
<td width="257">&nbsp;</td>
</tr>
<tr>
<td height="106"></td>
<td rowspan="2" valign="top"><div align="right">USUARIO : <br>
<br>
PASSWORD : <br>
<br>
</div></td>
<td valign="top"><form action="" method="post"
enctype="application/x-www-form-urlencoded" name="form1">
<input name="user" type="text" id="user" size="20">
<br>
<br>
<input name="psw" type="password" id="psw">
<br>
<br>
<input type="submit" name="Submit" value="Enviar">
<br>
</form></td>
<td></td>
</tr>
<tr>
<td height="13"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="398">&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<?php
}
else
{ if(($_POST['user'] == 'Usuario1') && ($_POST['psw'] == 'nuevo'))
{
echo "<center> Bienvenido $_POST[user] ";
echo "<br><hr>";
foreach($_POST as $clave => $valor)
echo "<i>$clave</I> = $valor <br>";

echo "</center>";
}
else
{
echo "<center><h1>Acceso denegado nombre o contrasea
Valido<br> en la base de datos</center></h1>";

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
77

echo "<pre><br><h2><a href='javascript:history.go


(-1)'>Volver<h2></a></h2></pre>";
}
}
?>
</body>

Donde tiene la siguiente estructura.

Como se puede observar, el programa escribe el cdigo HTML para generar la


tabla, y cada vez que necesita un dato de los que ha introducido el usuario,
efecta una llamada al intrprete solicitando la escritura del contenido de la
variable cuyo nombre es el mismo que el del campo del formulario (echo $user
para el contenido del campo user).

Y se genera el siguiente resultado:

Cuando se enva un formulario, tambin es posible usar una imagen en vez del
botn submit estndar con una etiqueta como:

<input type=image src="image.gif" name="sub">

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
78

Cuando el usuario hace click en cualquier parte de la imagen, el formulario que la


acompaa se transmitir al servidor con dos variables adicionales, sub_x y sub_y.
Estas contienen las coordenadas del click del usuario dentro de la imagen. Los
ms experimentados pueden notar que los nombres de variable enviados por el
navegador contienen un guin en vez de un subrayado (guin bajo), pero PHP
convierte el guin en subrayado automticamente.

3.2.3.6. Funciones para variables

PHP proporciona un conjunto de funciones de gran utilidad al tratar con variables.

Funcin Descripcin

Devuelve el tipo de dato pasado como parmetro, pudiendo devolver


gettype (variable)
como valor: integer, float, string, array, class, object y unknown type.

Establece el tipo de dato a guardar en una variable. Tiene dos


argumentos: el nombre de la variable y el tipo que se quiere
settype (variable, tipo) establecer. Con esta funcin podemos realizar conversiones de un tipo
de datos a otro. Devolver true si ha tenido xito; en caso contrario
devolver false.

Indica si una variable ha sido inicializada con un valor, en cuyo caso


isset (variable)
devuelve true y, en caso contrario devuelve false.

Destruye una variable liberando los recursos dedicados a dicha


unset (variable) variable. Es necesario indicar como parmetro el nombre de la variable
a destruir.

Devuelve valor true si la variable an no ha sido inicializada, o bien,


empty (variable) tiene un valor igual a 0 o es una cadena vaca y, en caso contrario
devuelve false.

Ejemplo:
<?php
echo '$cadena ';
echo (isset($cadena))?'est ':'no est ';
echo "inicializada<BR>";
echo (empty($cadena))?'$cadena est vaca':$cadena;
echo "<BR><BR>";
$cadena="";
echo '$cadena ';
echo (isset($cadena))?'est ':'no est ';
echo "inicializada<BR>";
echo (empty($cadena))?'$cadena est vaca':$cadena;
echo "<BR><BR>";

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
79

$cadena="3.1416 es el valor de PI";


echo '$cadena ';
echo (isset($cadena))?'est ':'no est';
echo "inicializada<BR>";
echo (empty($cadena))?'cadena est vaca':$cadena;
echo "<BR><BR>";
unset($cadena);
echo '$cadena ';
echo (isset($cadena))?'est ':'no est';
echo "inicializada<BR>";
echo (empty($cadena))?'cadena est vaca':$cadena;
?>

El resultado de visualizar el ejemplo anterior se muestra en la siguiente imagen:

Dado que PHP determina los tipos de las variables y los convierte (generalmente)
segn necesita, no siempre resulta obvio de qu tipo es una variable dada en un
momento concreto. PHP incluye varias funciones que descubren de qu tipo es
una variable y son las siguientes.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
80

Funcin Descripcin

is_int (variable)
Devuelven true si la variable pasada como argumento es de tipo
is_integer (variable)
integer; en caso contrario devuelven false.
is_long (variable)

is_float (variable)
Devuelven true si la variable pasada como argumento es de tipo float;
is_real (variable)
en caso contrario devuelven false.
is_double (variable)

Devuelve true si la variable pasada como argumento es un nmero o


is_numeric (variable)
una cadena numrica; en caso contrario devuelven false.

Devuelve true si la variable pasada como argumento es de tipo lgico;


is_bool (variable)
en caso contrario devuelven false.

Devuelve true si la variable pasada como argumento es de tipo array;


is_array (variable)
en caso contrario devuelven false.

Devuelve true si la variable pasada como argumento es de tipo string;


is_string (variable)
en caso contrario devuelven false.

Devuelve true si la variable pasada como argumento es de tipo object;


is_object (variable)
en caso contrario devuelven false.

Ejemplo:

<?php
$cadena="Hola a todos";
echo 'La variable $cadena contiene <B>'.$cadena.'</B><BR><BR>';
echo 'La variable $cadena ';
echo (is_integer($cadena))?'es ':'no es ';
echo 'de tipo entero <BR>';
echo 'La variable $cadena ';
echo (is_float($cadena))?'es ':'no es ';
echo 'de tipo real <BR>';
echo 'La variable $cadena ';
echo (is_string($cadena))?'es ':'no es ';
echo 'una cadena de caractes <BR>';
?>

El resultado se muestra en la siguiente ventana:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
81

intval (variable, base), floatval (variable), strval (variable): estas funciones sirven
para realizar conversiones de tipos (casting), de modo que convierten a integer,
float o string, respectivamente, el valor de la variable que se le pasa como
parmetro. Estas funciones no pueden utilizarse para convertir arrays u objetos.
En particular la funcin intval () puede recibir adems un segundo parmetro que
representa la base a utilizar en la conversin (10-decimal, 8-octal y 16-
hexadecimal), tomando por defecto la base 10 de los nmeros decimales.

Ejemplo:
<?php
$cadena=" 38E6";
echo "El valor de \$cadena es: <b> $cadena </b><br><br>";
$aux=intval($cadena);
echo "El resultado de convertirla en entero es: $aux <br>";
$aux=intval($cadena,8);
echo "El resultado de convertirla en entero octal es: $aux <br>";
$aux=intval($cadena,16);
echo "El resultado de convertirla en entero hexadecimal es: $aux <br>";
$aux=floatval($cadena);
echo "El resultado de convertirla en float es: $aux <br>";
$aux=strval($cadena);
echo "El resultado ede convertirla en cadena es: $aux <br>";
?>

El resultado se muestra en la siguiente ventana:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
82

3.2.4. Constantes

Una constante es un identificador para expresar un valor simple.


Como el nombre sugiere, este valor no puede variar durante la ejecucin
del script.
Es sensible a maysculas
Por convencin, los identificadores de constantes suelen declararse en
maysculas.
El nombre de una constante sigue las mismas reglas que una variable en
PHP solo que no se necesita anteponer el carcter de pesos ($).
El alcance de una constante es global.
Solo se puede definir como constantes valores escalares (boolean,
integer, float y string ).
Una vez definida, no puede ser modificada ni eliminada.

Se puede definir una constante usando la funcin

define(constante, valor)

<?php
define(PI, 3.1416);
echo El valor de PI es , PI;
?>

Para obtener el valor de una constante solo es necesario especificar su nombre.


En el caso de que queramos expresarla de forma dinmica se utiliza la funcin:

constant(constante)

Para comprobar la existencia de una constante se usa la funcin:

defined(constante)

3.2.4.1. Constantes predefinidas de PHP

PHP ofrece un largo nmero de constantes predefinidas a cualquier script en


ejecucin. Muchas de estas constantes, sin embargo, son creadas por diferentes
extensiones, y solo estarn presentes si dichas extensiones estn disponibles,
bien por carga dinmica o porque has sido compiladas. Para obtener todas las
constantes predefinidas se usa la funcin get_defined_constants(). Algunas de
estas constantes son:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
83

Constante Descripcin
Nombre del archivo de comandos o archivo que est siendo
__FILE__
interpretado.
__LINE__ Nmero de lnea dentro del archivo que est siendo interpretado.
PHP_VERSION Cadena que representa la versin del intrprete.

Cadena con el nombre del sistema operativo en el que se esta


PHP_OS
ejecutando el intrprete de PHP.

TRUE Verdadero.
FALSE Falso

Informacin sobre errores distintos a los de interpretacin del cual


E_ERROR
no es posible recuperarse.

Informa que el intrprete encontr una sintaxis invlida en el archivo


E_PARSE
de comandos. Finaliza la ejecucin.

Informa que se produjo algo incorrecto que puede provenir o no de


E_NOTICE
un error. La ejecucin contina.

E_WARNING Denota un error que no impide la ejecucin.


E_ALL Conjunto con todos los errores que se han producido.

Las constantes __FILE__ y __LINE__ son muy tiles en la programacin, puesto


que se puede generar un programa que ante un error nos indique en qu archivo y
lnea se ha producido.

<?php
echo "Ejecuto la versin de PHP: ",PHP_VERSION,"<BR>\n";
echo "El sistema operativo es: ",PHP_OS,"<BR>\n";
echo "Estoy en el archivo <B>",__FILE__," lnea ",__LINE__,"</B>";
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
84

3.2.5. Expresiones

Se denomina as a cualquier combinacin de constantes, variables, operadores y


funciones sintcticas y semnticamente correctas. Las expresiones, al ser
evaluadas por PHP, producen valores que pueden ser empleados en la
programacin de un script.

Hay muchos tipos de expresiones y todas ellas pueden ser evaluadas. As, un
valor concreto, sea un entero, una cadena de caracteres u otro tipo, ser una
expresin, ya que al ser evaluado dar como resultado su propio valor. Tambin
una asignacin es una expresin, ya que sta produce siempre como resultado de
la evaluacin el valor que ha sido asignado. La expresin:

$MiVar = 5:

produce como resultado de la evaluacin el valor 5.

Un tipo muy comn de expresiones son las de comparacin, que dan como
resultado los valores lgicos TRUE y FALSE, dependiendo de si la comparacin,
al ser evaluada, resulta ser cierta o falsa. Una expresin de esta clase sera:

5 + 3 == 6 +1 // que, evidentemente es falsa.

Y el resultado de su evaluacin puede ser asignado a una variable:

$MiVar = 5 + 3 == 6 +1; // equivale a $MiVar = false

Por ltimo, hay que destacar que al evaluar una variable numrica, si sta
contiene cualquier valor distinto de cero, el resultado ser TRUE, mientras que si
dicho valor es cero, el resultado ser FALSE. Evaluar una cadena vaca genera
como resultado FALSE, y cualquier otra cadena, TRUE.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
85

3.2.6. Operadores

3.2.6.1. Operadores Aritmticos

Los diferentes tipos de operadores de que dispone PHP son:

Operador Ejemplo Descripcin


+ 3+5 Suma entre dos nmeros.
- 7-4 Diferencia entre dos nmeros
* 2*3 Multiplicacin entre dos nmeros
/ 24 / 8 Cociente entre dos nmeros
Mdulo, resto de la divisin entera entre
% 7%2
dos nmeros

Ejemplo:
<?php
$Num1 = 11;
$Num2 = 3;
$Cociente = (int)($Num1 / $Num2);
$Resto = $Num1 % $Num2;
echo "El cociente de $Num1 entre $Num2 es <B>$Cociente</B><BR>\n";
echo "El resto de $Num1 entre $Num2 es <B>$Resto</B><BR>\n";
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
86

3.2.6.2. Operadores de Asignacin

El operador bsico de asignacin es "=". A primera vista podras pensar que es el


operador de comparacin "igual que". Pero no. Realmente significa que el
operando de la izquierda toma el valor de la expresin a la derecha, (esto es,
"toma el valor de").

Variable = expresin

El valor de una expresin de asignacin es el propio valor asignado. Esto es, el


valor de "$Var = 3" es 3. Esto permite hacer cosas curiosas como

$Var = ($b = 4) + 5; // ahora $a es igual a 9, y $b vale 4.

Adems del operador bsico de asignacin, existen los "operadores combinados"


para todas las operaciones aritmticas y de cadenas que sean binarias. Este
operador combinado te permite, de una sola vez, usar una variable en una
expresin y luego establecer el valor de esa variable al resultado de la expresin.

Operador Ejemplo Descripcin


= $Var = 7 Asignacin de un valor a una variable
+= $A += 5 Equivale a $A = $A + 5
-= $A -= 5 Equivale a $A = $A 5
*= $A *= 5 Equivale a $A = $A * 5
/= $A /= 5 Equivale a $A = $A / 5
%= $A %= 5 Equivale a $A = $A % 5
.= $B .= Cadena Equivale a $B = $B . Cadena (Concatenacin)

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
87

3.2.6.3. Operadores de Comparacin

Los operadores de comparacin, como su nombre indica, permiten comparar dos


valores.

Tabla de Operadores de Comparacin

Ejemplo Nombre Resultado


$A == $B Igualdad True si $A es igual a $B.

True si $A es igual a $B y si son del mismo tipo (slo


$A === $B Identidad
PHP4)

$A != $B Desigualdad True si $A y $B son diferentes.


$A !== $B No identidad True si $A y $B no son idnticos.
$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.

Otro operador condicional es el operador "?:" (o ternario), que funciona como en C


y otros muchos lenguajes.

(expr1) ? (expr2) : (expr3);

La expresin toma el valor expr2 si expr1 se evala a cierto, y expr3 si expr1 se


evala a falso.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
88

3.2.6.4. Operadores de incremento/decremento

Operador Ejemplo Descripcin


++ ++ $Var Preincremento
$Var ++ Postincremento
-- -- $Var Predecremento
$Var -- Postdecremento

La utilizacin de los operadores de incremento o decremento implica la suma o


resta de una unidad sobre el nmero que se aplique.

Estos operadores tienen una carcterstica propia que se refiere al momento en


que se realiza el incremento o decremento del valor. Esta propiedad vara segn
se escriba el operador como prefijo o sufijo de la variable sobre la que se aplica.

<?php
$UnNumero = 10;
$OtroNumero = 10;
$UnaVar = ++$UnNumero;
echo "UnaVar es $UnaVar<BR>\n";
echo "UnNumero es ahora $UnNumero<BR>\n";
$OtraVar = $OtroNumero++;
echo "OtraVar es $OtraVar<BR>\n";
echo "OtroNumero es $OtroNumero<BR>\n";
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
89

En el caso de que an no quede claro los incrementos y decrementos, aqu est


este otro ejemplo:

<?php
echo "<h3>Postincremento</h3>";
$a = 5;
echo "Debera ser 5: " . $a++ . "<br>\n";
echo "Debera ser 6: " . $a . "<br>\n";

echo "<h3>Preincremento</h3>";
$a = 5;
echo "Debera ser 6: " . ++$a . "<br>\n";
echo "Debera ser 6: " . $a . "<br>\n";

echo "<h3>Postdecremento</h3>";
$a = 5;
echo "Debera ser 5: " . $a-- . "<br>\n";
echo "Debera ser 4: " . $a . "<br>\n";

echo "<h3>Predecremento</h3>";
$a = 5;
echo "Debera ser 4: " . --$a . "<br>\n";
echo "Debera ser 4: " . $a . "<br>\n";
?>

3.2.6.5. Operadores Lgicos

Tabla de Operadores Lgicos

Ejemplo Nombre Resultado


$A and $B Y True si tanto $A como $B son ciertos.
$A or $B O True si $A o $B son ciertos.

$A xor $B O exclusiva True si $A es cierto o $B es cierto, pero no ambos a la vez.

! $A Negacin True si $A no es cierto.


$A && $B Y True si tanto $A como $B son ciertos.
$A || $B O True si $A o $B son ciertos.

La razn de las dos variaciones de "Y" y "O" es que operan con distinta
precedencia. (Ver precedencia de operadores)

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
90

3.2.6.6. Otros Operadores


Operador Ejemplo Descripcin
. $A . $B Concatena las cadenas de $A y $B.
Ejecuta desde el SO el comando que haya entre los acentos
` `dir>mifich.txt`
graves.

3.2.6.7. Precedencia de Operadores

La precedencia de operadores especifica cmo se agrupan las expresiones. Por


ejemplo, en la expresin 1 + 5 * 3, la respuesta es 16 y no 18 porque el operador
de multiplicacin ("*") tiene una mayor precedencia que el de adicin ("+").

La siguiente tabla lista la precedencia de operadores, indicndose primero los de


mayor precedencia.

Tabla de Precedencia de Operadores

Operador
! ~ ++ -- (casting)

/ * %

+ - .

<< >>

< <= > >=

== != === !==

&

&&

||

?:

= += -= *= /= .= %= &= ^= ~= <<= >>=

or, xor, and

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
91

3.3. ESTRUCTURAS DE CONTROL

3.3.1 if

La construccin if es una de las ms importantes caractersticas de muchos


lenguajes, incluido PHP. Permite la ejecucin condicional de fragmentos de
cdigo. PHP carcteriza una estructura if que es similar a la de C.

if (expr)
sentencia

Como se describe en la seccin sobre expresiones, expr se evala a su valor


condicional. Si expr se evala como TRUE, PHP ejecutar la sentencia, y si se
evala como FALSE - la ignorar.

El siguiente ejemplo mostrara a es mayor que b si $a fuera mayor que $b:

if ($a > $b)


echo "a es mayor que b";

A menudo, se desea tener ms de una sentencia ejecutada de forma condicional.


Por supuesto, no hay necesidad de encerrar cada sentencia con una clusula if.
En vez de eso, se pueden agrupar varias sentencias en un grupo de sentencias.
Por ejemplo, este cdigo mostrara a es mayor que b si $a fuera mayor que $b, y
entonces asignara el valor de $a a $b:

if ($a > $b) {


echo "a es mayor que b";
$b = $a;
}

Las sentencias if se pueden anidar indefinidamente dentro de otras sentencias if,


lo cual proporciona una flexibilidad completa para ejecuciones condicionales en las
diferentes partes de tu programa.

3.3.2. else

A menudo queremos ejecutar una sentencia si se cumple una cierta condicin, y


una sentencia distinta si la condicin no se cumple. Esto es para lo que sirve else.
else extiende una sentencia if para ejecutar una sentencia en caso de que la
expresin en la sentencia if se evale como FALSE. Por ejemplo, el siguiente
cdigo mostrara a es mayor que b si $a fuera mayor que $b, y a NO es mayor que
b en cualquier otro caso:

if ($a > $b) {


echo "a es mayor que b";
} else {
echo "a NO es mayor que b"; }

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
92

La sentencia else se ejecuta solamente si la expresin if se evala como FALSE,


y si hubiera alguna expresin elseif - slo si se evaluaron tambin a FALSE.

3.3.3. elseif

Como su nombre sugiere, es una combinacin de if y else. Como else, extiende


una sentencia if para ejecutar una sentencia diferente en caso de que la expresin
if original se evala como FALSE. No obstante, a diferencia de else, ejecutar esa
expresin alternativa solamente si la expresin condicional elseif se evala como
TRUE. Por ejemplo, el siguiente cdigo mostrara a es mayor que b, a es igual a b
o a es menor que b:

if ($a > $b) {


echo "a es mayor que b";
} elseif ($a == $b) {
echo "a es igual que b";
} else {
echo "a es mayor que b";
}

Puede haber varios elseifs dentro de la misma sentencia if. La primera expresin
elseif (si hay alguna) que se evale como TRUE se ejecutara. En PHP, tambin
se puede escribir 'else if' (con dos palabras) y el comportamiento sera idntico al
de un 'elseif' (una sola palabra). El significado sintctico es ligeramente distinto (si
estas familiarizado con C, es el mismo comportamiento) pero la lnea bsica es
que ambos resultaran tener exactamente el mismo comportamiento.

La sentencia elseif se ejecuta slo si la expresin if precedente y cualquier


expresin elseif precedente se evalan como FALSE, y la expresin elseif actual
se evala como TRUE.

3.3.4. Sintaxis Alternativa de Estructuras de Control

PHP ofrece una sintaxis altenativa para alguna de sus estructuras de control; a
saber, if, while, for, y switch. En cada caso, la forma bsica de la sintaxis
alternativa es cambiar abrir-llave por dos puntos (:) y cerrar-llave por endif;,
endwhile;, endfor;, or endswitch;, respectivamente. La sintaxis alternativa se aplica
a else y tambin a elseif. La siguiente es una estructura if con elseif y else en el
formato alternativo:

if ($a == 5):
echo "a es igual a 5";
echo "...";
elseif ($a == 6):
echo "a es igual a 6";
echo "!!!";
else:
echo "a no es ni 5 ni 6";
endif;

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
93

3.3.5. while

Los bucles while son los tipos de bucle ms simples en PHP. Se comportan como
su contrapartida en C. La forma bsica de una sentencia while es:

while (expr) sentencia

El significado de una sentencia while es simple. Le dice a PHP que ejecute la(s)
sentencia(s) anidada(s) repetidamente, mientras la expresin while se evale
como TRUE. El valor de la expresin es comprobado cada vez al principio del
bucle, as que incluso si este valor cambia durante la ejecucin de la(s)
sentencia(s) anidada(s), la ejecucin no parar hasta el fin de la iteracin (cada
vez que PHP ejecuta las sentencias en el bucle es una iteracin). A veces, si la
expresin while se evala como FALSE desde el principio de todo, la(s)
sentencia(s) anidada(s) no se ejecutarn ni siquiera una vez.

Como con la sentencia if, se pueden agrupar mltiples sentencias dentro del
mismo bucle while encerrando un grupo de sentencias con llaves, o usando la
sintaxis alternativa:

while (expr): sentencia ... endwhile;

Los siguientes ejemplos son idnticos, y ambos imprimen nmeros del 1 al 10:

/* ejemplo 1 */

$i = 1;
while ($i <= 10) {
echo $i++; /* el valor impreso sera
$i antes del incremento
(post-incremento) */
}

/* ejemplo 2 */

$i = 1;
while ($i <= 10):
echo $i;
$i++;
endwhile;

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
94

3.3.6 do..while

Los bucles do..while son muy similares a los bucles while, excepto que las
condiciones se comprueban al final de cada iteracin en vez de al principio. La
principal diferencia frente a los bucles regulares while es que se garantiza la
ejecucin de la primera iteracin de un bucle do..while (la condicin se comprueba
slo al final de la iteracin), mientras que puede no ser necesariamente ejecutada
con un bucle while regular (la condicin se comprueba al principio de cada
iteracin, si esta se evala como FALSE desde el principio la ejecucin del bucle
finalizar inmediatamente).

Hay una sola sintaxis para los bucles dowhile:

$i = 0;
do {
echo $i;
} while ($i>0);

El bucle de arriba se ejecutara exactamente una sola vez, despus de la primera


iteracin, cuando la condicin se comprueba, se evala como FALSE ($i no es
ms grande que 0) y la ejecucin del bucle finaliza.

Los usuarios avanzados de C pueden estar familiarizados con un uso distinto del
bucle do...while, para permitir parar la ejecucin en medio de los bloques de
cdigo, encapsulandolos con do...while(0), y usando la sentencia break. El
siguiente fragmento de cdigo demuestra esto:

do {
if ($i < 5) {
echo "i no es lo suficientemente grande";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
echo "i es correcto";
...procesa i...

} while(0);

No se preocupes si no entiende esto completamente o en absoluto. Se pueden


codificar archivos de comandos e incluso archivos de comandos potentes sin usar
esta 'propiedad'.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
95

3.3.7. for
Los bucles for son los bucles ms complejos en PHP. Se comportan como su
contrapartida en C. La sintaxis de un bucle for es:

for (expr1; expr2; expr3) sentencia

La primera expresin (expr1) se evala (ejecuta) incondicionalmente una vez al


principio del bucle.

Al comienzo de cada iteracin, se evala expr2 . Si se evala como TRUE, el


bucle contina y las sentencias anidadas se ejecutan. Si se evala como FALSE,
la ejecucin del bucle finaliza.

Al final de cada iteracin, se evala (ejecuta) expr3.

Cada una de las expresiones puede estar vaca. Que expr2 est vaca significa
que el bucle debera correr indefinidamente (PHP implicitamente lo considera
como TRUE, al igual que C). Esto puede que no sea tan intil como se podra
pensar, puesto que a menudo se quiere salir de un bucle usando una sentencia
break condicional en vez de usar la condicin de for.

Considera los siguientes ejemplos. Todos ellos muestran nmeros del 1 al 10:

/* ejemplo 1 */
for ($i = 1; $i <= 10; $i++) {
echo $i;
}

/* ejemplo 2 */
for ($i = 1;;$i++) {
if ($i > 10) {
break;
}
echo $i;
}

/* ejemplo 3 */
$i = 1;
for (;;) {
if ($i > 10) {
break;
}
echo $i;
$i++;
}

/* ejemplo 4 */
for ($i = 1; $i <= 10; echo $i, $i++) ;

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
96

Por supuesto, el primer ejemplo parece ser el mas elegante (o quizs el cuarto),
pero uno puede descubrir que ser capaz de usar expresiones vacas en bucles for
resulta til en muchas ocasiones.

PHP tambin soporta la "sintaxis de dos puntos" alternativa para bucles for.

for (expr1; expr2; expr3): sentencia; ...; endfor;

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
97

3.3.8 foreach

PHP4 (PHP3 no) incluye una construccin foreach, tal como perl y algunos otros
lenguajes. Esto simplemente da un modo fcil de iterar sobre arrays. Hay dos
sintaxis; la segunda es una extensin menor, pero til de la primera:

foreach(expresion_array as $value) sentencia


foreach(expresion_array as $key => $value) sentencia

La primera forma recorre el array dado por expresion_array. En cada iteracin, el


valor del elemento actual se asigna a $value y el puntero interno del array se
avanza en una unidad (as en el siguiente paso, se estar mirando el elemento
siguiente).

La segunda manera hace lo mismo, salvo que la clave del elemento actual ser
asignada a la variable $key en cada iteracin.

Nota: Cuando foreach comienza su primera ejecucin, el puntero interno a la lista


(array) se reinicia automticamente al primer elemento del array. Esto significa que
no se necesita llamar a reset() antes de un bucle foreach.

Nota: Hay que tener en cuenta que foreach con una copia de la lista (array)
especificada y no la lista en si, por ello el puntero de la lista no es modificado
como en la construccin each.

Puede haber observado que las siguientes son funcionalidades idnticas:

reset( $arr );
while( list( , $value ) = each( $arr ) ) {
echo "Valor: $value<br>\n";
}

foreach( $arr as $value ) {


echo "Valor: $value<br>\n";
}
Las siguientes tambin son funcionalidades idnticas:

reset( $arr );
while( list( $key, $value ) = each( $arr ) ) {
echo "Key: $key; Valor: $value<br>\n";
}

foreach( $arr as $key => $value ) {


echo "Key: $key; Valor: $value<br>\n";
}

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
98

Algunos ejemplos ms para demostrar su uso:


/* foreach ejemplo 1: slo valor*/
$a = array(1, 2, 3, 17);

foreach($a as $v) {
echo "Valor actual de \$a: $v.\n";
}

/* foreach ejemplo 2: valor (con clave impresa para ilustrar) */


$a = array(1, 2, 3, 17);

$i = 0; /* slo para propsitos demostrativos */

foreach($a as $v) {
echo "\$a[$i] => $k.\n";
}

/* foreach ejemplo 3: clave y valor */


$a = array(
"uno" => 1,
"dos" => 2,
"tres" => 3,
"diecisiete" => 17
);

foreach($a as $k => $v) {


echo "\$a[$k] => $v.\n";
}

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
99

3.3.9. switch

La sentencia switch es similar a una serie de sentencias IF en la misma expresin.


En muchas ocasiones, se quiere comparar la misma variable (o expresin) con
muchos valores diferentes, y ejecutar una parte de cdigo distinta dependiendo de
a qu valor es igual. Para ello sirve la sentencia switch.

Los siguientes dos ejemplos son dos modos distintos de escribir la misma cosa,
uno usa una serie de sentencias if, y el otro usa la sentencia switch:

if ($i == 0) { switch ($i) {


echo "i es igual a 0"; case 0:
} echo "i es igual a 0";
if ($i == 1) { break;
echo "i es igual a 1"; case 1:
} echo "i es igual a 1";
if ($i == 2) { break;
echo "i es igual a 2"; case 2:
} echo "i es igual a 2";
break;
}

Es importante entender cmo se ejecuta la sentencia switch para evitar errores. La


sentencia switch ejecuta lnea por lnea (realmente, sentencia a sentencia). Al
comienzo, no se ejecuta cdigo. Slo cuando se encuentra una sentencia case
con un valor que coincide con el valor de la expresin switch PHP comienza a
ejecutar las sentencias. PHP contina ejecutando las sentencias hasta el final del
bloque switch, o la primera vez que vea una sentencia break. Si no se escribe una
sentencia break al final de una lista de sentencias case, PHP seguir ejecutando
las sentencias del siguiente case. Por ejemplo:

switch ($i) {
case 0:
echo "i es igual a 0";
case 1:
echo "i es igual a 1";
case 2:
echo "i es igual a 2";
}

Aqu, si $i es igual a 0, PHP ejecutara todas las sentencias echo. Si $i es igual a


1, PHP ejecutara las ltimas dos sentencias echo y slo si $i es igual a 2, se
obtendra la conducta 'esperada' y solamente se mostrara 'i es igual a 2'. As, es
importante no olvidar las sentencias break (incluso aunque pueda querer evitar
escribirlas intencionadamente en ciertas circunstancias).

En una sentencia switch, la condicin se evala slo una vez y el resultado se


compara a cada sentencia case. En una sentencia elseif, la condicin se evala

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
100

otra vez. Si tu condicin es ms complicada que una comparacin simple y/o est
en un bucle estrecho, un switch puede ser ms rpido.

La lista de sentencias de un case puede tambin estar vaca, lo cual simplemente


pasa el control a la lista de sentencias del siguiente case.

switch ($i) {
case 0:
case 1:
case 2:
echo "i es menor que 3, pero no negativo";
break;
case 3:
echo "i es 3";
}

Un case especial es el default case. Este case coincide con todo lo que no
coincidan los otros case. Por ejemplo:

switch ($i) {
case 0:
echo "i es igual a 0";
break;
case 1:
echo "i es igual a 1";
break;
case 2:
echo "i es igual a 2";
break;
default:
echo "i no es igual a 0, 1 o 2";
}

La expresin case puede ser cualquier expresin que se evale a un tipo simple,
es decir, nmeros enteros o de punto flotante y cadenas de texto. No se pueden
usar aqu ni arrays ni objetos a menos que se conviertan a un tipo simple.

La sintaxis alternativa para las estructuras de control est tambin soportada con
switch.
switch ($i):
case 0:
echo "i es igual 0";
break;
case 1:
echo "i es igual a 1";
break;
case 2:
echo "i es igual a 2";
break;
default:
echo "i no es igual a 0, 1 o 2";
endswitch;

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
101

3.3.10. break

break escapa de la estructuras de control iterante (bucle) actuales for, while, o


switch.

break acepta un parmetro opcional, el cual determina cuantas estructuras de


control hay que escapar.

$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "Nmero 5<br>\n";
break 1; Salir solo de switch. */
case 10:
echo " Nmero 10; quitting<br>\n";
break 2; /* Salir de switch y de while. */
default:
break;
}
}

3.3.11. continue

continue se usa dentro de la estructura del bucle para saltar el resto de la iteracin
actual del bucle y continuar la ejecucin al comienzo de la siguiente iteracin.

continue accepta un parmetro opcional, el cual determina cuantos niveles


(bluces) hay que saltar antes de continuar con la ejecucin.

<?php
$i=0;
while ($i < 10)
{
$i++;
if (($i == 6)||($i == 7)||($i == 8))
continue;
if ($i%2 == 0)
echo "$i es par <BR>\n";
else
echo "$i es impar <BR>\n";
} // del while
echo "Primera instruccin despus del bucle\n";
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
102

3.3.12. Inclusin de archivos

Las funciones que se abordaran en esta seccin se incluyen dentro de las


estructuras de control del lenguaje, puesto que pueden influir en gran manera en
el flujo de ejecucin e interpretacin de los scripts que las contengan.

3.3.12.1. require() y include()

Las sentencias require() y include() incluyen y evalan el archivo especificado.


require() y include() son idnticas en todos los aspectos excepto en el modo de
actuar ante un error. include() produce un Warning mientras que require()
produce un Error Fatal. En otras palabras, no dude en utilizar require() si quiere
que un archivo no encontrado cuelgue el procesamiento de la pgina. include() no
se comporta de esta manera, el script seguir funcionando de todas maneras.
Asegurarse que include_path este configurado bien.

Cualquier variable disponible en esa lnea en el archivo desde donde se hace la


inclusin estar disponible en el archivo incluido a partir de ese momento.
Ejemplo:
Se tiene el siguiente script llamado include2.php:

<?php
$resultado=1;
for($i=1;$i<=abs($exponente);$i++){
$resultado*=$base;
}
if ($exponente<0){
$resultado=1/$resultado;
}
echo "$base<sup>$exponente</sup>";
echo "<b>$resultado<br>";
?>

y se hace la inclusin de include2.php en include1.php

<?php
$base=2;
$exponente=8;
include("include2.php");
?>

El cdigo anterior produce la salida: 28 256

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
103

3.4. MANEJO DE CADENAS

Como ya vimos, una cadena se puede delimitar con comillas dobles ( ) o comillas
simples( ).

Otra forma de delimitar cadenas es usando la sintaxis de documento incrustado


("<<<"). Se debe proporcionar un identificador despus de <<<, despus la
cadena, y despus el mismo identificador para cerrar el entrecomillado.

He aqu un ejemplo de entrecomillado de cadenas con sintaxis de documento


incrustado:

$str = <<<EOD
Ejemplo de cadena
Expandiendo mltiples lneas
usando sintaxis de documento incrustado.
EOD;

Nota: La sintaxis de documento incrustado fue aadida en PHP 4.

Las cadenas se pueden concatenar usando el operador '.' (punto).

3.4.1. Visualizacin de cadenas

Comenzamos con las funciones que nos permiten visualizar y formatear cadenas
de caracteres, permitindonos gestionar, de este modo, la salida de los datos por
pantalla:

echo (): Muestra informacin por la salida estndar y tiene los siguientes
formatos:

echo string arg1[, string argn];

echo (string arg1[, string argn]);

print (): Muestra una cadena de caracteres por la salida estndar y no


soporta ningn atributo de formato de salida, pero si soporta la expansin de
variables. Su sintaxis es:

print (string cadena);

printf(): Imprime informacin por la salida estndar soportando diferentes


formatos de salida. Admite mltiples tipos de argumentos a visualizar. Su
sintaxis es:

printf (string formato[, argumentos])

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
104

Imprime una cadena cuya estructura depende del formato descrito en el


argumento formato. Esta cadena esta formada por una ristra de caracteres
algunos de los cuales se mostrarn directamente, mientras que otros, los que
van precedidos del carcter %, conocidos como especificaciones de
conversin, son utilizados para formatear la informacin.

Cada especificacin de conversin se compone de los siguientes elementos


en (orden):

1. Un carcter de relleno opcional-, que se utilizar para rellenar y ajustar el


resultado hasta lograr el tamao de cadena correcto, por ejemplo, el
espacio en blanco para caracteres (valor por defecto) o el cero para
valores numricos.
2. Un carcter de alineamiento opcional-, para indicar si el resultado debe
alinearse a la izquierda (carcter -) o a la derecha (valor por defecto).
3. Un indicador de tamao -opcional-, que indica el tamao mnimo de
caracteres que ocupar el argumento tras la conversin.
4. Un indicador de precisin opcional-, formado por un punto (.) seguido
del nmero de dgitos decimales que debern mostrar los nmeros en
punto flotante. No tiene efecto con otros tipos de datos.
5. Finalmente un identificador de tipo de datos, que especifica como se
deber de tratar el dato. Los tipos disponibles son:

Smbolo Tipo de Dato Tratamiento


% Carcter % Carcter %
D Decimales Como entero decimal
B Binarios Como entero binario
O Octales Como entero
X Hexadecimales (letras Como entero
minsculas)
X Hexadecimales (letras Como entero
maysculas)
C Caracteres ASCII Como carcter
F Punto flotante (signo decimal) Como float o decimales
E Punto flotante (notacin Como float o decimales
exponencial)
S Cadenas Como string

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
105

El siguiente ejemplo muestra la utilidad de esta funcin para formatear resultados


en pantalla:

<html>
<head>
<title>trabajando con cadenas</title>
</head>
<body>
<center>
<h2>Funcin <I> printf </I></h2>
<?php
$euro=166.386;
$anyo=2002;
$mes=9;
$dia=23;
printf("%s--- %02d/%02d/%04d ---</b><br><br>",
"<b>Convertidor de euros ", $dia, $mes, $anyo);
for ($i=100; $i<1100; $i+=100)
printf("%4d Ptas. -> %02.2f %s", $i, $i/$euro, " <br>");
?>

</body>
</html>

Se obtiene como resultado

sprintf (formato [argumentos]): es muy parecida a printf(), pero se


diferencia de esta en que devuelve una cadena de caracteres, la cual lo
habitual es almacenarla en una variable.

Nota: No se debe abusar del uso de estas funciones cuando no haya que
aplicar un formato especfico a los datos o el formato no sea importante,
porque se obtienen mejores resultados haciendo uso de la funcin echo y
concatenando las cadenas con el operador ..

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
106

3.4.2. Acceso al contenido

Podemos acceder a cada uno de los caracteres que componen una cadena
haciendo referencia a la posicin que ocupan dentro de ella, de igual modo a
como referenciamos los diferentes componentes de una matriz o un array. Para
ello, se hace indispensable conocer el tamao de la cadena a recorrer.

strlen (cadena): devuelve la longitud de la cadena pasada como


argumento. El siguiente ejemplo nos muestra un modo bsico de recorrer
los diferentes componentes de una cadena:

<html>
<head>
<title>trabajando con cadenas</title>
</head>
<body>
<center>
<h2>Funcin <I> strlen </I></h2>
<?php
$cadena="saludos";
echo "<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>\n";
echo "<TR BGCOLOR='YELLOW'>\n";
echo "<TD>CARCTER</TD><TD>POSICION</TD>\n</tr>\n";

for ($i=0; $i<strlen($cadena); $i++){


echo "<Tr align='center'>";
echo "<TD>".$cadena[$i]."</TD><TD>".$i."</TD></tr>\n";
}
echo "</Table>\n";
?>
</body>
</html>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
107

3.4.3. Bsqueda en cadenas

Una de las operaciones ms habituales sobre las cadenas es la bsqueda de


caracteres y subcadenas componentes, para su posterior tratamiento. Dentro de
este tipo de funciones destacan las siguientes:

strstr (cadena, cadBusq), strchr(cadena, cadBusq): busca la aparicin


de una cadena dentro de otra y devuelve la subcadena comprendida entre
la primera aparicin de la cadena buscada (incluyndola) hasta el final de la
cadena en que se realiza la bsqueda. En caso de no encontrar la cadena
devuelve una cadena vaca. La bsqueda diferencia entre maysculas y
minsculas.
strrchr (cadena, cadBusq): busca la aparicin de un carcter (aunque se
utilice una cadena de bsqueda slo tiene en cuenta su primer carcter) en
una cadena y devuelve la subcadena comprendida entre la ltima aparicin
del carcter (incluido) hasta el final de la cadena en que se realiza la
bsqueda. En caso de no encontrar el carcter en la cadena, se devuelve
una cadena vaca. La bsqueda diferencia entre maysculas y minsculas.
Si el elemento a buscar no es una cadena, se convierte a entero y se aplica
como el valor ordinal de un carcter.
stristr (cadena, cadBusq): el comportamiento de esta funcin es igual al
de la funcin strstr(), salvo que esta no diferencia entre maysculas y
minsculas.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
108

3.4.4. Comparacin de cadenas

Otra operacin comn con cadenas es compararlas para saber cul es mayor.
Dentro de este tipo de funciones destacan las siguientes:

strcmp (cad1, cad2): compara dos cadenas y devuelve un valor menor que
cero, si la segunda cadena es mayor que la primera; mayor que cero, en
caso contrario, y cero, si ambas cadenas son iguales. La comparacin
distingue entre maysculas y minsculas.
strcasecmp (cad1, cad2): se comporta igual que strcmp(), excepto que no
diferencia maysculas de minsculas.

Veamos un ejemplo con el funcionamiento de ambas funciones.

<body>
<center>
<h2>Funciones <I> strcmp y strcasecmp </I></h2>
<?php
$cad1="Atencin";
$cad2="atencin";
echo "<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>\n";
echo "<Tr align='center'><Td BGCOLOR='YELLOW'>cadena1 </td>";
echo "<TD>$cad1</TD></tr>\n";
echo "<Tr align='center'><Td BGCOLOR='YELLOW'>cadena2 </td>";
echo "<TD>$cad2</TD></tr>\n";
echo "<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>strcmp(cadena1, cadena2) </td>";
echo "<Td >".strcmp($cad1, $cad2). "</td></tr>\n";
echo "<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>strcasecmp(cadena1, cadena2) </td>";
echo "<Td >".strcasecmp($cad1, $cad2). "</td></tr>\n";
echo "</Table>\n";
?>
</body>
</html>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
109

strncmp (cad1, cad2, long): funciona como strcmp(), solo que permite
comparar los long primeros caracteres de dos cadenas. Si alguna cadena
es menor que el nmero de caracteres a comparar, se usar su longitud
como long para la comparacin. Diferencia maysculas de minsculas.
strnatcmp (cad1, cad2): se comporta igual que strcmp(), excepto en que
utiliza una comparacin natural de las cadenas alfanumricas. Distingue
entre maysculas y minsculas.
strnatcasecmp (cad1, cad2): se comporta igual que strnatcmp(), excepto
en que no diferencia entre maysculas y minsculas.

Veamos un ejemplo con el funcionamiento diferenciado de strcmp() y


strnatcmp():

<body>
<center>
<h2>Funcin <I> strnatcmp </I></h2>
<?php
$cad1="10000 pts";
$cad2="2500 pts";
echo "<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>\n";
echo "<Tr align='center'><Td BGCOLOR='YELLOW'>cadena1 </td>";
echo "<TD>$cad1</TD></tr>\n";
echo "<Tr align='center'><Td BGCOLOR='YELLOW'>cadena2 </td>";
echo "<TD>$cad2</TD></tr>\n";
echo "<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>strcmp(cadena1, cadena2) </td>";
echo "<Td >".strcmp($cad1, $cad2). "</td></tr>\n";
echo "<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>strnatcmp(cadena1, cadena2) </td>";
echo "<Td >".strnatcmp($cad1, $cad2). "</td></tr>\n";
echo "</Table>\n";
?>
</body>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
110

3.4.5. Modificacin del contenido

3.4.5.1. Limpieza de cadenas

chop (cadena): devuelve la cadena argumento sin los espacios en blanco y


caracteres de fin de lnea que se encuentren al final de la cadena.
rtrim (cadena): se comporta igual que chop().
ltrim (cadena): elimina espacios en blanco que se encuentran al principio
de una cadena de texto. Recibe como parmetro una cadena de caracteres
y devuelve la misma cadena pero sin los espacios iniciales.
trim (cadena): elimina los espacios en blanco que se encuentran al
principio y al final de una cadena de texto. Recibe como argumento una
cadena de caracteres y devuelve como resultado esa cadena sin los
espacios iniciales y finales.

Veamos un ejemplo de estas cuatro funciones:

<body>
<center>
<h2>Funcin <I> chop, rtrim, ltrim y trim</I></h2>
<?php
//6 espacios por delante y 4 por detrs
$cadena=" abcdefghi ";
echo "<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>\n";
echo "<Tr align='center'><Td colspan=2>&nbsp; </td>";
echo "<Td BGCOLOR='YELLOW'>tamao</td></tr>\n";
echo "<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'cadena</td>
<td><pre>$cadena</pre></td>";
echo "<Td >".strlen($cadena)."</td>\n<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>chop(cadena)</td>";
echo "<Td> <pre>".chop($cadena)."</pre></td>";
echo "<Td>".strlen(chop($cadena))."</td></tr>\n";
echo "<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>rtrim(cadena)</td>";
echo "<Td> <pre>".rtrim($cadena)."</pre></td>";
echo "<Td>".strlen(rtrim($cadena))."</td></tr>\n";
echo "<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>ltrim(cadena)</td>";
echo "<Td> <pre>".ltrim($cadena)."</pre></td>";
echo "<Td>".strlen(ltrim($cadena))."</td></tr>\n";
echo "<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>trim(cadena)</td>";
echo "<Td> <pre>".trim($cadena)."</pre></td>";
echo "<Td>".strlen(trim($cadena))."</td></tr>\n";
echo "</Table>\n";
?>
</center>
</body>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
111

3.4.5.2. Conversin entre maysculas y minsculas.

srtolower (cadena): convierte una cadena de caracteres a minsculas.


Recibe como argumento una cadena y devuelve la misma cadena con los
caracteres alfabticos en minsculas.

strtoupper (cadena): funciona de forma contraria a la funcin anterior. una


cadena de caracteres a maysculas.

ucfirst (cadena): se encarga de convertir a maysculas el primer carcter


de una cadena de caracteres, siempre que este sea alfabtico.

Nota: para hacer un uso correcto de esta funcin, hemos de prestar


atencin a las caractersticas locales propias de PHP, de modo que
tengamos las que necesitamos.

ucwords (cadena): se comporta igual que la funcin anterior, salvo que


esta convierte a maysculas el primer carcter de cada palabra que
compone la cadena, siempre y cuando sean caracteres alfanumricos.

Vamos a ver el funcionamiento conjunto de todas estas funciones:

<h2>Funcin <I>strtoupper, strtolower, ucfirst y ucwords</I></h2>


<?php
$frase ="saludos PARA todos...";
echo "<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>\n";
echo "<Tr align='right'>";
echo "<Td BGCOLOR='YELLOW'>frase</td><td>$frase</td>\n";
echo "<Tr align='right'>";
echo "<Td BGCOLOR='YELLOW'>strtoupper(frase)</td>";
echo "<Td>".strtoupper($frase)."</td></tr>\n";
echo "<Tr align='right'>";
echo "<Td BGCOLOR='YELLOW'>strtolower(frase)</td>";

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
112

echo "<Td>".strtolower($frase)."</td></tr>\n";
echo "<Tr align='right'>";
echo "<Td BGCOLOR='YELLOW'>ucfirst(frase)</td>";
echo "<Td>".ucfirst($frase)."</td></tr>\n";
echo "<Tr align='right'>";
echo "<Td BGCOLOR='YELLOW'>ucwords(frase)</td>";
echo "<Td>".ucwords($frase)."</td></tr>\n";
echo "</Table>\n";
?>

3.4.5.3. Divisin de cadenas

explode (patrn, cadena): devuelve un array resultado de dividir una


cadena en diferentes subcadenas. El nmero total de elementos del array
puede ser elegido a travs de un parmetro opcional.
implode (nexo, cadena): devuelve una cadena resultado de unir todos los
elementos de un array en el mismo orden en el que aparecen, pero con una
cadena en medio de ellos.

Veamos con un ejemplo el funcionamiento conjunto de las funciones


anteriores:

<body>
<center>
<h2>Funcin <I>explode e implode</I></h2>
<?php
$patron = "-";
$nexo=":";
$limite=5;
$cadena= "dato1-dato2-dato3-dato4-dato5";
$datos=explode($patron, $cadena,$limite);
echo "<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>\n";

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
113

echo "<Tr align='center'>";


echo "<Td BGCOLOR='YELLOW'>cadena</td><Td>$cadena</td>\n";
echo "<Tr align='center'>";
echo "<Td colspan='2' BGCOLOR='YELLOW'>
explode('$patron',cadena,$limite)</td>";
echo "<Tr>\n";
for($i=0;$i<$limite;$i++){
echo "<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>subcadena $i</td>";
echo "<td>$datos[$i]</td></tr>\n";
}
echo "<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>implode('$nexo', datos)</td>\n";
echo "<Td>".implode($nexo, $datos)."</td></tr>\n";
echo "<Tr>\n";
echo "</Table>\n";
?>
</center>
</body>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
114

3.5. ARREGLOS

Los arrays o matrices forman una parte muy importante de la programacin en


PHP ya que permiten manejar grupos de valores relacionados: nos permiten
almacenar mltiples valores en una sola estructura y de esta forma, asociarlos
bajo una misma denominacin. Como veremos, PHP tiene gran cantidad de
funciones cuyos parmetros, tanto de llamada como de resultados, son variables
de tipo array. En especial, son ampliamente utilizados en las funciones ligadas a
las bases de datos.

3.5.1. Arrays escalares

Un array escalar, o simple, est formado por un conjunto de valores ordenados


respecto a un ndice de tipo entero. Este ndice indicar la posicin del elemento
dentro de esta coleccin ordenada, de modo que, en cada posicin marcada por el
ndice dentro del array, haya un valor.

Existen diferentes formas de crear arrays. La ms sencilla consiste en asignar el


valor de cada elemento de manera explcita, es decir, indicando cada uno de los
valores que lo componen e, incluso la posicin que ocupan dentro del array. El
siguiente ejemplo nos muestra estas dos formas equivalentes de definir el mismo
array:

<?php
$matriz1[0]="cougar";
$matriz1[1]="ford";
$matriz1[3]="2.500";
$matriz1[4]="V6";
$matriz1[5]=172;
$matriz2[0]="cougar";
$matriz2[1]="ford";
$matriz2[2]="";
$matriz2[3]="2.500";
$matriz2[4]="V6";
$matriz2[5]=172;
?>

Un array puede combinar elementos de naturaleza distinta: en el ejemplo, valores


enteros y cadena de caracteres (que deben aparecer entrecomillados) e, incluso,
elementos vacos.

Cuando, al generar el array, no indicamos la posicin de sus elementos, estos se


van situando secuencialmente respecto a la ltima asignacin realizada sobre el
array. La asignacin numrica de posiciones dentro del array no tiene porqu ser
secuencial, es decir podemos definir el orden numrico que nos interese. Ejemplo:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
115

<?php
$matriz1[3]="cougar";
$matriz1[5]="ford";
$matriz1[7]="2.500";
$matriz1[]="V6";
$matriz1[]=172;
?>

La otra forma de definir arrays es utilizar el constructor array () proporcionado por


el lenguaje. Este constructor no es una funcin regular; tiene la siguiente
definicin:

array array (mixed valores, )

Ejemplo de uso del constructor:

<body>
<center>
<h2>El constructor <I>array</I></h2>
<?php
$matriz1=array("cougar","ford",null,"2.500","V6",172);
?>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'>
<Td>indice</Td>
<?php
for($i=0;$i<=5;$i++)
echo "<Td>$i</td>";
?>
<Tr align="center">
<Td BGCOLOR="YELLOW"> $matriz1</Td>
<?php
echo "<Td> $matriz1[0] </Td>";
echo "<Td> $matriz1[1] </Td>";
echo "<Td> $matriz1[2] </Td>";
echo "<Td> $matriz1[3] </Td>";
echo "<Td> $matriz1[4] </Td>";
echo "<Td> $matriz1[5] </Td>";
?>
</tr>
</table>
</center>
</body>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
116

El constructor array() tambin nos permite asignar los elementos del array en el
orden en que queramos. Para ello, indicamos el ndice, seguido del smbolo => y
el valor del elemento. Por ejemplo:

<body>
<center>
<h2>El constructor <I>array</I></h2>
<?php
$matriz1=array("cougar","ford",null,"2.500","V6",172);
$matriz2=array(2=>"cougar","ford",1=>null,0=>"2.500","V6",172);
?>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'>
<Td>indice</Td>
<?php
for($i=0;$i<=5;$i++)
echo "<Td>$i</td>";
?>
<Tr align="center">
<Td BGCOLOR="YELLOW"> $matriz1</Td>
<?php
echo "<Td> $matriz1[0] </Td>";
echo "<Td> $matriz1[1] </Td>";
echo "<Td> $matriz1[2] </Td>";
echo "<Td> $matriz1[3] </Td>";
echo "<Td> $matriz1[4] </Td>";
echo "<Td> $matriz1[5] </Td>";
?>
</tr>
<Tr align="center">
<Td BGCOLOR="YELLOW"> $matriz2</Td>
<?php
echo "<Td> $matriz2[0] </Td>";
echo "<Td> $matriz2[1] </Td>";
echo "<Td> $matriz2[2] </Td>";
echo "<Td> $matriz2[3] </Td>";
echo "<Td> $matriz2[4] </Td>";
echo "<Td> $matriz2[5] </Td>";
?>
</tr>
</table>
</center>
</body>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
117

3.5.2. Arrays asociativos

A diferencia de los arrays simples, los arrays asociativos (tambin conocidos como
tablas hash o arrays indexados por cadena) estn formados por un conjunto de
calores que estn ordenados respecto a un ndice de tipo string, es decir, una
cadena de caracteres. De este modo, nuestro array va a estar compuesto por
pares clave- valor, siendo necesario proporcionar la clave para poder acceder al
valor almacenado en el array.

De igual forma que ocurre con los arrays simples, podemos utilizar el constructor
del lenguaje array() para definirlos, o bien, hacerlo especificando de forma exlcita
cada uno de sus componentes. Ejemplo:

<body>
<center>
<h2>Arrays <I>asociativos</I></h2>
<?php
$matriz1=array("modelo"=>"cougar","marca"=>"ford","fecha"=>null,
"cc"=>"2.500","motor"=>"V6","potencia"=>172);
$matriz2['modelo']="cougar";
$matriz2['marca']="ford";
$matriz2['fecha']=null;
$matriz2['cc']="2.500";
$matriz2['motor']="V6";
$matriz2['potencia']=172;
?>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'>
<Td></Td>
<Td>Modelo</Td>
<Td>Marca</Td>
<Td>CC</Td>
<Td>Motor</Td>
<Td>Potencia</Td>
</tr>
<Tr align="center">
<Td BGCOLOR="YELLOW"> $matriz1</Td>
<?php
echo "<Td>". $matriz1['modelo']." </Td>";
echo "<Td>". $matriz1['marca']." </Td>";
echo "<Td>". $matriz1['fecha']."</Td>";
echo "<Td>". $matriz1['cc'] ."</Td>";
echo "<Td>". $matriz1['motor'] ."</Td>";
echo "<Td>". $matriz1['potencia']."</Td>";
?>
</tr>
<Tr align="center">
<Td BGCOLOR="YELLOW"> $matriz2</Td>
<?php
echo "<Td>". $matriz2['modelo']." </Td>";
echo "<Td>". $matriz2['marca'] ."</Td>";
echo "<Td>". $matriz2['fecha'] ."</Td>";
echo "<Td>". $matriz2['cc'] ."</Td>";

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
118

echo "<Td>". $matriz2['motor']." </Td>";


echo "<Td>". $matriz2['potencia']."</Td>";
?>
</tr>
</table>
</center>
</body>

3.5.3. Arrays multidimensionales

PHP nos permite definir arrays multidimensionales mediante la combinacin de


arrays unidimensionales (que pueden ser tanto de tipo escalar, como asociativos).
Los siguientes ejemplos nos muestran las diferentes formas de definirlos:

Array multidimensional de tipo escalar:

<body>
<center>
<h2>Arrays <I>multidimensionales</I></h2>
<?php
$matriz1[0][0]="peseta";
$matriz1[0][1]=166.386;
$matriz1[1][0]="dolar";
$matriz1[1][1]=0.96;

$matriz2[0]=array("peseta",166.386);
$matriz2[1]=array("dolar",0.96);

$matriz3=array(array("peseta",166.386),array("dolar",0.96));
?>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'>
<Td></Td>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
119

<Td>Moneda</Td>
<Td>Cambio </Td>
</tr>
<?php
for($i=0;$i<2;$i++){
echo"<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>\matriz1[$i]</td>";
for($j=0;$j<2;$j++){
echo "<Td>".$matriz1[$i][$j]."</td>";
}
echo"</Tr>";
}
for($i=0;$i<2;$i++){
echo"<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>\matriz2[$i]</td>";
for($j=0;$j<2;$j++){
echo "<Td>".$matriz2[$i][$j]."</td>";
}
echo"</Tr>";
}
for($i=0;$i<2;$i++){
echo"<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>\matriz3[$i]</td>";
for($j=0;$j<2;$j++){
echo "<Td>".$matriz3[$i][$j]."</td>";
}
echo"</Tr>";
}
?>
</table>
</center>
</body>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
120

Nota: en PHP3 no es posible referirse a arrays multidimensionales directamente


dentro de cadenas, es necesario hacer uso del operador de concatenacin para
solucionar este problema. En PHP4, sin embargo, todo el problema se soluciona
encerrando la referencia al array (dentro de la cadena) entre llaves; tambin se
puede hacer uso de la concatenacin de cadenas.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
121

3.5.4. Recorrer un array

Una operacin habitual a realizar cuando trabajamos con arrays es recorrerlo para
obtener sus elementos, para modificarlos o trabajar con ellos.

3.5.4.1. Recorridos en arrays secuenciales

Recorrer los diferentes elementos que componen un array secuencial es


relativamente sencillo, pues, haciendo uso de un bucle e iterando en funcin del
valor del ndice podemos realizar la operacin. El problema es conocer a priori el
nmero de elementos que componen el array. Precisamente para solventar este
problema, PHP proporciona la funcin count(), que devuelve el nmero de
elementos que tiene la variable que recibe como argumento.

Nota: aunque es habitual que el argumento pasado a la funcin sea un array,


podemos aplicar la funcin a cualquier otro tipo de variable, en cuyo caso
devolver el valor 1, si la variable tiene valor nulo o 0, si esta an no ha sido
inicializada.
Una vez conocido el nmero de elementos del array, podemos utilizar un bucle
para ir recorriendo sus elementos, ejemplo:
<body>
<center>
<h2>Arrays funcin<I>count</I></h2>
<?php
$matriz1[0][0]="peseta";
$matriz1[0][1]=166.386;
$matriz1[1][0]="dolar";
$matriz1[1][1]=0.96;
$matriz1[2][0]="marco";
$matriz1[2][1]=1.85;
?>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'>
<Td></Td>
<Td>Moneda</Td>
<Td>Cambio </Td>
</tr>
<?php
for($i=0;$i<count($matriz1);$i++){
echo"<Tr align='center'>";
echo "<Td BGCOLOR='YELLOW'>\matriz1[$i]</td>";
for($j=0;$j<count($matriz1[$i]);$j++){
echo "<Td>".$matriz1[$i][$j]."</td>";
}
echo"</Tr>";
}
?>
</table>
</center>
</body>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
122

Otra funcin relacionada con el recorrido de arrays es sizeof(), que obtiene el


nmero de elementos del array pasado como argumento en la llamada a la
funcin.

3.5.4.2. Recorridos en arrays no secuenciales

Un array no secuencial no parece muy fcil de recorrer, puesto que no slo


necesitamos saber el nmero de elementos que componen el array, sino tambin
su posicin dentro del array. Este mismo problema se presenta con los arrays
asociativos, puesto que, adems del nmero de elementos que componen el
array, necesitamos conocer las claves para poder acceder a los valores
almacenados. Para poder trabajar con arrays estructurados de modo no
secuencial, tanto de tipo escalar como asociativos, PHP cuenta con el siguiente
conjunto de funciones (estas funciones tambin son aplicables a arrays
estructurados secuencialmente):

current (matriz): devuelve el valor de la posicin actual del puntero dentro del
array: todos los arrays tienen un puntero interno que apunta a la posicin del
elemento actual con el que se est trabajando en un momento dado. Devuelve
false cuando el puntero est al final del array o cuando el array no contiene ningn
elemento.

pos (matriz): es idntica a la funcin anterior.

Key (matriz): devuelve el ndice de la posicin actual del array pasado como
argumento: un nmero, en caso de que el array sea de tipo escalar, o una cadena
de caracteres, en el caso de que el array sea de tipo asociativo.

next (matriz): devuelve el valor del elemento siguiente al actual (si existe) y
avanza el puntero interno una posicin. En caso de que el elemento actual sea el
ltimo del array, devuelve false.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
123

prev (matriz): devuelve el valor del elemento siguiente al actual (si existe) y
retrocede el puntero interno una posicin. En caso de que el elemento actual sea
el ltimo del array, devuelve false.

end (matriz): coloca el puntero interno en el ltimo elemento de un array escalar.

reset (matriz): devuelve el valor del primer elemento del array y sita el puntero
interno en su primera posicin.

Ejemplo de uso de estas funciones:

<body>
<center>
<h2>Arrays funcin<br>
<I>reset, end, next, prev, current y key</I></h2>
<?php
$matriz1[3]="cougar";
$matriz1[5]="ford";
$matriz1[7]="2.500";
$matriz1[]="V6";
$matriz1[]=172;

$matriz2['modelo']="cougar";
$matriz2['marca']="ford";
$matriz2['cc']="2.500";
$matriz2['fecha']=null;
$matriz2['motor']="V6";
$matriz2['potencia']=182;
?>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'>
<Td>Posicin</Td>
<?php
echo "<Td BGCOLOR='YELLOW'>".key($matriz1)."</td>";
while (next ($matriz1)){
echo "<Td BGCOLOR='YELLOW'>".key($matriz1)."</td>";
}
?>
<Tr>
<Tr align='center'>
<td BGCOLOR='YELLOW'>Valor</Td>
<?php
echo "<Td>".reset($matriz1)."</td>";
while (next ($matriz1)){
echo "<Td>".current($matriz1)."</td>";
}
?>
</table><br>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'>
<Td>Clave</Td>
<?php
end($matriz2);
echo "<Td BGCOLOR='YELLOW'>".key($matriz2)."</td>";

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
124

while (next ($matriz2)){


echo "<Td BGCOLOR='YELLOW'>".key($matriz2)."</td>";
}
?>
<Tr>
<Tr align='center'>
<td BGCOLOR='YELLOW'>Valor</Td>
<?php
end($matriz2);
echo "<Td BGCOLOR='YELLOW'>".current($matriz2)."</td>";
while (prev ($matriz2)){
echo "<Td BGCOLOR='YELLOW'>".current($matriz2)."</td>";
}
?>
</table>
</center>
</body>

each (matriz): se usa para recorrer arrays (sobre todo los asociativos), pues
devuelve un apr de valores correspondientes a la clave y al valor asociado a esa
clave. Adems, avanza el puntero interno hasta el siguiente elemento. Si el
puntero interno apunta a la ltima posicin del array, la ajacucin de esta funcin
devuelve false.

list (): asigna una lista de variables en una sola operacin. Suele utilizarse en
combinacin con la funcin anteriormente vista, each().

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
125

Ejemplo de recorrido:

<body>
<center>
<h2>Arrays funciones <I>each y list</I></h2>
<?php
$matriz1[3]="cougar";
$matriz1[5]="ford";
$matriz1[7]="2.500";
$matriz1[]="V6";
$matriz1[]=172;

$matriz2['modelo']="cougar";
$matriz2['marca']="ford";
$matriz2['cc']="2.500";
$matriz2['fecha']=null;
$matriz2['motor']="V6";
$matriz2['potencia']=182;
?>
<TABLE BORDER='0'CELLPADDING='4' CELLSPACING='6'>
<Tr align="center"><td>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'>
<Td>Posicin</Td><Td>Valor</Td></tr>
<?php
while (list($pos,$valor)=each($matriz1)){
echo "<Tr align='center'><td>".$pos."</td>";
echo "<Td>".$valor."</td></tr>";
}
?>
</table></td><td>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'>
<Td>Clave</Td><Td>Valor</Td></tr>
<?php
while (list($clave,$valor)=each($matriz2)){
echo "<Tr align='center'><td>".$clave."</td>";
echo "<Td>".$valor."</td></tr>";
}
?>
</table></td></tr>
</table>
</center>
</body>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
126

3.5.5. Ordenar un array

Funciones para ordenar los elementos de un array

sort (matriz): ordena alfanumricamente los valores de los elementos de un array


de menor a mayor. Para ordenar de manera inversa, disponemos de la funcin
rsort (matriz).

Nota: si aplicamos estas funciones a arrays asociativos, estos perdern sus


claves y se convertirn en arrays simples o escalares.

Ejemplo:

<body>
<center>
<h2>Arrays funciones <I>each y list</I></h2>
<?php
$matriz1[0]="Madrid";
$matriz1[1]="Zaragoza";
$matriz1[2]="Bilbao";
$matriz1[3]="Valencia";
$matriz1[4]="Lerida";
$matriz1[4]="Alicante";
?>
<TABLE BORDER='0'CELLPADDING='4' CELLSPACING='6'>
<Tr align="center">
<td>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'><th colspan='2'>Array Original</th>
<Tr align='center' BGCOLOR='YELLOW'>
<Td>Posicin</Td><Td>Valor</Td></tr>
<?php
while (list($pos,$valor)=each($matriz1)){
echo "<Tr align='center'><td>".$pos."</td>";
echo "<Td>".$valor."</td></tr>";
}
?>
</table></td>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
127

<td>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'><th colspan='2'>sort()</th>
<Tr align='center' BGCOLOR='YELLOW'>
<Td>Posicin</Td><Td>Valor</Td></tr>
<?php
sort($matriz1);
while (list($pos,$valor)=each($matriz1)){
echo "<Tr align='center'><td>".$pos."</td>";
echo "<Td>".$valor."</td></tr>";
}
?>
</table></td>
<td>
<TABLE BORDER='1'CELLPADDING='2' CELLSPACING='2'>
<Tr align='center' BGCOLOR='YELLOW'><th colspan='2'>rsort()</th>
<Tr align='center' BGCOLOR='YELLOW'>
<Td>Posicin</Td><Td>Valor</Td></tr>
<?php
rsort($matriz1);
while (list($pos,$valor)=each($matriz1)){
echo "<Tr align='center'><td>".$pos."</td>";
echo "<Td>".$valor."</td></tr>";
}
?>

</table></td>
</table>
</center>
</body>

Para evitar el efecto lateral en el que se redefinen los ndices, tanto para los arrays
escalares como asociativos, podemos usar las siguientes funciones:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
128

asort (matriz): ordena alfanumricamente los valores de los elementos de un


array de mayor a menor, pero manteniendo la relacin existente entre los ndices
y sus valores asociados. Esto es posible debido a que la ordenacin se hace
sobre los elementos del array y no sobre los ndices.

arsort (matriz): realiza la ordenacin inversa.

ksort (matriz): ordena alfanumricamente las claves de un arrray de menor a


mayor manteniendo las correlaciones entre clave y valor asociado. La funcin que
realiza la ordenacin inversa es krsort (matriz).

3.5.6. Otras operaciones

A continuacin veremos un grupo de funciones que nos sern de gran utilidad a la


hora de trabajar con un array ya existente.

3.5.6.1. Modificar un array

Las siguientes funciones nos permiten modificar el tamao de un array aadiendo


elementos o uniendo diferentes arrays en uno solo.

array_merge (matriz1, matriz2): Combina en un solo array los valores de los


arrays que recibe como argumentos. Los elementos van siendo aadidos al array
precedente. Si estamos juntando arrays asociativos, hay que tener en cuenta que
las claves con igual nombre no se aaden al array, sino que se actualizan con el
ltimo valor suministrado.

array_walk (matriz, func_usuario [, parmetro]): nos permite aplicar una funcin


definida por el usuario a cada uno de los elementos de una array. La funcin
func_usuario () recibe al menos dos parmetros (el valor del elemento y su clave
asociada); si func_usuario () necesitara ms parmetros, se pasan como
parmetros a la funcin array_walk (). Una vez aplicada la funcin, el puntero
interno del array se encontrar al final de l. Ejemplo:

<?php
$precios["prod1"]=1500;
$precios["prod2"]=1000;
$precios["prod3"]=800;
$precios["prod6"]=100;
$precios["prod7"]=500;

while(list($pos,$valor)=each($precios)){
echo "$pos ";
printf ("%4d Ptas. <br>", $valor);
}

function aEuros($valor,$clave){
$valor=$valor/166.386;
}

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
129

array_walk($precios, 'aEuros');
reset($precios);
echo <br>;
while(list($pos, $valor)=each($precios)){
echo "$pos ";
printf("%02.2f <br>",$valor);
}
?>

Salida:
prod1 1500 Ptas.
prod2 1000 Ptas.
prod3 800 Ptas.
prod6 100 Ptas.
prod7 500 Ptas.

prod1 1500.00
prod2 1000.00
prod3 800.00
prod6 100.00
prod7 500.00

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
130

3.5.6.2. Usando arrays como pilas

Las pilas son estructuras de datos en las que la insercin y la recuperacin de los
datos que almacenan se realizan bajo un orden prefijado. Son estructuras con una
gestin de tipo LIFO (last in, first out), es decir, el ltimo en llegar es el primero en
salir. PHP proporciona las siguientes funciones que nos permiten trabajar con los
arrays como si fueran pilas.

array_push (matriz, valor1 [, valor2, ]): inserta uno ms elementos al final de


matriz. Devuelve el nuevo nmero de elementos.

array_pop (matriz): devuelve y elimina el ltimo elemento del array (el que se
corresponde con la cima de la pila).

array_shift (matriz): devuelve y elimina el primer elemento del array (el que se
corresponde con la base de la pila).

array_unshift (matriz, valor1 [, valor2, ]): inserta uno ms elementos al


principio del array. Devuelve el nmeor total de elementos contenidos en l.

Ejemplo:

<body>
<?php
if (empty($_POST['PILA']))
{
$pila=array("Juan martinez"," patricia juarez",
"Jose hernandez","Edith cuevas");
$dato1="";
$dato2="";
$BOTN="";
}
else
{
$PILA=$_POST['PILA'];
$dato1=$_POST['dato1'];
$dato2=$_POST['dato2'];
$BOTN=$_POST['BOTN'];
$pila=explode("-",$PILA);
switch($BOTN){
case "SHIFT <-":$dato1=array_shift($pila);
break;
case "PUSH ->":array_push($pila,$dato1);
break;
case "-> POP":$dato2=array_pop($pila);
break;
case "<- UNSHIFT":array_unshift($pila,$dato2);
break;
}
}

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
131

?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']?>">
<TABLE BORDER="0" CELLPANDDING="4" CELLSPACING="6">
<TR ALIGN="center">
<TD>
<input name="BOTN" type="submit" value="SHIFT <-"><BR><BR>
<input name="dato1" type="text"
value="<?php echo "$dato1"?>"><BR><BR>
<input name="BOTN" type="submit" value="PUSH ->">
</TD>
<TD>
<table border="1" CELLPANDDING="2" CELLSPACING="2">
<TR ALIGN="center" BGCOLR="yelow">
<td>Posicion</td><td>Valor</td></tr>
<?php
while (list($pos,$valor)=each($pila)){
echo "<TR ALIGN='center'><TD>".$pos."</TD>";
echo "<TD>".$valor."</TD></TR>";
}
$num=sizeof($pila);
reset($pila);
?>

</table></td>
<TD>
<input name="BOTN" type="submit" value="<- UNSHIFT"><BR><BR>
<input name="dato2" type="text"
value="<?php echo "$dato2" ?>"><BR><BR>
<input name="BOTN" type="submit" value="-> POP">
</TD>
</TR>
</TABLE>
<input name="PILA" type="hidden" value="<?php echo implode('-',$pila); ?>">
</form>
</body>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
132

array_reverse (matriz): devuelve un array como parmetro pero con sus


componentes en orden inverso.

in_array (elemento_busqueda, matriz): con esta funcin podemos saber si un


elemento est contenido dentro de un array.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
133

3.6. FUNCIONES
PHP, como la mayora de los lenguajes de programacin, dispone de una
herramienta denominada funcin. Una funcin es un trozo de cdigo, que permite
desarrollar una tarea concreta y bien definida, que se encuentra separado del
resto de instrucciones del programa y al que se le ha dado un nombre para que
posteriormente pueda ser referenciado. A travs del nombre se pueden ejecutar
las instrucciones referidas por l tantas veces como sea necesario. La utilizacin
de funciones permite que un script aparezca escrito como una lista de referencias
a las tareas que se deben hacer para crear una pgina de respuesta.

3.6.1. Declaracin de una funcin


function Nombre_de_la_Funcin($param1, $param2, ..., $paramN)
{
// Cdigo PHP asociado a la funcin
codigo_PHP
return valor; //Esta sentencia es opcional
}

Como se puede ver, son necesarios los siguientes componentes:

La palabra reservada function

Nombre_de_la_Funcin indica el nombre por el que el usuario va a identificar


a las sentencias ah incluidas.

($param1, $param2, ..., $paramN) representa la lista de parmetros necesarios


para que la funcin pueda ser ejecutada. Los parmetros han de expresarse
siempre entre parntesis y separados por comas. Incluso si la funcin no necesita
ningn parmetro, debern aparecer la pareja de parntesis.

codigo_php representa el conjunto de sentencias que se van a ejecutar cada vez


que se haga una llamada a la funcin.

return es la sentencia que se debe utilizar cuando se quiere que la funcin


devuelva un valor. Si la funcin no devuelve ningn valor puede omitirse.

En PHP4 no existe ninguna limitacin para definir las funciones, pero basado en
las reglas de estilo, se recomienda sean definidas al principio del script.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
134

3.6.2. Llamada a una funcin


Una vez declarada la funcin, sta no se ejecuta hasta que se le llama desde
cualquier parte del script. Para llamar a una funcin, slo hay que escribir una
sentencia que contenga el nombre de la funcin y, entre parntesis, los valores de
los argumentos de llamada de ella. En el momento en que ocurre esto, la
ejecucin del programa salta inmediatamente a la primera lnea de la funcin
llamada. Despus de ejecutar las sentencias que componen el cuerpo de la
funcin, el programa salta de nuevo a la posicin en que fue llamada la funcin y
contina su ejecucin. El resultado es el mismo que se hubiese obtenido al
insertar todas las sentencias de la funcin en ala posicin de llamada a ella. Para
volver a hacer uso de la funcin, simplemente hay que volver a llamarla: una
funcin puede ser llamada tantas veces como se necesite.

El siguiente ejemplo nos muestra una forma sencilla de cmo definir y llamar a una
funcin. Como podemos observar, se trata de una funcin declarada sin
parmetros.

<H2>Funciones de Usuario<I></I></H2>
<?php
function CuentaRegresiva()
{
for ($i = 10; $i > 0; $i--)
echo $i, "...<BR>";
echo " Boooooom !";
}
?>
<TABLE BORDER="0" CELLPADDING="4" CELLSPACING="6">
<TR ALIGN="CENTER">
<TD BGCOLOR="#FFBBAA">
<?php
CuentaRegresiva();
?>
</TD>
<TD BGCOLOR="#FFFBAD">
<?php
CuentaRegresiva();
?>
</TD>
</TR>
</TABLE>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
135

El resultado se muestra en la siguiente imagen:

3.6.3. Paso de Parmetros

En ocasiones, necesitaremos definir funciones que aceptan parmetros o


argumentos. De esta forma conseguimos que la funcin se ms utilizable dentro
del propsito general para el que est definida. Por ejemplo, podemos querer
utilizar una funcin mltiples veces a lo largo del programa, pero algunos de sus
valores internos pueden variar con cada llamada. La mejor solucin a este
problema es definir una funcin que pueda aceptar argumentos en su llamada
para cada valor con el que queramos trabajar.

El siguiente ejemplo muestra una modificacin de la funcin presente en el cdigo


anterior para que el inicio de la cuenta pueda ser configurable por el usuario.
Como podemos observar, los parmetros se utilizan como variables dentro del
cuerpo de la funcin:

<H2>Funciones de Usuario<I></I></H2>
<?php
function CuentaRegresiva($inicio)
{
for ($i = $inicio; $i > 0; $i--)
echo $i, "...<BR>";
echo " Boooooom !";
}
?>
<TABLE BORDER="0" CELLPADDING="4" CELLSPACING="6">
<TR ALIGN="CENTER">
<TD BGCOLOR="#FFBBAA">
<?php
CuentaRegresiva(8);
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
136

</TD>
<TD BGCOLOR="#FFFBAD">
<?php
CuentaRegresiva(5);
?>
</TD>
</TR>
</TABLE>

El resultado se muestra en la siguiente imagen:

Dado que en la llamada pasamos valores a la funcin, esta informacin puede


suministrarse mediante una lista de variables y/o constantes separadas por
comas. El siguiente ejemplo nos muestra una combinacin de estos elementos
pasados como argumentos a una funcin:

<H2>Funciones de Usuario<I></I></H2>
<?php
define("Fin_Cuenta", 0);
$mifinal=3;

function CuentaRegresiva($inicio, $fin)


{
for (; $inicio > $fin; $inicio--)
echo $inicio, "...<BR>";
echo " Boooooom !";
}
?>
<TABLE BORDER="0" CELLPADDING="4" CELLSPACING="6">
<TR ALIGN="CENTER">
<TD BGCOLOR="#FFBBAA">
<?php
CuentaRegresiva(11, $mifinal);
?>
</TD>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
137

<TD BGCOLOR="#FFFBAD">
<?php
CuentaRegresiva(8, Fin_Cuenta);
?>
</TD>
</TR>
</TABLE>

El resultado se muestra en la siguiente imagen:

PHP permite pasar los parmetros de tres formas distintas: por valor (el
comportamiento por defecto que hemos visto en los ejemplos anteriores), por
referencia y con parmetros por defecto.

Parmetros por valor


Cuando pasamos una variable como argumento en la llamada a una funcin,
podremos pensar que las modificaciones que se realicen con dicho argumento
dentro de la funcin afectan a al variable. En el caso del paso de parmetros por
valor, que es la opcin por defecto de PHP, lo que recibe la funcin es una copia
del valor de la variable pasada como parmetro; de esta forma, las modificaciones
que pueden hacerse dentro del cuerpo de la funcin a la variable parmetro no
afectan al valor final de la variable pasada como argumento.

Parmetros por referencia


En el caso de que queramos que los cambios que se producen en el cuerpo de la
funcin afecten a la variable que se pas como argumento en la llamada a la
funcin deberemos pasar al parmetro por referencia. Como su propio nombre
indica, en este caso, a la funcin le llega una referencia a la variable y, por tanto,
los cambios que realice sobre el parmetro se realizan sobre la variable.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
138

Para indicar que parmetros se pasan por regencia, hay que marcarlos en la
definicin de la funcin, anteponiendo el smbolo ampersand (&) al nombre del
parmetro.

Parmetros por defecto


Los parmetros por defecto son la forma en que PHP implementa los parmetros
opcionales en la llamada a las funciones. De este modo, este tipo de parmetros
toma un valor predefinido cuando, desde la llamada a la funcin, no se les ha
proporcionado ningn argumento. Para definir un parmetro por omisin, hay que,
a dems de nombrar el parmetro, escribir el operador de asignacin (=) y, a
continuacin, el valor que vaya a recibir el parmetro en caso de no especificarse
en la llamada.

Cuando se usan parmetros por defecto, estos tienen que situarse al final en la
declaracin, es decir, a la derecha de cualquier parmetro normal; de otra manera,
las cosas no funcionar de la forma esperada. Cuando se utiliza el valor por
defecto de un parmetro, obligatoriamente han de utilizarse todos los valores por
defecto de todos aquellos parmetros que se encuentren a su derecha.

El siguiente ejemplo nos muestra el uso de estos tres tipos de parmetros:

<H2>Funciones de Usuario<I></I></H2>
<?php
$mifinal=0;

function CuentaRegresiva($inicio, &$fin, $mensaje = " Boooooom !")


{
for (; $inicio > $fin; $inicio--)
echo $inicio, "...<BR>";
$fin += 2;
echo $mensaje;
}
?>
<TABLE BORDER="0" CELLPADDING="4" CELLSPACING="6">
<TR ALIGN="CENTER">
<TD BGCOLOR="#FFBBAA">
<?php
// $mifinal vale 0
CuentaRegresiva(6, $mifinal);
// $mifinal vale 2
?>
</TD>
<TD BGCOLOR="#FFFBAD">
<?php
// $mifinal vale 2
CuentaRegresiva(8, $mifinal, " Despierta !");
// $mifinal vale 4
?>
</TD>
</TR>
</TABLE>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
139

El resultado se muestra en la siguiente imagen:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
140

3.7. FUNCIONES DE FECHA Y HORA


En casi todos los sistemas informticos hay una fecha de inicio comn, a partir de
la cual se empieza a contar el tiempo. En el caso de los sistemas UNIX la fecha
elegida como comienzo es el da 1 de enero de 1970 a las 00:00:00 GMT, fecha
en que se conoce como el principio de la era UNIX. El contador de tiempo se
conoce como marca de tiempo (timestamp) y representa el nmero de segundos
transcurridos desde una fecha dada. En PHP todas las funciones de fecha/hora
que trabajan con marcas de tiempo hacen referencia a esta fecha.

La siguiente tabla nos muestra el resumen de las funciones de fecha/hora


proporcionadas por PHP, al igual que una breve descripcin de ellas:

Funcin Descripcin
time() Obtiene la marca de tiempo UNIX actual
checkdate() Valida una fecha en formato gregoriano
date() Da formato a la hora y fecha locales
getdate() Obtiene informacin sobre la fecha y la hora locales
gettimeofday() Obtiene la hora actual
gmdate() Formatea la fecha y la hora a formato GMT
gmmktime() Obtiene la marca de tiempo UNIX de una fecha con formato GMT
Formatea la fecha y la hora con formato GMT a las caractersticas
gmstrftime()
locales
microtime() Obtiene la marca de tiempo UNIX actual en microsegundos
mktime() Obtiene la marca de tiempo UNIX para una fecha dada
strftime() Formatear la hora actual de acuerdo con las caractersticas locales
Traduce una fecha u hora descritas en ingls a su correspondiente
strtotime()
marca de tiempo UNIX

time():

Devuelve la marca de tiempo correspondiente al instante en que se ejecuta

checkdate(mes, da, ao):

Verifica si la fecha que se le pasa como parmetro es una fecha correcta. Esta
funcin es bastante til en los formularios en los cuales hay que rellenar campos
de tipo fecha.

Devuelve un valor verdadero si la fecha dada es vlida; en caso contrario,


devuelve un valor falso. Se considera vlida una fecha si:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
141

El ao est entre 0 y 32767, ambos incluidos


El mes est entre 1 y 12, ambos incluidos
El da est en el rango permitido para el mes dado. Se tienen en
consideracin los aos bisiestos.

date(formato [,timestamp]):

Esta funcin nos permite darle un formato especfico a una cadena que contendr
una fecha y una hora. Acepta como parmetro una cadena de formato y un
parmetro timestamp; si ste se omite, se tomar el instante de ejecucin de la
orden.

Valores Descripcin
a "a.m." o "p.m."
A "A.M." o "P.M."
d Da del mes con dos dgitos y con cero a la izquierda, de "01" a "31"
D Da de la semana con tres caracteres, "Fri"
F Nombre del mes, en texto completo, "January"
h Hora en formato, de "01" a "12"
H Hora en formato, de "00" a "23"
g Hora en formato, de "1" a "12" (sin ceros)
G Hora en formato; de "0" a "23" (sin ceros)
i Minutos, de "00" a "59"
j Da del mes en formato "1" a "31"
l Da de la semana, en texto completo, "Friday"
L "1" or "0", 1 si es ao bisiesto y 0 si no lo es
m Mes de "01" a "12"
M Mes con tres caracteres, "Jan"
n Mes de "1" a "12" (sin cero)
s Segundos de "00" a "59"
S Sufijo ordinal en ingls, "th", "nd"
t Nmero de das del mes dado, de "28"a "31"
U Segundos desde el valor de inicio epoch (01-01-1970)
w Da de la semana de "0" (domingo) a "6" (sbado)
Y Ao con cuatro dgitos, "2004"
y Ao con dos dgitos, "04"
z Da del ao de "0" a "365"
Z Diferencia horaria en segundos de "-43200" a "43200"

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
142

Los caracteres distintos a los que aparecen en la tabla, que estn dentro de la
cadena formato, se imprimirn tal cual aparecen. El formato "Z" siempre devuelve
"0" en la funcin gmdate().

<?php
echo "Hoy es ", date("D"), ", ", date("d"), " de ",
date("F"), " de ", date("Y"), "<br>\n";
echo date("\Ho\y e\s D, d \de F \de Y"), "<br>\n";
echo date("\So\\n \l\a\ h:i:s a"), "<br>\n";
echo "La fecha dada ", date("U", 980936503), " fue ",
date("D", 980936503), ", ", date("d", 980936503),
" de ", date("F", 980936503), " de ",
date("Y", 980936503), "<br>\n";
echo "Eran las ", date("h:i:s a", 980936503), "<br>\n";
?>

que generarn como resultado las siguientes fechas y horas:

Dado que todas las opciones de formato de la funcin date() estn pensadas para
la lengua inglesa, construir una frase tan sencilla como:

Hoy es Sat, 06 de March de 2004

se puede convertir en una ardua tarea, ya que las letras H, y y s tienen un


significado especial.

getdate ([timestamp]):

Esta funcin devuelve un array asociativo que contiene informacin sobre la fecha
y hora asociada a la marca de tiempo, timestamp, pasada como parmetro. En
caso de no pasar ningn parmetro a la funcin, sta obtiene la marca de tiempo
del instante en que se ejecuta.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
143

Clave Descripcin
seconds Identifica los segundos
minutes Identifica los minutos
hours Identifica las horas
mday Identifica el da del mes
wday Identifica, en nmero, el da de la semana
mon Identifica, en nmero, el mes
year Identifica, en nmero, el ao
yday Identifica, en nmero, el da del ao
weekday Identifica, en texto, el da de la semana
month Identifica, en texto, el mes

<?php
function listar($matriz, $titulo)
{
// Listar el contenido de un array
echo "<TABLE BORDER=3 WIDTH=400>\n";
echo "<CAPTION ALIGN=TOP>$titulo</CAPTION>\n";
foreach($matriz as $clave => $valor)
{
echo "<TR>\n";
echo "<TD ALIGN=CENTER>$clave</TD>\n";
echo "<TD ALIGN=CENTER>$valor</TD>\n";
echo "</TR>\n";
}
echo "</TABLE>\n";
}
// Se obtiene la hora del sistema
$hora = getdate();
listar($hora, "Informacin de la hora del sistema");
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
144

gettimeofday():

Esta funcin obtiene la hora actual en un array asociativo, cuya estructura


contiene los siguientes campos:

Campo Descripcin
sec Segundos
usec Microsegndos
minuteswest Minutos al oeste del meridiano de Greenwitch
dsttime Correccin horaria entre los horarios de verano e invierno

gmdate (format [,timestamp]):

Esta funcin es muy parecida a la funcin date() anteriormente vista, con la


diferencia que la hora devuelta por esta funcin tiene formato GMT (Greenwich
Mean Time)

A continuacin se muestra un ejemplo donde la hora de la Ciudad de Mxico tiene


6 horas de diferencia con el GMT.

echo "Hora de Mxico ", date("h:i:s a"), "<br>\n";


echo "Hora de Greenwich ", gmdate("h:i:s a"), "<br>\n";

y da como resultado:

Hora de Mxico 05:05:30 pm


Hora de Greenwich 11:05:30 pm

gmmktime (hora, min, seg, mes, da, ao [,is_dst])

Es muy parecida a la funcin mktime(), a excepcin de que los parmetros que se


pasan en la llamada a la funcin representan la fecha en formato GMT

gmstrftime (format, timestamp):

Da formato a una fecha/hora GMT segn las convenciones locales. Al igual que en
las funciones anteriores, la fecha devuelta es la de GMT; por lo dems, es muy
parecida a la funcin strftime().

microtime(void):

Devuelve una cadena compuesta de dos elementos "msec sec", donde, sec,
representa los segundo transcurridos desde la fecha inicial de referencia, es decir,
el 1 de enero de 1970 a las 00:00:00, mientras que la primera parte, msec,
representa los microsegundos restantes. Ambas porciones se devuelven en

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
145

unidades de segundo y esta funcin slo est disponible en los sistemas


operativos que soporten la llamada al sistema gettimeofday().

mktime (hora, min, seg, mes, da, ao [,is_dst]):

Esta funcin devuelve la marca de tiempo (el nmero de segundo transcurridos


desde el 1 de enero de 1970 a las 00:00:00), correspondiente a la fecha y hora
pasadas a la funcin como parmetros. Esta funcin es especialmente til para
realizar clculos matemticos con las fechas o validaciones de ellas.

Los parmetros se toman de izquierda a derecha deforma que, si alguno de ellos


se omite, se sustituye por el valor de la fecha y hora actual correspondiente.
Ninguno de los valores de da, mes y ao pueden tomar el valor 0.

El parmetro is_dst se utiliza para indicar si se tiene en cuenta el horario de


verano o no, 1 corresponde a horario de verano y 0 si no, por defecto tiene el valor
de -1, que indica a PHP que decida cul es el valor correcto del parmetro.

strftime(format, timestamp):

Esta funcin nos permite dar un formato especfico de fecha y hora a la marca de
tiempo que se le pasa como parmetro. En caso de no proporcionar este
parmetro, se tomar por defecto la marca de tiempo correspondiente al instante
en que se ejecuta la funcin. Los formatos posibles a tener en cuenta se
especifican en la siguiente tabla:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
146

Valores Descripcin
%a Nombre del da de la semana abreviado
%A Nombre del da de la semana completo
%b Nombre del mes abreviado
%B Nombre del mes completo
%c Representacin de fecha y hora preferidas en el idioma actual
%d Da del mes en nmero (de 00 a 31)
%H Hora como un nmero de 00 a 23
%I Hora como un nmero de 01 a 12
%j Da del ao como un nmero de 001 a 366
%m Mes como un nmero de 01 a 12
%M Minutos en nmero de 00 a 59
%p am o pm, segn la hora dada, o las cadenas correspondientes en el idioma actual
%s Segundos en nmero de 00 a 59
Nmero de la semana en el ao, empezando con el primer domingo como el primer
%w
da de la primera semana
Nmero de la semana en el ao, empezando con el primer lunes como el primer da
%W
de la primera semana
%x Da de la semana en nmero (el domingo es el 0)
%X Representacin preferida de la fecha sin la hora
%y Representacin preferida de la hora sin la fecha
%Y Ao en nmero de 00 a 99
%Z Ao en nmero de cuatro cifras
%% Nombre o abreviatura de la zona horaria

A continuacin se muestra el mismo ejemplo anterior para que aparezcan los


valores en castellano.

<?php
setlocale(LC_ALL, "SP"); //Formateado para Windows
echo "Hoy es ", strftime("%A"), ", ", strftime("%d"), " de ",
strftime("%B"), " de ", strftime("%Y"), "<br>\n";
echo strftime("Hoy es %A, %d de %B de %Y"), "<br>\n";
echo strftime("Son las %I:%M:%S %a"), "<br>\n";
echo "La fecha dada fue ", strftime("%A", 980936503),
" de ", strftime("%B", 980936503), " de ",
strftime("%Y", 980936503), "<br>\n";
echo "Eran las ", strftime("%I:%M:%S", 980936503), "<br>\n";
?>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
147

Habrs observado en el ejemplo anterior el uso de la funcin setlocale(). sta no


trabaja directamente con fechas, aunque s est relacionada con las funciones que
las muestran. La llamada a setlocale() permite establecer el idioma en el que
aparecern los valores de las fechas, los caracteres separadores decimales y en
general toda aquella informacin que depende de la configuracin regional de la
mquina desde la que se ejecuta el script.

setlocal(Categora, Pas);

Categora:

LC_CTYPE para la conversin de cadenas a la configuracin regional.


LC_NUMERIC para los separadores numricos.
LC_TIME para aplicar formatos de fecha y hora con strftime().
LC_ALL aplica todas las anteriores.

Pas

Permite especificar el idioma con el que se mostrarn los valores devueltos


por las funciones indicadas. Si no se configura ninguno, es decir, es la
cadena vaca , se tomarn los valores de las variables de entorno.

time(void):

Devuelve la hora actual como nmero de segundos transcurridos desde las


00:00:00 del 1 de enero de 1970 GMT (Unix Epoch).

strtotime(cad_fecha [,timestamp]):

Esta funcin traduce una cadena que contiene un texto en ingles que hacer
referencia a una fecha en su correspondiente marca de tiempo relativa a la marca
de tiempo dada en el parmetro opcional timestamp, o bien, a ala marca de tiempo
actual, si este parmetro no se proporciona en la llamada a la funcin.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
148

4. MENSAJES HTTP.

4.1. EL PROTOCOLO HTTP.


Este es un sencillo protocolo cliente-servidor que articula los intercambios de
informacin entre los clientes y los servidores web a travs de operaciones
simples de tipo solicitud/respuesta. Bsicamente controla el modo en el que los
clientes web solicitan recursos de los servidores web y el modo en que stos
les envan dichos recursos de vuelta. Todos los recursos proporcionados por
un servidor web (documentos HTML, grficos, videos, ficheros de sonido..)
estn asociados a un URL(Localizador Uniforme de Recursos).

4.2. ESTRUCTURA DE LOS MENSAJES HTTP.


Las peticiones y repuestas se envan como mensajes de texto que se
componen en dos partes, una cabecera y un cuerpo (ambos elementos se
separan en el mensaje mediante una lnea en blanco). Solo existen dos tipos
de mensajes, uno para realizar peticiones y otro para responderlas. Las
peticiones siempre cuentan con cabecera y, en algunas ocasiones, con cuerpo;
sin embargo, las respuestas en la mayora de las ocasiones cuentan con
ambos componentes. La estructura de estos mensajes se puede resumir en la
siguiente tabla:

Tipo de Mensaje Componente


Comando http
Peticin Cabeceras de la peticin
Lnea en Blanco (separador)
Informacin Adicional
Resultado de la Peticin
Respuesta Cabeceras de la Respuesta
Lnea en Blanco (separador)
Informacin Adicional

4.3. Formularios en HTML


Un formulario HTML es una seccin de un documento que contiene texto
normal, etiquetas HTML y elementos especiales llamados controles (casillas de
verificacin o checkboxes, radiobotones, mens desplegables, etc.) y rtulos
(labels) asociados a estos controles

Los usuarios normalmente completan un formulario modificando sus controles


(introduciendo texto, seleccionando objetos de un men, etc.), antes de enviar
el formulario a un agente para que lo procese (por ejemplo, a un servidor Web,
a un servidor de correo, etc.).

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
149

4.3.1. El elemento FORM

Todos los controles presentes en el formulario, para que sean efectivos, deben
aparecer incluidos dentro de un elemento form de HTML. La etiqueta FORM
acta, por tanto, como contenedor de controles. Pero, adems, especifica entre
otros:

El programa que maneja los datos del formulario una vez haya sido
completado y enviado (atributo action). El programa receptor debe ser
capaz de interpretar las parejas nombre/valor para poder hacer uso de
ellas.

La forma en que se envan los datos del usuario al servidor (atributo


method).

El tipo MINE usado para enviar los datos del formulario (atributo
enctype). El valor por defecto de este atributo es application/x-www-
from-urlencoded.

Juegos de caracteres que acepta el servidor para poder manejar este


formulario (atributo accept-charset). Los agentes de usuario pueden
avisar al usuario del valor de este atributo y/o restringir al usuario esta
posibilidad de, introducir caracteres no reconocidos.

4.3.2. Envi de formularios al servidor


El atributo method del elemento form especifica el mtodo HTTP usado para
enviar los datos del formulario al agente procesador.

Post: los datos del formulario se incluyen en el cuerpo del mensaje que
se enva al agente procesador.

El conjunto de datos del formulario que se enva al agente servidor es una


secuencia de parejas nombre_control/valor construida partir de los
elementos del formulario. Cada uno de los controles tiene asociado un
nombre que viene dado por su atributo name. De igual forma, cada control
tiene tanto un valor inicial, como un valor actual, que ambas cadenas de
caracteres.

Formularios en PHP

Cuando se enva un formulario para su procesamiento, se produce el


emparejamiento de sus controles, a travs de sus respectivos nombres, con
los valores actuales que tienen. Estas parejas variable-valor configuran el
conjunto de datos del formulario que se envan al agente servidor. Como
hemos visto, dependiendo del mtodo HTTP usado (get o post), una vez la
informacin se enviara formando parte de la cadena de consultas (Query
string) que configura la solicitud y, otras veces, formando parte del cuerpo
del mensaje.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
150

PHP, a travs de un conjunto de variables globales, es capaz de recuperar


el conjunto de datos del formulario que han sido enviados desde el cliente
(esto es, el navegador) para, despus, poder trabajar con ellos. Las tres
variables principales para realizar esta operacin son:

Variable Contenido
_POST Array que contiene las variables pasadas a travs del mtodo
POST su uso es anlogo al array
_GET Array que contiene las variables pasadas a travs del mtodo
GET su uso es anlogo al array
_REQUEST Array que contiene las variables pasadas a travs de cualquier
mecanismo de entrada

Ejemplo de paso de valores de formulario a la misma pgina:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
if(!$_POST){

?>
<center><h1>Antes de acceder tienes que teclear tu nombre de Usuario<br>
y tu Contrasea</h1></center>
<table width="800" border="0" align="center" cellpadding="0" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td width="192" height="92">&nbsp;</td>
<td width="147">&nbsp;</td>
<td width="204">&nbsp;</td>
<td width="257">&nbsp;</td>
</tr>
<tr>
<td height="106"></td>
<td rowspan="2" valign="top"><div align="right">USUARIO : <br>
<br>
PASSWORD : <br>
<br>
</div></td>
<td valign="top"><form name="form1" method="post" action="">
<input name="user" type="text" id="user" size="20">
<br>
<br>
<input name="psw" type="password" id="psw">
<br>
<br>
<input type="submit" name="Submit" value="Enviar">
<br>
</form></td>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
151

<td></td>
</tr>
<tr>
<td height="13"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="398">&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
<?php
}else{
if(($_POST['user'] == 'David') && ($_POST['psw'] == 'olidav')){
echo "<center> Bienvenido $_POST[user] ";
echo "<br><hr>";
foreach($_POST as $clave => $valor)
echo "<i>$clave</I> = $valor <br>";
echo "</center>";
}else{
echo "<center><h1>Acceso denegado tu nombre o contrasea no se
oncontro <br> en la base de datos<h1>";
echo "<pre><br><h2><a href='javascript:history.go(-
1)'>Volver<h2></a><pre>";
}

}
?>

</body>
</html>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
152

4.4. ESTRUCTURA DE LAS COOKIES


Bsicamente, las cookies son archivos de texto ASCII que almacenan
informacin siguiendo una estructura bsica de pares identificadores =
valor.
Su tamao es relativamente pequeo, no superando en ningn caso los 4
Kb. El modo en que almacenan, los directorios en que se almacenan y resto
de caractersticas propias de una operacin de lectura/escritura sobre disco
dependen en gran manera del sistema operativo y del navegador que tenga
instalado el equipo cliente. De igual forma, la posibilidad de hacer uso de
cookies dependen de que el software utilizado pueda acceder a la
aplicacin Web (normalmente un navegador) cuente con estas
caractersticas y que, adems, este habilitada.

La siguiente tabla nos muestra la estructura bsica de una cookie:

Elemento Significado
Nombre Indica el nombre que se le ha dado a la cookie.
Valor Indica el valor de la cookie, es decir, el contenido que tiene.
Caducidad Indica cual es el tiempo de validez de la cookie.
Dominio Indica el rango de dominios en los cuales es valida la cookie.
Ruta Contiene el directorio a partir del cual la cookie tiene validez.
Seguro Indica que la cookie ser transmitida nicamente por un
canal seguro SSL.

Es muy importante tener en cuenta que todo el mantenimiento de las


cookies se realiza en la cabecera del mensaje HTTP y, por tanto, deben ser
manejadas antes de que se envi cualquier otra informacin al navegador
(la parte del cuerpo del mensaje HTTP); en caso contrario, obtendremos un
error.

Por otra parte, el valor de una cookie tiene preferencia sobre los valores
pasados mediante un formulario, es decir, cuando un formulario y una
cookie hacen uso de los mismos identificadores, los valores de las cookies
sobrescribirn los valores de las entradas del formulario.

4.4.1. Utilizacin de cookies en PHP


PHP propone una sola funcin para el manejo bsico de cookies (creacin y
borrado) cuya sintaxis es la siguiente:

Int setcookie (string nombre [, string valor]


[, int caducidad] [, string ruta]
[, string dominio] . [, int seguro]);

Para acceder al contenido, se har uso de una variable global, tal y como
veremos mas adelante.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
153

4.4.1.1. Creacin de cookies


Como se puede observar en la definicin de la funcin setcookie ( ), cada
uno de los parmetro coinciden con los elementos que componen la
estructura bsica de una cookie. Tambin vemos que el nico argumento
obligatorio en la llamada al la funcin es el nombre que se le asigna a la
cookie. Sin embargo, en el caso de la creacin es necesario, al menos, que
se asigne un valor inicial.

Cuando no queremos hacer uso de los parmetros de tipo string, se deben


remplazar con la cadena vaca () y los tipo int, con el valor 0. si no usamos
el parmetro caducidad, se tomara por defecto el tiempo que dure la sesin
de trabajo activa en el navegador. De igual modo, si no se utilizan los
parmetros ruta y dominio, se tomara por defecto el camino y el dominio del
servidor en los cuales se ha creado la cookie.

4.4.1.2. Eliminacin de cookies


Como ya sabemos, para borrar una cookie, usamos la misma funcin que
para crearla: setcookie ( ), solo que en este caso la llamada de la funcin
solo contendr como parmetro el nombre de la cookie que deseamos
eliminar del sistema.

Setcookie(nombre_de_la_cookie) ;

4.4.1.3. Consulta de contenidos


Para poder acceder a los contenidos de las cookies, PHP proporciona una
variable global consiste en un array asociativo formado por todas las
variables pasadas a travs de las cookies. El la variable $_COOKIE:

$_COOKIE[nombre_de_la_cookie]

Ejemplo de Cookes.
<?php
$accesos=1;
if(isset($_COOKIE['num_accesos'])){//ver si fue inicializada la cooke
$accesos=$_COOKIE['num_accesos']+1;
}
setcookie("num_accesos",$accesos,time()+3600);
?>
<HTML>
<HEAD>
<TITLE>Trabajando con Cookies</TITLE>
</HEAD>
<BODY>
<CENTER>
<H2>Trabajando con cookies</H2><br>
<H3>Contador de accesos</H3>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
154

<?php
if($accesos>1)
echo "Has accedido a esta pgina <B>$accesos</B> veces";
else
echo "Es la primera vez que accedes a esta pgina";
?>
<BR><BR><BR>
<PRE><A HREF="cookies1.php">Actualizar</A> | <A
HREF="cookies2.php">Eliminar</A></PRE>
</CENTER>
</BODY>
</HTML>

Ejemplo de eliminacin de una cooke.


<?php
setcookie("num_accesos");
?>
<HTML>
<HEAD>
<TITLE>Trabajando con Cookies</TITLE>
</HEAD>
<BODY>
<CENTER>
<H2>Trabajando con cookies</H2><br>
<H3>Contador de accesos borrado</H3>
<BR><BR><BR>
<PRE><A HREF="cookies1.php">volver</A></PRE>
</CENTER>
</BODY>
</HTML>

4.5. SESIONES EN PHP


A lo largo de este capitulo hemos visto que tenemos tres formas bsicas de
hacer que la informacin generada en un script estuviera disponible en
scripts diferentes al de creacin; utilizando formularios, pasando las
variables y sus valores a travs de la URL, o bien, definiendo cookies.

4.5.1. Creacin de sesiones


La configuracin por defecto PHP tiene deshabilitadas las sesiones; esto
quiere decir que, cuando queremos hacer uso de ellas, debemos indicrselo
de forma explicita. Cambiando la configuracin (modificando el valor de la
directiva session.auto_start a 1 en el archivo de configuracin php.ini),
podemos activar por defecto las sesiones en PHP de modo que en el primer
acceso de cada usuario a nuestro sistema se le crea una sesin.

El modo principal de activar el uso de sesiones cuando lo deseemos es


hacer uso de la funcin session_start ( ) cuya sintaxis es la siguiente:

bool session_start ( )

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
155

Esta funcin crea una nueva sesin y genera el identificador, o retoma la


sesin en caso de que ya existiera, utilizando el identificador de sesin que
se haba propagado haciendo uso de la URL o de cookies.

Como hemos dicho anteriormente, en el instante en que se crea una sesion,


se genera un identificador unico para ella. Haciendo uso de la funcion
session_id( ), podemos recuperar o modificar dicho valor. Su sintaxis es la
siguiente:

String session_id ([string id])


Tambin es posible identificar a las sesiones asignndole un nombre
especfico. Para ello, utilizaremos la funcin session_name( ) que tiene la
siguiente sintaxis:

String session_name([string nombre])

4.5.2. Acceso a las variables de sesin

El modo de acceso a las variables de sesin es a travs del array asociativo


$_SESSION disponible como variable global ($HTTP_SESSIONS_VARS en
las versiones anteriores a la 4.2.0)

4.5.3. Otra funciones asociadas con el manejo de sesiones


En este apartado se muestra alguna de las funciones mas representativas
que PHP proporciona para el trabajo con sesiones.

Session_destroy ( ): Elimina todos los datos asociados con la sesin


actual, sin modificar las variables globales asociadas a la sesin ni la
cookie se sesin.

Session_unset ( ): Libera todos los recursos asociados a las variables de


sesin actualmente registradas.

Session_encode ( ): Codifica los datos de la sesin actual en una


cadena.

Session_encode (datos): Decodifica los datos de una sesin pasados


como argumentos en una cadena, generando las variables guardadas
en dicha sesin.

Session_get_cookie_params ( ): Obtiene los parmetros de la cookie de


sesin (duracin, camino, dominio y seguridad), en caso de que este
haya sido el mtodo elegido para gestionar las sesiones.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
156

Session__set_cookie_params (tiempo [, camino [, dominio [, seguridad] ]


] ): Nos permite cambiar los parmetros de la cookie de sesin actual.
session_save_path ( [ string camino] ): Nos permite obtener o modificar
la ruta donde se guardan los datos de la sesin actual.

Ejemplo de sessiones y creacin de variables de session:


<?php
session_start();
if (isset($_SESSION['contador'])) {
$_SESSION['contador']++;
}
else {
$_SESSION['contador'] = 0;
$_SESSION['clave']= 12;
}
$nombre_anterior = session_name('SESION_CONTADOR');
?>
<HTML>
<HEAD>
<TITLE>Trabajando con Sesiones</TITLE>
</HEAD>
<BODY>
<CENTER>
<H2>Trabajando con Sesiones</H2>
<TABLE BORDER="1" CELLPADDING="2" CELLSPACING="4">
<TR ALIGN="center" BGCOLOR="yellow">
<TD COLSPAN="2"><B>Informacin de la Sesin</B></TD>
</TR>
<TR>
<TD BGCOLOR="yellow">ID</TD>
<TD><?php echo session_id() ?></TD>
</TR>
<TR>
<TD BGCOLOR="yellow">Nmero de accesos</TD>
<TD><?php echo $_SESSION['contador'] . ", " . $_SESSION['clave'];?></TD>
</TR>
<TR>
<TD BGCOLOR="yellow">Nombre actual</TD>
<TD><?php echo session_name() ?></TD>
</TR>
<TR>
<TD BGCOLOR="yellow">Nombre anterior</TD>
<TD><?php echo $nombre_anterior ?></TD>
</TR>
</TABLE>
<BR><PRE>
<A HREF="sesiones1.php">Actualizar</A> | <A HREF="sesiones2.php">Ver y
Resetear contador</A>
</PRE>
</CENTER>
</BODY>
</HTML>

Eliminacin de la variable de session:


<?php
session_start();

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
157

//unset($_SESSION['contador']);
?>
<HTML>
<HEAD>
<TITLE>Trabajando con Sesiones</TITLE>
</HEAD>
<BODY>
<CENTER>
<H2>Trabajando con Sesiones</H2><BR><BR>
<P>Variable <B>'contador'</B> actualizada<BR>
de la sesin <B><?php
echo $_SESSION['contador'] . "," . $_SESSION['clave'];
//echo session_id() ?></B><BR>
con nombre <B><?php echo session_name() ?></B>
<BR><BR><A HREF="sesiones1.php">volver</A></P>
</CENTER>
</BODY>
</HTML>

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
158
5. ACCESO A BASES DE DATOS

5.1. CONEXIONES USANDO ODBC

5.1.1. Introduccin
Una vez que el servidor Web ha solicitado al intrprete de PHP la ejecucin de un
determinado script, este se puede encontrar con sentencias que pretenden manipular los
datos almacenados en una base de datos. La forma en que el intrprete de PHP y la base
de datos se pueden conectar es a travs de un ODBC (Open Database Connectivity). Este
consiste en una API estndar, donde para utilizarla hace falta instalar.

5.1.2. Conexin a travs de ODBC


En entornos con sistema operativo Windows, la conexin con ODBC se establece en la
opcin de Fuentes de Datos ODBC, y para entrar a esta opcin tenemos dos formas:
1. En Windows 98 y Me: situarnos en el men Inicio-Panel de control-Fuentes de
datos ODBC. En Windows XP y 2000: entrar en el men Inicio-Panel de control-
Herramientas administrativas-Orgenes de datos (ODBC).
2. Buscar el archivo odbcad32.exe, esto se puede hacer por medio del men Inicio-
Buscar-Archivos y carpetas

En esta opcin nos colocaremos en la pestaa que hace mencin a DSN de sistema, en
esta pulsaremos el botn Agregar, al hacer esto nos proporcionar la siguiente ventana:

En esta tendremos que seleccionar el controlador adecuado y dar clic en el botn finalizar.
Una vez elegido el controlador nos presentar otra ventana como la siguiente:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
159

En esta ventana proporcionaremos el nombre del origen de datos o DSN que va a ser el
encargado de establecer la conexin. Posterior a esto presionaremos el botn
Seleccionar en donde localizaremos el archivo de la base de datos y pulsaremos
aceptar. Al hacer esto el origen creado aparecer en la lista de DSN de sistema.

Concluido el proceso anterior, se puede decir que ya estamos listos para emplear la
conexin a base de datos en PHP.

Cabe mencionar que el nombre de la base de datos a emplear en los siguientes temas es
Sistema.mdb, el DSN es SICE, nombre de usuario es sice y la contrasea sice. La base
de datos tiene las siguientes tablas: Artculo con los campos, idArticulo, descripcin,
existencia, mximo, mnimo, idtipoarticulo (como llave fornea de la tabla Tipoartculo); la
tabla tipoarticulo con los campos, idtipoarticulo y tipo. Adems estableciendo una relacin
de uno a muchos de la tabla de Tipoarticulo a la de Articulo.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
160
5.2. Insert, Update y Delete

5.2.1. Introduccin
Una de las funciones que se emplea con las bases de datos es la insercin, la cual facilita
la inclusin de informacin que posteriormente se tratar de forma pertinente. Para llevar a
cabo esto PHP proporciona funciones que nos permitirn adicionar informacin desde una
pgina hacia la base de datos:

1. odbc_connect (DSN,Usuario,Contrasea); esta funcin establece la


conexin con el gestor de bases de datos, y necesita los siguientes parmetros:
DSN, generado a partir de una conexin con ODBC; Usuario es el proporcionado al
realizar la conexin con ODBC, si se genero un ODBC con SQL el nombre del
usuario por defecto es SA; Contrasea es la que se coloca al generar un ODBC,
para darle seguridad a la base de datos. Devuelve false en caso de no tener xito
en la conexin.
2. odbc_do (conexin, instruccin_SQL); ejecuta la instruccin SQL (insert, update
o delete) asociada con la conexin establecida con odbc_connect. Devuelve false
en caso de haber un error en la ejecucin.
3. odbc_close (conexin); cierra la conexin que se abri con la funcin
odbc_connect.

5.2.2. Insertando datos en PHP


Para llevar a cabo la insercin de informacin a travs de una interfaz desarrollada en
PHP, se efectan los siguientes pasos:

1. Crear un nuevo archivo html en Dreamweaver, con la finalidad de formar el


esquema para introducir datos. En este archivo inserta un formulario y dentro de
este coloca las etiquetas, cajas de texto y botnes para ingresar informacin, el
esquema se genera a partir de la tabla de su base de datos en la cual desee
introducir informacin. Un ejemplo de esquema se muestra a continuacin:

NOTA: es muy importante destacar la inclusin del formulario para su posterior


trabajo con los archivos PHP, que nos brindarn la base para realizar la conexin
con la base de datos.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
161

2. Una vez generado el esquema se procede a modificar algunas de las propiedades


del mismo, para hacer esto nos posicionaremos en la parte de cdigo donde
localizaremos la siguiente lnea de cdigo:

En esta lnea se modificar la accin del formulario, en donde se escribir el


nombre del archivo PHP con el cual se ligara. En este caso se indica que el nombre del
archivo es insert.php.

3. Despus de haber hecho esto, se procede a crear el archivo PHP. Para crearlo hay
que dirigirse al men Archivo-Nuevo-Pgina dinmica-Seleccionar PHP y
presionar el botn crear. La estructura general que tiene el archivo .php es la
siguiente:

9 Se establece la conexin con el gestor de base de datos.


9 Se forma la instruccin SQL que ejecutar la insercin.
9 Se manda ejecutar la instruccin SQL.
9 Se cierra la conexin.

Para este ejemplo el cdigo del archivo insert.php es el siguiente:

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
162

<?php
$clave = $_POST['clave'];
$desc = $_POST['desc'];
$exi = $_POST['exi'];
$max = $_POST['max'];
$min = $_POST['min'];
$tipo = $_POST['tipo'];
// Establece la conexin con el origen de datos
$conexion = odbc_connect ("SICE", "sice", "sice");

if (!$conexion)
echo "No contesta el servidor.";

if (empty($clave) && empty($desc) && empty($tipo))


echo "Falta informacin en las cajas de texto.";
else
{ $insert = "Insert into Articulo (IdArticulo,Descripcion,Existencia,Maximo,Minimo,IdTipoArticulo)
values($clave,'$desc',$exi,$max,$min,$tipo);";
$resul = odbc_do($conexion, $insert);

if ($resul)
echo "Producto insertado";
}
odbc_close($conexion);
?>

4. Una vez hecho el archivo .php se procede a cargar los dos archivos al servidor y
ejecutar el archivo .htm, para verificar si funciona correctamente la insercin de los
datos. Para ejecutarlo necesitamos presionar la tecla F12.

5. Hay que mencionar que el proceso para realizar los update y delete son iguales,
excepto por la instruccin SQL que se va a ejecutar en la funcin odbc_do.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
163
5.3. Querys y cursores

5.3.1. Introduccin
La obtencin y presentacin de informacin de una base de datos se puede hacer en PHP
mediante una consulta (query) y el empleo de cursores, siendo estos quienes hacen el
recorrido por la estructura que contiene los datos extrados por la ejecucin de la consulta.

Estructura de datos obtenida por la

Cursor

Como se menciono anteriormente la obtencin de informacin genera una estructura de


datos de acuerdo con la ejecucin de la consulta, para manejar esta estructura PHP
cuenta con un conjunto de funciones para hacerlo las cuales se detallan a continuacin:

1. odbc_num_fields (cursor); esta funcin proporciona el nmero de campos de los


que se compone la estructura de datos, y requiere del parmetro cursor siendo la
variable que obtiene el resultado de la ejecucin de la consulta con la instruccin
odbc_do.
2. odbc_result (cursor, numero_campo); proporciona el valor del campo, de
acuerdo al registro que se este recorriendo.
3. odbc_fetch_row (cursor); permite conocer el tamao de la estructura obtenida por
la consulta, adems en un proceso de iteracin determina si hay filas por recorrer
devolviendo true en caso afirmativo o false en caso de no haberlas.
4. odbc_free_result (cursor); libera los recursos que genero la obtencin de
informacin.

5.3.2. Consultando informacin en PHP

Para tener una nocin general del procedimiento a seguir para la ejecucin de una
consulta se describen los siguientes pasos:

1. Se repiten los primeros 2 pasos del apartado 5.2.2 Insertando datos en PHP, pero
para este caso el nombre del archivo ser consulta.php.
2. Despus de haber hecho lo anterior se pasa a crear el archivo .php, de la siguiente
manera: ir al men Archivo-Nuevo-Pgina dinmica-Seleccionar PHP y pulsar el
botn crear. La estructura general que tiene el archivo .php es la siguiente:

9 Se establece la conexin con la base de datos.


9 Se forma la instruccin SQL que ejecutar la consulta.
I.S.C. Alejandro Guzmn Zazueta
a_zazuetag@hotmail.com
164
9 Se solicita la ejecucin de la instruccin SQL.
9 Se recibe un identificador del cursor donde estn contenidos los datos
obtenidos a travs del gestor.
9 Se presenta la informacin obtenida.
9 Se liberan los recursos utilizados y se cierra la conexin.

El cdigo del archivo consulta.php se presenta a continuacin:

<form name="form1" method="post" action="">


<table width="691" border="1">
<tr>
<td width="35"><div align="center">Clave</div></td>
<td width="213"><div align="center">Descripci&oacute;n</div></td>
<td width="76"><div align="center">Existencia</div></td>
<td width="69"><div align="center">M&aacute;ximo</div></td>
<td width="79"><div align="center">M&iacute;nimo</div></td>
<td width="179"><div align="center">Tipo de art&iacute;culo </div></td>
</tr>
<div align="center">
<?php
$desc = $_POST['desc'];
$tipo = $_POST['tipo'];

// Se establece la conexin con el gestor de BD


$conexion = odbc_connect ("SICE","sice","sice");

// Establece si la consulta se hace por medio de un dato o no


if (empty($desc))
{ $query = "Select IdArticulo,Descripcion,Existencia,Maximo,Minimo,Tipo ";
$query .= "from Articulo A inner join TipoArticulo B on (A.IdTipoArticulo=B.IdTipoArticulo) ";
$query .= "where B.IdTipoArticulo= $tipo ";
$resultado = odbc_do ($conexion, $query);
$ncampos = odbc_num_fields ($resultado);
$nfilas = 0;//odbc_num_rows ($resultado);

// Se recorre el cursor
while (odbc_fetch_row ($resultado))
{ $nfilas ++;
echo "<TR>";
for ($i=1; $i <= $ncampos; $i ++)
{ echo "<td align='center'>";
if (odbc_result($resultado, $i))
echo odbc_result($resultado, $i);
echo "</td>";
} // Llave del for
echo "</td>"; echo "\n";
}// Llave del if
}
else
{ $query = "Select IdArticulo,Descripcion,Existencia,Maximo,Minimo,Tipo ";
$query .= "from Articulo A inner join TipoArticulo B on (A.IdTipoArticulo=B.IdTipoArticulo) ";
$query .= "where Descripcion= '$desc'";
$resultado = odbc_do ($conexion, $query);
$ncampos = odbc_num_fields ($resultado);
$nfilas = odbc_num_rows ($resultado);
echo "<TR>";
for ($i=1; $i <= $ncampos; $i++)
{ echo "<td align='center'>";
if (odbc_result ($resultado, $i))
echo odbc_result ($resultado, $i);
echo "</td>";
}// Llave del for

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
165
echo "</tr>"; echo "\n";
}// Llave del else

// Si no hay datos se indica


if ($nfilas == 0)
{ echo "<tr><td colspan=9><center>";
echo "No hay articulos de acuerdo a los parmetros especficados.";
echo "</center></td></tr>\n";
}

echo "</table>\n";
//echo "<br><hr><br>\n";

// Se liberan los recursos utilizados por la consulta


odbc_free_result ($resultado);
// Se cierra la conexin
odbc_close ($conexion);
?>
</form>

3. Una vez hecho el archivo .php se procede a cargar los dos archivos al servidor y
ejecutar el archivo .htm. Para verificar si funciona correctamente la consulta se
puede introducir un nombre de artculo o simplemente presionar el botn enviar y
as ejecutar la consulta de acuerdo al tipo que este seleccionado el el men. Para
ejecutarlo necesitamos presionar la tecla F12.

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
166
Anexo I. COMANDOS GENERALES DE HTML.

Resumen de las etiquetas HTML ms importantes.

Etiquetas Unordered list lista Define el principio y el final de una lista 1. ste es el primer punto
<ul></ul> Significado
con vietas no numerada;Propiedades
introducen una sangra Representacin
2. ste es el segundo punto
HTML
<html> Hyper Text Markup Definen el principio y el final del
</html> Language documento
<head> Definen el principio y el final de la
Cabecera
</head> cabecera
<title> Parte de la cabecera, el contenido aparece
Ttulo
</title> en la lnea de cabecera
<body> Definen el principio y el final del cuerpo
Cuerpo
</body> principal del texto

<h1></h1> Heading 1 Ttulo 1 Negrita, tamao mayor Ttulo 1


<h2></h2> Ttulo 2 Negrita, tamao grande Ttulo 2
<h3></h3> Ttulo 3 Negrita, tamao medio Ttulo 3
<h4></h4> Ttulo 4 Negrita, normal Ttulo 4
<h5></h5> Ttulo 5 Negrita, pequeo Ttulo 5

<h6></h6> Ttulo 6 Negrita, muy pequeo Ttulo 6

<b></b> Bold negrita Atributo de texto Ejemplo en negrita

<i></i> Italics cursiva Atributo de texto La cursiva esta inclinada


Atributo de texto, no es aconsejable
Underlined El subrayado parece ms
<u></u> utilizar subrayados por que existe el
subrayado importante
peligro de confundirlo con hipervnculos
&nbsp; Non breaking space Caracter en blanco protegido 12 de octubre
Define un prrafo y crea automticamente ste es un (breve) prrafo.
<p></p> Paragraph prrafo un espacio entre un prrafo y el siguiente. sta es otro prrafo ms
La etiqueta final no es imprescindible largo.
sta es una mini-oracin.
sta oracin empieza con
Crea un salto de lnea, no necesita una
<br/> Break salto de lnea una lnea nueva, pero no
etiqueta final
introduce ningn prrafo
nuevo.
Horizontal rule lnea Introduce una lnea horizontal, no necesita
</hr> ____________________
horizontal una etiqueta final
Prrafo con caracteres Crea un prrafo en blanco, un espacio
<p>&nbsp;</p>
en blanco protegidos vaco
Puntos de enumeracin; el smbolo
<li></li> List entrada de lista utilizado para la enumeracin depende de Consultar celdas inferiores
la definicin (consulte celdas inferiores)
Ordered list lista Define el principio y el final de una lista ste es el primer punto
<ol></ol>
numerada numerada; introducen una sangra ste es el segundo punto

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
167
3.0.2 Colores para enlaces y fuentes

Nombre ingls hexadecimal Nombre espaol


black #000000 (negro)
silver #c0c0c0 (plateado)
gray #808080 (gris)
white #ffffff (blanco)
maroon #800000 (marrn)
red #ff0000 (rojo)
purple #800080 (lila)
fuchsia #ff00ff (fucsia)
green #008000 (verde oscuro)
lime #00ff00 (verde limn)
olive #808000 (verde oliva)
yellow #ffff00 (amarillo)
navy #000080 (azul oscuro)
blue #0000ff (azul)
teal #008080 (verde azulado)
aqua #00ffff (azul cielo)

3.0.3 Atributos de la etiqueta body

Atributo Notas Ejemplo


background Grfico de fondo background=jeffe.gif
bgcolor Color de fondo bgcolor=yellow
text Color de texto text=#800080
link Vnculo no visitado link=green
vlink Vnculo visitado vlink=red
Vnculo activo, color
alink cuando se hace clic con le alink=white
ratn en el enlace

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com
168
3.0.4 Opciones avanzadas de configuracin de la fuente

Cdigo fuente Representacin en navegador Notas


Texto de definicin,
HTML significa Lenguaje de
<dfn>...</dfn> explicacin de conceptos,
marcado de hipertexto
con frecuencia en cursiva
<h2>...</h2> ste es un ttulo 2 6 niveles de ttulo en total
Enftico, resaltado, con
<cm>...</cm> resaltado
frecuencia en negrita
Muy enftico, con frecuencia
<strong>...</strong> strong
en negrita
Introduzca ahormad home, y siga Para el cdigo fuente
<code>...</code>
escribiendo informtico
Introduzca en primer lugar
El texto que debe
<kbd>...<kbd> reproducir cd, y a continuacin
introducirse con el teclado
dir
Consulte tambin Dave Raggett
Notas bibliogrficas,
<cite>...</cite> u. A. :HTML 4. Addison-Wesley
normalmente en cursiva
1998.
Se muestra el texto tal y
<samp>...</samp> Observe $!%; t y lo ver.
como se ha introducido
Para citas cortas en el texto,
Hola, dijo el caracol, vuelvo a
<q>...</q> tambin pueden utilizarse
estar aqu
comillas
<i>...</I> Esto esta en cursiva Italics, cursiva
<tt>...</tt> Fuente courier Teletype, teletipo
<b>...</b> La negrita tambin es muy til Bold, negrita
Fuente grande, por ejemplo,
<big>...</big> Haba una vez para destacar las letras
iniciales
<small>...</small> Small is beautiful. Para Fuentes pequeas
<sub>...</sub> H2O Subscript, subndice
2
<sup>...</sup> 10 Superscript, superndice
Puede confundirse con los
<u>...</u> Subrayado, ya no se utiliza
enlaces.
<strike>...</strike> ste texto est tachado. Tachado, no debe utilizarse

I.S.C. Alejandro Guzmn Zazueta


a_zazuetag@hotmail.com

You might also like