PHP4 PDF
PHP4 PDF
PHP4 PDF
Manual de PHP
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
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
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.
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 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
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.
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.
Servidor
CLIENTE 1
SOLICITUD
2 3
RESPUESTA
SCRIPTS
PHP
1. El usuario pulsa sobre un link solicitando un documento (un archivo .cgi o .exe) y el
navegador enva la solicitud al servidor.
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.
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
4 De nueva cuenta, hacer clic en el botn Next, y aparecer esta otra ventana:
- Network Domain:
- Server Name:
Aqu debe escribir la direccin de correo electrnico del administrador del servidor
web; por ejemplo: yo_mimo@hotmail.com
- 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:
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 todo es correcto aparecer una ventana diciendo que el servidor Apache ha sido
configurado exitosamente.
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:
Enseguida, abra el archivo php.ini para ser configurado de acuerdo a los siguientes
puntos:
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.
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"
<Directory "c:/Apache/Apache2/htdocs">
Directory "c:/InetPhp"
Esta ltima lnea indica al servidor Apache que identifique las extensiones .php para que el
mdulo del intrprete entre en funcionamiento.
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.
1. Seleccione Sitio > Administrar sitios (es decir, seleccione Administrar sitios en el
men Sitio). Aparece la ventana Administrar sitios.
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.
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.
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:\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.
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.
<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>
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
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.
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:
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:
Maana
Tarde
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:
Agregamos los datos que estn en el dibujo anterior dentro de cada celda, seleccionando
la celda correspondiente e ingresaremos el texto.
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.
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:
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:
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:
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.
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.
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:
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.
Esto tambin se puede hacer por medio del cdigo haciendo lo siguiente:
Recuerde que todos los controles de formularios se insertan como la caja de texto en
insertar -> formularios ->tipo de formulario que se quiere.
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.
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).
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.
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:
El cdigo es el siguiente:
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>
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:
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:
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".
Incluimos lo acordado:
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:
o Seleccione Insertar > Elemento Flash > Nombre del elemento Flash.
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.
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.
ID de capa es el nombre de la capa. Tambin puede ser cambiado a travs del panel
Capas, haciendo doble clic sobre l.
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.
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.
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.
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.
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.
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.
Con la barra Insertar puede crear un conjunto de marcos y mostrar el documento actual
en uno de los nuevos 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.
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.
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.
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:.
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.
3. LENGUAJE PHP.
3.1 FORMATO DEL CDIGO PHP
3.1.1. Delimitadores
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";
?>
<?
echo "Esto es una instruccin PHP";
?>
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.
<?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
*/
?>
<?php
echo "Esto es un ejemplo de fin de lnea";
?>
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:
<?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>";
?>
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:
<?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";
?>
<?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.
3.2.2.4. Cadenas
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.
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
Y el ltimo ejemplo
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";
?>
3.2.2.5. Arrays
0 1 2 3 4 5
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.
<?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;
?>
<TD BGCOLOR="yellow">matriz1</TD>
<td> </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>";
?>
<?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>";
?>
<?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.
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";
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.
<?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.
?>
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.
<?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";
La siguiente tabla muestra algunas de las variables que PHP ofrece al programador para
facilitar su tarea:
Variable Significado
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.
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();
?>
<?php
$cadena1 = "Uno "; // mbito global
function Escribe3(){
echo "Escribe3 = ";
echo $GLOBALS["cadena1"], "<BR>\n";
}
Escribe3();
?>
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.
<?php
function Test()
{
static $count = 0;
$count++;
echo $count;
if ($count < 10)
{
Test ();
}
}
Test();
?>
<?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";
?>
Es ms, la sentencia:
<?php
echo "$Var ${$Var}";
?>
<?php
echo "$Var $Hola";
?>
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 PHP se puede tener acceso directo a los valores introducidos por un usuario
en los campos de un formulario de una pgina Web.
echo "</center>";
}
else
{
echo "<center><h1>Acceso denegado nombre o contrasea
Valido<br> en la base de datos</center></h1>";
Cuando se enva un formulario, tambin es posible usar una imagen en vez del
botn submit estndar con una etiqueta como:
Funcin Descripcin
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>";
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.
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)
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>';
?>
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>";
?>
3.2.4. Constantes
define(constante, valor)
<?php
define(PI, 3.1416);
echo El valor de PI es , PI;
?>
constant(constante)
defined(constante)
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.
TRUE Verdadero.
FALSE Falso
<?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>";
?>
3.2.5. Expresiones
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:
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:
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.
3.2.6. Operadores
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";
?>
Variable = expresin
<?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";
?>
<?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";
?>
La razn de las dos variaciones de "Y" y "O" es que operan con distinta
precedencia. (Ver precedencia de operadores)
Operador
! ~ ++ -- (casting)
/ * %
+ - .
<< >>
== != === !==
&
&&
||
?:
3.3.1 if
if (expr)
sentencia
3.3.2. else
3.3.3. elseif
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.
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;
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:
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:
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;
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).
$i = 0;
do {
echo $i;
} while ($i>0);
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);
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:
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++) ;
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.
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:
La segunda manera hace lo mismo, salvo que la clave del elemento actual ser
asignada a la variable $key en cada iteracin.
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.
reset( $arr );
while( list( , $value ) = each( $arr ) ) {
echo "Valor: $value<br>\n";
}
reset( $arr );
while( list( $key, $value ) = each( $arr ) ) {
echo "Key: $key; Valor: $value<br>\n";
}
foreach($a as $v) {
echo "Valor actual de \$a: $v.\n";
}
foreach($a as $v) {
echo "\$a[$i] => $k.\n";
}
3.3.9. 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:
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";
}
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.
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;
3.3.10. break
$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.
<?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";
?>
<?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>";
?>
<?php
$base=2;
$exponente=8;
include("include2.php");
?>
Como ya vimos, una cadena se puede delimitar con comillas dobles ( ) o comillas
simples( ).
$str = <<<EOD
Ejemplo de cadena
Expandiendo mltiples lneas
usando sintaxis de documento incrustado.
EOD;
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:
<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>
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 ..
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.
<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";
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.
<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>
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.
<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>
<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> </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>
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";
?>
<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";
3.5. ARREGLOS
<?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;
?>
<?php
$matriz1[3]="cougar";
$matriz1[5]="ford";
$matriz1[7]="2.500";
$matriz1[]="V6";
$matriz1[]=172;
?>
<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>
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>
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>";
<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>
<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>
Una operacin habitual a realizar cuando trabajamos con arrays es recorrerlo para
obtener sus elementos, para modificarlos o trabajar con ellos.
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.
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.
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.
reset (matriz): devuelve el valor del primer elemento del array y sita el puntero
interno en su primera posicin.
<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>";
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().
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>
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>
<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:
<?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;
}
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
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_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).
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;
}
}
?>
<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>
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.
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.
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>
<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);
?>
</TD>
<TD BGCOLOR="#FFFBAD">
<?php
CuentaRegresiva(5);
?>
</TD>
</TR>
</TABLE>
<H2>Funciones de Usuario<I></I></H2>
<?php
define("Fin_Cuenta", 0);
$mifinal=3;
<TD BGCOLOR="#FFFBAD">
<?php
CuentaRegresiva(8, Fin_Cuenta);
?>
</TD>
</TR>
</TABLE>
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.
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.
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.
<H2>Funciones de Usuario<I></I></H2>
<?php
$mifinal=0;
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():
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.
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"
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";
?>
Dado que todas las opciones de formato de la funcin date() estn pensadas para
la lengua inglesa, construir una frase tan sencilla como:
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.
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");
?>
gettimeofday():
Campo Descripcin
sec Segundos
usec Microsegndos
minuteswest Minutos al oeste del meridiano de Greenwitch
dsttime Correccin horaria entre los horarios de verano e invierno
y da como resultado:
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
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:
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
<?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";
?>
setlocal(Categora, Pas);
Categora:
Pas
time(void):
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.
4. MENSAJES HTTP.
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.
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.
Post: los datos del formulario se incluyen en el cuerpo del mensaje que
se enva al agente procesador.
Formularios en PHP
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
<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"> </td>
<td width="147"> </td>
<td width="204"> </td>
<td width="257"> </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>
<td></td>
</tr>
<tr>
<td height="13"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="398"> </td>
<td> </td>
<td> </td>
<td> </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>
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.
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.
Para acceder al contenido, se har uso de una variable global, tal y como
veremos mas adelante.
Setcookie(nombre_de_la_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>
<?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>
bool session_start ( )
//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>
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.
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:
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.
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:
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:
<?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 ($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.
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.
Cursor
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:
// 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
echo "</table>\n";
//echo "<br><hr><br>\n";
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.
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