Sunteți pe pagina 1din 54

PHP Y FIREBIRD

Primera Parte

Walter R. Ojeda Valiente

Asuncin, Paraguay, Enero de 2012

NDICE
INTRODUCCIN............................. 1 EL LENGUAJE PHP.......................... 2
Qu es PHP? ................................................ 2 Servidor web y Cliente web .................................. 2 Servidor web ................................................ 2 Cliente web ................................................. 2 Resumen de Servidor web y Cliente web ....................... 3 Pginas web estticas y pginas web dinmicas ............... 3 Cmo se comunican el Cliente y el Servidor sin PHP? ........ 3 Cmo se comunican el Cliente y el Servidor con PHP? ........ 4 Qu debo instalar en mi computadora? ....................... 5 Puedo tener mi sitio web en mi propia computadora? ......... 5 De dnde puedo descargar el XAMPP? ......................... 6 Cul de ellos debo descargar? .............................. 7 Cmo se instala el XAMPP? .................................. 7 Dnde debo descomprimir el archivo .zip? ................... 7 Qu viene incluido dentro del XAMPP? ....................... 7 Cmo inicializo el XAMPP? .................................. 8 Qu es el Panel de Control del XAMPP? ...................... 9 Cmo s si el intrprete PHP se est ejecutando? ........... 9 Qu significa instalar Apache como un servicio? ............ 9 Cul es la carpeta raz del AMPP? ......................... 10 Cmo creo la estructura de carpetas de mi sitio web? ....... 10

PROGRAMACIN EN PHP......................11
Conocimientos previos ...................................... Ejemplos ................................................... Cmo se crea un programa PHP? ............................. Cmo se ejecuta un programa PHP? .......................... Cul es el resultado de la ejecucin de un programa PHP? .. Comentarios ................................................ Variables en PHP ........................................... Tipos de variables ......................................... Saltos de lnea ............................................ Concatenacin .............................................. Comillas simples y comillas dobles ......................... Estructura condicional IF .................................. Operadores de comparacin .................................. Estructura de repeticin FOR ............................... Estructura de repeticin WHILE ............................. Estructura de repeticin DO WHILE .......................... Funciones internas ......................................... Funciones del usuario ...................................... Arrays tradicionales ....................................... Arrays asociativos ......................................... Envo de datos desde un formulario ......................... Recepcin de datos ......................................... Control Checkbox ........................................... Control Radio .............................................. Control Select ............................................. Control TextArea ........................................... Archivos de texto .......................................... Creacin y apertura de un archivo de texto ................. Lectura de un archivo de texto ............................. 11 11 11 12 12 12 12 13 13 14 15 15 17 17 18 19 20 21 24 25 27 29 30 32 33 35 36 38 40

BASES DE DATOS FIREBIRD..................41


Qu debo hacer para que PHP reconozca a Firebird? ......... Cul es la Base de Datos Firebird que utilizaremos? ....... Insertar filas en una tabla ................................ Listar todas las filas de una tabla ........................ Consultar datos ............................................ Sistema de ingreso de datos por Internet ................... Qu significan estos errores? ............................. 42 42 43 45 46 48 51

INTRODUCCIN
Utilizar Firebird en las aplicaciones de escritorio multiusuario que requieren acceso a una (o ms de una) Base de Datos es una muy buena opcin, pero en estos tiempos donde Internet est en todas partes tambin debemos plantearnos la posibilidad de usarlo en un Servidor web para poder realizar las operaciones de insercin, borrado, actualizacin y consulta desde cualquier computadora, telfono celular, tableta u otro dispositivo que tenga conexin con Internet. Este documento justamente trata ese punto, la intencin es explicar claramente los pasos que se deben seguir para interactuar con una Base de Datos alojada en un Servidor web. Al hacer eso conseguiremos que nuestras aplicaciones sean muchsimo ms poderosas, con un gran valor agregado y por lo tanto ms vendibles que las de la competencia, aquellos que se han quedado atrasados y an no interactan con Internet. Hay muchsimo material sobre PHP que se puede conseguir fcilmente, tanto documentos como vdeos como grupos de usuarios que pueden colaborar despejando las dudas que uno normalmente tiene al empezar a programar con un nuevo lenguaje. De todas maneras, para facilitar la tarea en este documento hay una introduccin al lenguaje PHP y muchas pginas con ejemplos escritas en l para que el aprendizaje resulte muy sencillo. Lo bueno del PHP es que si tienes experiencia con algn otro lenguaje de programacin te resultar demasiado fcil aprenderlo, tiene una sintaxis clara y no hay cosas rebuscadas, todo es muy directo, no deberas tardar ms de unos pocos das en dominarlo completamente. Aunque el SGBD (Sistema Gerenciador de Bases de Datos) en el cual est basado este documento es Firebird SQL, los conceptos son los mismos para cualquier otro SGBD (MySQL, PostgreSQL, Oracle, etc.)

-1-

EL LENGUAJE PHP
QU ES PHP? PHP es el acrnimo recursivo de PHP: Hypertext Preprocessor), se trata de un lenguaje interpretado, de alto nivel, embebido en pginas HTML y ejecutado en el Servidor. Es un lenguaje interpretado porque no se lo compila, sus instrucciones van ejecutndose a medida que un intrprete las va leyendo Es de alto nivel porque no se preocupa por asignaciones de memoria, pginas de memoria, interrupciones y todo eso, sino que sus instrucciones son fciles de entender por los seres humanos Es embebido en pginas HTML porque el cdigo fuente de un programa PHP siempre est metido dentro de una pgina con formato HTML o que puede ser reconocida por los navegadores (Internet Explorer, Mozilla Firefox, Google Chrome, Opera, etc.) Sus instrucciones son ejecutadas en el Servidor, no en el Cliente como es el caso de JavaScript

SERVIDOR WEB Y CLIENTE WEB Cuando se habla de Servidor web y de Cliente web se puede estar refiriendo al hardware o al software. En todo este documento siempre nos referiremos al software.

SERVIDOR WEB Un Servidor web es un programa que se encarga de enviarle pginas HTML (las que pueden mostrar los navegadores) a otro programa, el Cliente web (el navegador: Internet Explorer, Firefox, Chrome, Opera, etc.) que se las pidi. Adems de las pginas HTML tambin puede enviar fotos, vdeos, canciones, grficos, u otros documentos que estn incluidos dentro de dichas pginas.

CLIENTE WEB Un Cliente web es un programa, comnmente conocido como el navegador, el cual le enva una peticin al Servidor web y recibe una respuesta de ste

-2-

RESUMEN DE SERVIDOR WEB Y CLIENTE WEB Resumiendo: un Servidor web es un programa de computadora que recibe un mensaje de un Cliente web, lo procesa, y le enva una pgina HTML a ese Cliente. Un Cliente web es un programa de computadora que enva un mensaje al Servidor web, recibe una pgina HTML de ste y muestra esa pgina al usuario.

PGINAS WEB ESTTICAS Y PGINAS WEB DINMICAS Las pginas web pueden ser estticas o dinmicas. Son estticas aquellas que siempre muestran lo mismo, la nica forma de cambiar su contenido es que el administrador del sitio web introduzca modificaciones en ellas. Por ejemplo, si tenemos una pgina productos.html todos quienes la vean siempre vern exactamente los mismos productos, la nica forma de que vean otros productos es que esa pgina sea editada y luego vuelta a subir al sitio web. Son dinmicas aquellas que cambian su contenido dependiendo de una condicin (el da de la semana, la hora del da, el nombre del usuario, un dato que introdujo el usuario, etc.). Estas son mucho ms flexibles y normalmente mucho ms tiles que las estticas aunque ambas tienen su razn de ser. Con PHP lo que haremos sern pginas web dinmicas.

CMO SE COMUNICAN EL CLIENTE Y EL SERVIDOR SIN PHP? Cuando no se usa PHP la comunicacin es as: 1. Se escribe en el navegador (o tambin llamado Cliente web) el nombre de la pgina que se desea visitar (por ejemplo: www.abc.com.py/index.html) 2. El Cliente web (o sea el navegador, por ejemplo: Firefox) enva el mensaje a travs de Internet al Servidor web, solicitndole que le devuelva un archivo que tiene ese nombre (en este caso: index.html) 3. El Servidor web, que es un programa que se ejecuta en una computadora y que se encuentra en la direccin www.abc.com.py, recibe el mensaje 4. Busca ese archivo en su disco duro 5. Si lo encuentra, enva el archivo, as mismo como est grabado en el disco duro al Cliente web (o sea: al navegador) 6. Si no lo encuentra, le enva una pgina avisndole que no encontr el archivo (la pgina que tiene el famoso error 404) 7. El Cliente web (o navegador) le muestra al usuario la pgina que recibi

-3-

CMO SE COMUNICAN EL CLIENTE Y EL SERVIDOR CON PHP? Cuando se usa PHP la comunicacin es as: 1. Se escribe en el navegador (o tambin llamado Cliente web) el nombre de la pgina que se desea visitar (por ejemplo: www.abc.com.py/index.php) 2. El Cliente web (o sea el navegador, por ejemplo: Firefox) enva el mensaje a travs de Internet al Servidor web, solicitndole que le devuelva un archivo que tiene ese nombre (en este caso: index.php) 3. El Servidor web, que es un programa que se ejecuta en una computadora y que se encuentra en la direccin www.abc.com.py recibe el mensaje 4. Al ver que la pgina tiene la extensin .php se la enva al intrprete PHP (que es otro programa alojado en la misma computadora que el Servidor web) 5. El intrprete PHP recibe el mensaje (o sea: el nombre de un archivo que tiene extensin .php) y lo busca en el disco duro 6. Si lo encontr, ejecuta todos los comandos contenidos en ese archivo (y si es necesario, se comunica con un gestor de Bases de Datos, como podra ser el Firebird) 7. El resultado de la ejecucin de todos los comandos contenidos en el archivo con extensin .php es un archivo con extensin .html 8. Si el archivo con extensin .php no existe en el disco duro del Servidor web entonces el intrprete PHP genera un archivo con extensin .html conteniendo un mensaje de error y algunos datos ms (la fecha, la hora, el nombre del Servidor web, la versin del intrprete PHP, etc.) 9. Enva el archivo que gener, el cual tiene extensin .html, al Servidor web 10. El Servidor web enva la pgina (el archivo con extensin .html) al Cliente web (o sea, al navegador Firefox) 11. El Cliente web le muestra al usuario la pgina (el archivo .html) Aqu hay algo importante que notar: en los lenguajes de programacin normales (Visual FoxPro, Basic, Delphi, Java, etc.) la salida es normalmente la pantalla. En cambio, en PHP la salida es la creacin de un archivo que tiene la extensin .html, el cual se enva al Servidor web el cual lo enva al Cliente web, el cual se lo muestra al usuario.

Pantalla N 1 En la pantalla N 1 se ve un ejemplo de lo que ocurre cuando el archivo .php no existe en el disco duro del Servidor web. -4-

QU DEBO INSTALAR EN MI COMPUTADORA? Todas las computadoras ya tienen instalado un programa que pueden usar como Cliente web, por ejemplo: Internet Explorer, Mozilla Firefox, Google Chrome, etc., son todos ejemplos de Clientes web. Sin embargo no es el mismo caso con el Servidor web, ste debe ser descargado e instalado antes de poder ser usado. Si deseamos que nuestra computadora acte como un Servidor web y que tambin interprete programas PHP entonces necesitaremos: 1. El programa Servidor web (puede ser Apache, IIS o algn otro) 2. El intrprete del lenguaje PHP Podemos buscarlos, instalarlos y configurarlos por separado, sin embargo la mejor opcin es usar un instalador que los tiene a ambos incluidos, los ms conocidos son WAMP y XAMPP Por qu usar un instalador todo-en-uno? Porque toda (o casi toda) la configuracin ya est realizada y solamente podemos dedicarnos a usar esos programas, sin perder tiempo en configurarlos.

PUEDO TENER MI SITIO WEB EN MI PROPIA COMPUTADORA? S, si tienes un programa Servidor web y un intrprete del lenguaje PHP puedes tener todo tu sitio web (las pginas .html, las pginas .php, los archivos .css, las fotos, los vdeos, la Base de Datos, etc.), en tu propia computadora, pero vale la pena? Ventajas No tienes lmite en el espacio de almacenamiento. Casi todos los proveedores de hosting te asignan una cantidad x de megabytes, en cambio si tu sitio est en tu propia computadora puedes utilizar todo tu disco duro para ello si lo deseas. No tienes lmite en el ancho de banda. Casi todos los proveedores de hosting te limitan la cantidad de megabytes que se pueden subir o bajar mensualmente en tu sitio. No debes pagar por el hosting. Aunque hay muchos sitios gratis, siempre tienen algunas limitaciones y los que realmente valen la pena son de pago. Eliminas la posibilidad de que los administradores del web hosting estn curioseando en tus programas y en tus Bases de Datos Puedes instalar todos los programas que necesites (y que te gusten): Servidor web, Servidor de FTP, Servidor de e-mail, etc. Puedes tener siempre esos programas actualizados con su ltima versin

-5-

Desventajas El riesgo de seguridad se incrementa mucho, al estar expuesto a Internet puedes ser vctima de hackers. Eso significa que debes preocuparte por ese tema, buscar los ltimos parches de los programas que utilizas, monitorear lo que entra y lo que sale de tu computadora, usar un buen firewall, un buen antivirus, un buen anti-malware y en caso de hallar algo malo o sospechoso tomar los recaudos adecuados Tu computadora debe estar encendida las 24 horas, los 365 das del ao, pues si no est encendida no se podr acceder a ella. Necesitars de un muy buen equipo de aire acondicionado para evitar que se sobrecaliente, sobre todo en poca de verano Tus gastos en concepto de energa elctrica aumentarn muchsimo Si necesitas apagar tu computadora para hacerle alguna tarea de mantenimiento (ampliarle la memoria, cambiarle el disco duro, etc.) tu sitio estar inaccesible Necesitars contratar a alguien que se encargue de verificar constantemente que el hardware est bien y que no ests recibiendo ataques de hackers o de malware (o hacerlo t mismo, pero eso lleva su tiempo) Si tu sitio es muy concurrido entonces necesitars de un muy buen ancho de banda para evitar que el acceso sea lentsimo (y un ancho de banda grande puede llegar a ser muy caro) Deberas evaluar bien todos los puntos anteriores antes de tomar una decisin. Lo que normalmente se hace es lo siguiente: se desarrolla el sitio web en la computadora propia y cuando todo est ok se lo sube a un hosting gratuito o de pago.

DE DNDE PUEDO DESCARGAR EL XAMPP? La pgina principal es la siguiente: http://www.apachefriends.org/en/xampp.html All encontrars mucha documentacin y comentarios. El XAMPP viene en dos sabores: 1. Para ser instalado 2. Para ser descomprimido en una carpeta El instalador del XAMPP puede ser descargado desde: http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.7.7/xamppwin32-1.7.7-VC9-installer.exe/download El archivo comprimido (con formato .zip) puede ser descargado desde: http://sourceforge.net/projects/xampp/files/XAMPP%20Windows/1.7.7/xamppwin32-1.7.7-VC9.zip/download

-6-

CUL DE ELLOS DEBO DESCARGAR? Depende de lo que quieras hacer: los programas que se instalan en Windows modifican el Registro del Windows (y eso puede hacer a tu computadora un poco ms lenta). Si vas a usar el Servidor web frecuentemente entonces te conviene instalarlo pero si lo vas a usar muy espordicamente entonces lo mejor sera que lo descomprimas en una carpeta, normalmente C:\xampp\

CMO SE INSTALA EL XAMPP? Como cualquier otro programa Windows. Lo nico que debes tomar en consideracin es lo siguiente: no es recomendable que lo instales en C:\Program files\ o en C:\Archivos de Programa\ sobre todo si usas Windows Seven o posterior. Lo normal es instalarlo en la carpeta C:\xampp\

DNDE DEBO DESCOMPRIMIR EL ARCHIVO .ZIP? Si elegiste la opcin de descargar un archivo comprimido y lo deseas descomprimir para usarlo, lo normal es que lo hagas en la carpeta C:\ para que se guarde en la carpeta C;\xampp\ que es la que asumiremos en todo este documento.

QU VIENE INCLUIDO DENTRO DEL XAMPP? En el momento de escribir este documento, lo siguiente: Apache 2.2.21 MySQL 5.5.16 PHP 5.3.8 phpMyAdmin 3.4.5 Filezilla FTP Server 0.9.39 Tomcat 7.0.21

Los programas y las versiones de los mismos pueden variar en el futuro.

-7-

Apache es el Servidor web MySQL es un SGBD muy usado en Internet PHP es el intrprete del lenguaje PHP phpMyAdmin es un programa escrito en PHP encargado de administrar Bases de Datos MySQL, puede agregar, eliminar y modificar tablas, ejecutar sentencias SQL, etc. Filezilla es un Servidor de FTP, eso significa que permite que los archivos que se encuentran en un sitio web puedan ser descargados desde otras computadoras Tomcat es un contenedor de servlets. Los servlets son programitas que se ejecutan en el Servidor (a la inversa de los applets, que son programitas que se ejecutan en el Cliente).

CMO INICIALIZO EL XAMPP? Si lo instalaste, ya est listo para ser usado. Pero si lo descomprimiste en una carpeta entonces antes de usarlo debers ejecutar el programa: C:\xampp\setup_xampp.bat y esperar unos segundos, hasta ver esta pantalla:

Pantalla N 2 Eso lo debes hacer una sola vez, la primera vez que usars el XAMPP.

-8-

QU ES EL PANEL DE CONTROL DE XAMPP? Es un programa que te indica el estado actual de las aplicaciones incluidas en el paquete. Si quieres iniciar una de ellas debes hacer click sobre su botn Start y si quieres detener una aplicacin, debes hacer click sobre su botn Stop.

Pantalla N 3 El nombre completo es: C:\xampp\xampp-control.exe

CMO S SI EL INTRPRETE PHP SE EST EJECUTANDO? Fjate en el Panel de Control de XAMPP si Apache se est ejecutando (o sea, si est en Running). Si lo est, PHP tambin. En la Pantalla N 2 vemos que s se est ejecutando Apache (y por lo tanto, tambin se est ejecutando el intrprete de PHP).

QU SIGNIFICA INSTALAR APACHE COMO UN SERVICIO? Los servicios de Windows son programas que estn siempre residentes en la memoria, estn all desde que inicias el Windows hasta que sales de l (salvo que lo detengas manualmente). La ventaja es que no debes ejecutarlos por ti mismo (haciendo doble click sobre un icono, por ejemplo) cuando los necesitas, ya que siempre estn ejecutndose. La desventaja es que consumen memoria y recursos del Sistema, lo cual es un desperdicio si no los utilizas.

-9-

CUL ES LA CARPETA RAZ DEL XAMPP? La carpeta raz o localhost del xampp es htdocs, eso significa que cuando escribas localhost en tu navegador se ubicar en esa carpeta. localhost C:\xampp\htdocs\

CMO CREO LA ESTRUCTURA DE CARPETAS DE MI SITIO WEB? Dado que C:\xampp\htdocs\ equivale al localhost, todas tus carpetas deben estar debajo de ella, por ejemplo supongamos que ests construyendo un sitio que se llamar Verano2012, entonces estas podran ser sus carpetas: C:\xampp\htdocs\Verano2012\ C:\xampp\htdocs\Verano2012\fotos\ C:\xampp\htdocs\Verano2012\videos\ Y para acceder desde tu navegador a sus pginas podras escribir en la barra de direcciones algo como: localhost/Verano2012/index.html localhost/Verano2012/lugaresvisitados.html localhost/Verano2012/fotos/amigos.php Habrs notado que en un caso se usan barras hacia atrs y en el otro se usan barras hacia adelante, eso es porque la convencin de Windows es usar barras hacia atrs para las carpetas y la convencin de Unix es la de usar barras hacia adelante. Como Internet fue inicialmente creado en Unix ese es el motivo del por qu se usan las barras hacia adelante en las direcciones web.

- 10 -

PROGRAMACIN EN PHP
CONOCIMIENTOS PREVIOS A partir de aqu se asume que tienes algunos conocimientos aunque sean bsicos del lenguaje HTML y que tambin sabes programar en algn lenguaje de programacin (Visual FoxPro, Visual Basic, Delphi, C, Java, etc.). Si eso no es as entonces deberas leer algunos tutoriales aunque sean muy simples sobre esos temas, para poder entender lo que sigue.

EJEMPLOS Todos los programas que desarrollaremos en este curso se encuentran incluidos en el mismo archivo .ZIP de donde extrajiste este documento.

CMO SE CREA UN PROGRAMA PHP? Como ya habamos visto, los programas PHP estn incluidos dentro de archivos con extensin .html. Puedes escribir las siguientes instrucciones en cualquier editor que guarde el contenido como texto plano, por ejemplo el Block de Notas del Windows.
<html> <head></head> <body> <?php echo "Estamos aprendiendo PHP y Firebird"; ?> </body> </html>

Puedes grabar ese archivo con cualquier nombre que quieras, pero la extensin debe ser .php, s o s, ya que es la nica que reconoce el intrprete de PHP. Todos los programas que desarrollaremos a lo largo de este curso se guardarn en la carpeta pruebas y los nombres de todos los archivos tendrn el formato: prueba99.php, por ejemplo, el programa anterior se llama: C:\xampp\htdocs\pruebas\prueba01.php Las etiquetas de PHP Todos los cdigos fuente de PHP estn entre las etiquetas <?php y ?> El punto y coma al final de la sentencia Al igual que otros lenguajes de programacin, en PHP hay que finalizar las sentencias con un punto y coma. - 11 -

CMO SE EJECUTA UN PROGRAMA PHP? Escribiendo su nombre (y su extensin .php) en la barra de direcciones del navegador. Por ejemplo, para ejecutar el programa anterior escribiramos: localhost/pruebas/prueba01.php

CUL ES EL RESULTADO DE LA EJECUCIN DE UN PROGRAMA PHP? Siempre es un archivo con extensin .html (o sea: una pgina web). Si despus de escribir localhost/pruebas/prueba01.php en la barra de direcciones hacemos click con el botn derecho en esa pgina web y luego en el men contextual que aparece hacemos click sobre la opcin Ver cdigo fuente esto es lo que veremos:
<html> <head></head> <body> Estamos aprendiendo PHP y Firebird</body> </html>

Que no es lo mismo que habamos escrito en nuestro programa, sino el resultado de la ejecucin de nuestro programa. Interesante, verdad?

COMENTARIOS Los comentarios se indican con dos barras hacia delante (//) o con /* para empezarlo y */ para finalizarlo.

VARIABLES EN PHP No se las define antes de usarlas, son creadas en el momento en que se las usa por primera vez. Todos los nombres de variables tienen un smbolo $ como prefijo y son sensibles a las maysculas y a las minsculas (o sea que la variable $Nombre es distinta a la variable $nombre y es distinta a la variable $NoMbRe)
<html> <head></head> <body> <?php $Localidad = "Asuncin, Paraguay"; echo $Localidad; ?> </body> </html>

prueba02.php

- 12 -

TIPOS DE VARIABLES Hay cuatro tipos de variables: string, entero, doble, lgica $Nombre = Walter; $Mes = 12; $Precio = 487.52; $Cobrado = true; // Tipo string // Tipo entero // Tipo doble // Tipo lgica (el valor numrico de true es 1)

No se necesita convertirlas a tipo string para concatenarlas


<html> <head></head> <body> <?php $Nombre = "Walter"; $Mes = 12; $Precio = 487.52; $Cobrado = true; echo $Nombre; echo "<br>"; echo $Mes; echo "<br>"; echo $Precio; echo "<br>"; echo $Cobrado; ?> </body> </html>

prueba03.php

SALTOS DE LNEA Para que la impresin se muestre en la siguiente lnea se usa <br>, como vemos a continuacin:
<html> <head></head> <body> <?php $Nombre="Walter"; $Localidad = "Asuncin, Paraguay"; echo $Nombre; echo $Localidad; echo "<br>"; echo $Nombre; echo "<br>"; echo $Localidad; echo "<br><br><br><br>"; echo $Localidad; ?> </body> </html>

prueba04.php - 13 -

CONCATENACIN Para concatenar dos constantes o variables se usa el punto, no es necesario que los dos operandos sean de tipo string, por ejemplo:
<html> <head></head> <body> <?php $Nombre="Napolen"; $Apellido = "Bonaparte"; echo $Apellido . ", " . $Nombre; ?> </body> </html>

prueba05.php
<html> <head></head> <body> <?php $Nombre = "Walter"; $Mes = 12; $Precio = 487.52; $Cobrado = true; echo "El nombre es " . $Nombre; echo "<br>"; echo "El mes es " . $Mes; echo "<br>"; echo "El precio es " . $Precio; echo "<br>"; echo "Cobrado es " . $Cobrado; ?> </body> </html>

prueba06.php Tambin se podra concatenar todo lo anterior para escribirlo en una sola lnea, por ejemplo:
<html> <head></head> <body> <?php $Nombre = "Walter"; $Mes = 12; $Precio = 487.52; $Cobrado = true; echo "El nombre es " . $Nombre . "<br>" . "El mes es " . $Mes . "<br>" . "El precio es " . $Precio . "<br>" . "Cobrado es " . $Cobrado; ?> </body> </html>

prueba07.php - 14 -

COMILLAS SIMPLES Y COMILLAS DOBLES Las variables de tipo string se pueden definir con comillas simples o con comillas dobles, la diferencia es que en el primer caso no se sustituyen las variables que tenga en su interior y en el segundo caso s. $Precio = 876.42; $Mensaje1 = El precio es $Precio; // No se sustituye la variable por su valor $Mensaje2 = El precio es $Precio; // Se sustituye la variable por su valor
<html> <head></head> <body> <?php $Precio = 876.42; $Mensaje1 = 'El precio es $Precio'; $Mensaje2 = "El precio es $Precio"; echo $Mensaje1; echo "<br>"; echo $Mensaje2; ?> </body> </html>

prueba08.php

ESTRUCTURA CONDICIONAL IF Para que la ejecucin del programa se desve segn que una condicin sea verdadera o falsa se utiliza la construccin if elseif else. Las condiciones siempre deben estar entre parntesis. Si se necesita ejecutar varias instrucciones, stas deben estar entre llaves. Tiene el siguiente formato: if (Condicin 1) { [Instruccin 1]; [Instruccin 2]; } elseif (Condicin 2) { [Instruccin 3]; [Instruccin 4]; } else { [Instruccin 5]; [Instruccin 6]; }

- 15 -

<html> <head></head> <body> <?php $Edad = 17; if ($Edad >= 18) echo "Puede ver la pelcula"; else echo "No puede ver la pelcula"; ?> </body> </html>

prueba09.php
<html> <head></head> <body> <?php $HoraEntrada = 14; if ($HoraEntrada == 6) echo "Maana"; elseif ($HoraEntrada == 14) echo "Tarde"; else echo "Noche"; ?> </body> </html>

prueba10.php
<html> <head></head> <body> <?php $HoraEntrada = 14; if ($HoraEntrada == 6) { echo "Maana"; $Sueldo = 100; } elseif ($HoraEntrada == 14) { echo "Tarde"; $Sueldo = 120;} else { echo "Noche"; $Sueldo = 150; } echo "<br><br>Tu sueldo es de $Sueldo por hora"; ?> </body> </html>

prueba11.php

- 16 -

OPERADORES DE COMPARACIN Para comparar dos operandos se pueden utilizar los siguientes operadores de comparacin: == != >= > <= < // Igualdad // Distinto // Mayor o igual // Mayor // Menor o igual // Menor

ESTRUCTURA DE REPETICIN FOR Tiene el siguiente formato: for ([Se inicializa la variable]; [condicin]; [Se cambia el valor]) { [Instrucciones]; }
<html> <head></head> <body> <?php for ($i = 1; $i <= 100; $i++) echo "I = $i <br>"; ?> </body> </html>

prueba12.php $i = 1 lo que hace es asignar el valor inicial de la variable $i, eso se ejecuta una sola vez. $i <= 100 es la condicin que debe cumplirse para que el ciclo se repita. En otras palabras significa mientras el valor de $i sea menor o igual que 100 $i++ es lo mismo que en otros lenguajes se escribira $i = $i + 1 o sea, incrementa el valor de la variable $i en una unidad.

- 17 -

<html> <head></head> <body> <?php for ($i = 2; $i <= 100; $i = $i + 2) echo "I = $i <br>"; ?> </body> </html>

prueba13.php En este caso el valor inicial es 2 y el incremento tambin es de 2, eso significa que se mostrarn todos los nmeros pares entre 2 y 100, inclusives.

ESTRUCTURA DE REPETICIN WHILE Tiene el siguiente formato: while (condicin) { [Instrucciones]; } Mientras la condicin sea verdadera se ejecutarn las instrucciones.
<html> <head></head> <body> <?php $i = 1; while ($i <= 10) { echo "El valor es $i <br>"; $i++; } ?> </body> </html>

prueba14.php En este caso, antes del while() hay que asignarle un valor inicial a la variable que se usar en la condicin, mientras la condicin sea verdadera se ejecutarn todas las instrucciones que estn entre las llaves. Hay que tomar en cuenta dos cosas: 1. Si la primera vez la condicin es falsa entonces las instrucciones que estn dentro del while nunca ser ejecutadas. 2. No se coloca un punto y coma despus de la llave de cierre

- 18 -

ESTRUCTURA DE REPETICIN DO WHILE Tiene el siguiente formato: do { [instrucciones]; } while (condicin); En este caso, primero se ejecutan las instrucciones y luego se verifica si la condicin es verdadera qu implica eso? Que las instrucciones siempre se ejecutan al menos una vez. Tambin, fjate que se coloca un punto y coma al final de la condicin.
<html> <head></head> <body> <?php $i = 5; do { echo "El valor es $i <br>"; $i = $i + 5; } while ($i <= 100); ?> </body> </html>

prueba15.php

- 19 -

FUNCIONES INTERNAS El PHP cuenta con numerossimas funciones internas, para conocerlas a todas deberas leer algn manual o visitar algn sitio web, por ejemplo el siguiente: http://www.php.net/manual/es/funcref.php All las encontrars clasificadas y con una descripcin de la tarea que realizan.
<html> <head> <title>Ejemplo de una funcin interna</title> </head> <body> <?php phpinfo(); ?> </body> </html>

prueba16.php La funcin phpinfo() es extremadamente importante, te permitir siempre conocer la configuracin actual de PHP.
<html> <head> <title>Ejemplo de uso de la funcin rand()</title> </head> <body> <?php echo "Ejecuta varias veces este programa para ver lo que hace <br><br>"; $NumeroElegido = rand(1, 20); for ($i = 1; $i <= $NumeroElegido; $i++) echo "$i <br>"; ?> </body> </html>

prueba17.php La funcin rand() devuelve un nmero que se encuentre entre el primero y el segundo de sus argumentos, ambos incluidos.

- 20 -

FUNCIONES DEL USUARIO Las declaraciones de funciones propias del programador, normalmente llamadas funciones del usuario, tienen el siguiente formato: Function [nombre de la funcin] ([parmetros de entrada]) { [instrucciones]; [return valor_retornado]; }
<html> <head> <title>Ejemplo de funcin del usuario</title> </head> <body> <?php function CentrarMensaje($Mensaje) { echo "<table width=\"100%\" border=\"1\">"; echo "<tr><td align=\"center\">"; echo $Mensaje; echo "</tr></td>"; echo "</table>"; } CentrarMensaje("Este es mi primer mensaje centrado con la funcin CentrarMensaje()"); CentrarMensaje("Este tambin estar centrado"); ?> </body> </html>

prueba18.php Esta funcin mostrar en la pantalla un mensaje centrado. Se le puede enviar cualquier mensaje y lo mostrar centrado horizontalmente.

- 21 -

<html> <head> <title>Esta funcin devuelve el mayor de dos nmeros</title> </head> <body> <?php function Mayor($Numero1, $Numero2) { if ($Numero1 > $Numero2) return $Numero1; else return $Numero2; } $Valor1 = 15; $Valor2 = 22; echo "El mayor entre $Valor1 y Mayor($Valor1, $Valor2); ?> </body> </html>

$Valor2

es:

"

prueba19.php La funcin Mayor() recibe como parmetros dos nmeros y devuelve el mayor de ellos. Y si se necesita que una funcin devuelva ms de un valor? En ese caso los valores se devuelven por referencia, como podemos ver en el siguiente ejemplo. La funcin MayorMenor() recibe dos nmeros y devuelve el nmero mayor y el nmero menor. Para decirle al PHP que deseamos que devuelva los valores por referencia le colocamos el prefijo ampersand (&). Todas las variables que empiecen con & sern devueltas por referencia. El ampersand (&) se coloca en la declaracin de la funcin, no en la llamada a la funcin. La llamada es normal, se hace como siempre.

- 22 -

<html> <head> <title>Esta nmeros</title> </head> <body> <?php function MayorMenor($Numero1, $Numero2, &$Mayor, &$Menor){ if ($Numero1 > $Numero2) $Mayor = $Numero1; else $Mayor = $Numero2; if ($Numero1 < $Numero2) $Menor = $Numero1; else $Menor = $Numero2; } $Valor1 = 15; $Valor2 = 22; MayorMenor($Valor1, $Valor2, $NumeroMayor, $NumeroMenor); echo "El mayor entre $Valor1 y $Valor2 es: $NumeroMayor<br>"; echo "El menor entre $Valor1 y $Valor2 es: $NumeroMenor<br>"; ?> </body> </html> funcin devuelve el mayor y el menor de dos

prueba20.php Fjate que al declarar la funcin MayorMenor() dos de sus parmetros empiezan con el smbolo de dlar y dos empiezan con ampersand. Solamente los que empiezan con ampersand se devuelven.

- 23 -

ARRAYS TRADICIONALES Los arrays son muy utilizados en la programacin en general y en PHP en particular. Dependiendo de la cantidad de dimensiones que tengan pueden ser: De una dimensin (vectores) De dos dimensiones (matrices) De tres o ms dimensiones (multidimensionales) Para acceder a los elementos del array se utilizan los corchetes [] Pueden guardar valores de cualquier tipo de variable (string, entero, doble, booleano). No se los necesita declarar previamente, cuando se los define el PHP ya sabe que se trata de un array, ejemplos: $NombreEstacion[0] = Primavera; $NombreEstacion[1] = Verano; $NombreEstacion[2] = Otoo; $NombreEstacion[3] = Invierno; $Dia[0] = 31; $Dia[1] = 28; $Dia[2] = 31; Tambin se puede evitar colocar los nmeros de los ndices, ya que el PHP los puede colocar automticamente, por ejemplo: $Continente[] = Africa; $Continente[] = Amrica; $Continente[] = Asia; $Continente[] = Europa; $Continente[] = Oceana; Hay que recordar que los arrays siempre comienzan numerndose desde cero. Si se necesita conocer la cantidad de elementos se puede utilizar la funcin count(), por ejemplo:
$Cantidad = count($Continente); // $Cantidad ser 5

Tambin se puede usar la funcin sizeof(), la cual es equivalente a count() Hay otra forma de asignarle valores a un array, y es la siguiente:
$Color = array(Blanco, Rojo, Azul, Amarillo, Verde);

- 24 -

ARRAYS ASOCIATIVOS Adems de los arrays tradicionales, los cuales poseen casi todos los lenguajes de programacin, el PHP tambin dispone de otra clase de arrays, llamados asociativos. En los arrays tradicionales se accede a los elementos del array a travs de un ndice numrico. En los arrays asociativos se accede a los elementos por medio de un string. Si queremos usar un array tradicional para guardar los datos de un Cliente podramos tener algo as. $Cliente[0] = 00257; $Cliente[1] = Juan Prez; $Cliente[2] = (212) 567-1234 $Cliente[3] = Nueva York Cul es el problema? Que debemos recordar la relacin de los ndices con los datos. Por ejemplo, que en el cuarto elemento se encuentra la Localidad. Eso no es un problema cuando nuestro array tiene pocos elementos pero si tiene 25 ms? Lo cual no es raro en programacin web. All se complica. Para salvarnos estn los arrays asociativos. Con un array asociativo podramos escribir algo como: $Cliente[Codigo] = 00257; $Cliente[Nombre] = Juan Prez; $Cliente[Telefono] = (212) 567-1234; $Cliente[Localidad] = Nueva York; Si deseamos visualizar el nombre y el telfono del cliente, entonces podramos escribir:
echo "Nombre = " . $Cliente['Nombre'] . "<br>"; echo "Telfono = " . $Cliente['Telefono'] . "<br>";

Como vemos, no necesitamos recordar los nmeros de ndices sino las palabras clave, los equivalentes a los campos de un registro. Esto es muchsimo ms fcil de recordar y por lo tanto es muy usado en PHP. Un array asociativo tambin puede ser creado as: $Cliente = array(Codigo => 00257, Nombre => Juan Prez, Telefono => (212) 567-1234, Localidad => Nueva York);

- 25 -

<html> <head> <title>Uso de un array asociativo</title> </head> <body> <?php Cliente['Codigo'] = "00257"; Cliente['Nombre'] = "Juan Prez"; Cliente['Telefono'] = "(212) 567-1234"; Cliente['Localidad'] = "Nueva York"; echo "Cdigo = " . $Cliente['Codigo'] . "<br>"; echo "Nombre = " . $Cliente['Nombre'] . "<br>"; echo "Telfono = " . $Cliente['Telefono'] . "<br>"; echo "Localidad = " . $Cliente['Localidad'] . "<br>"; ?> </body> </html>

prueba21.php
<html> <head> <title>Uso de un array asociativo</title> </head> <body> <?php $Cliente = array('Codigo' => '00257', 'Nombre' => 'Juan Prez', 'Telefono' => '(212) 567-1234', 'Localidad' => 'Nueva York'); echo "Cdigo = " . $Cliente['Codigo'] . "<br>"; echo "Nombre = " . $Cliente['Nombre'] . "<br>"; echo "Telfono = " . $Cliente['Telefono'] . "<br>"; echo "Localidad = " . $Cliente['Localidad'] . "<br>"; ?> </body> </html>

prueba22.php

- 26 -

ENVO DE DATOS DESDE UN FORMULARIO Para que nuestros programas sean interactivos necesitamos pedirles datos a los usuarios, procesar dichos datos y luego devolverle el resultado. En general necesitaremos de dos pginas: Una, para pedirle al usuario que ingrese los datos (pgina .html) Otra, para procesar esos datos (pgina .php)

La estructura de la pgina (generalmente es .html aunque tambin podra hacerse con .php) que pide los datos es la siguiente: <form method = post action = mipagina.php> [se piden los datos] [se envan los datos] </form>
<html> <head> <title>Pedido de ingreso de datos</title> </head> <body> <form method = "post" action = "mipagina.php"> Ingresa tu nombre: <input type = "text" name = "nombreusuario"> <br> <input type = "submit" value = "Confirmar"> </form> </body> </html>

ingresodatos.html Como puedes ver, en este caso no se trata de un programa PHP sino de una pgina web escrita totalmente en HTML. Le indicamos que queremos un formulario con la marca <form>, la cual tiene dos propiedades obligatorias: method y action. La propiedad method indica como se organizan los datos que se enviarn al Servidor web; los valores posibles son post y get, lo normal es que se enven mediante post La propiedad action indica el nombre del archivo que recibir los datos ingresados por el usuario. Sern enviados cuando el usuario haga click sobre el botn submit.

- 27 -

La propiedad input type Esta propiedad nos permite definir el tipo del control y el nombre del control. El tipo del control debe ser uno de los siguientes: Text Checkbox Radio Select Password Hidden Submit Reset Button File Image

Text es un cuadro de texto, el lugar donde se le puede pedir al usuario que ingrese su nombre, su direccin, su e-mail, etc. Checkbox es una casilla de verificacin donde el usuario puede elegir solamente una de dos alternativas posibles (s/no, verdadero/falso) Radio le permite al usuario elegir una y solamente una de varias opciones posibles Select le permite al usuario elegir una o varias de las opciones disponibles Password oculta con asteriscos los caracteres que ingresa el usuario Hidden indica que el campo es invisible y el usuario nunca interacta con l Submit enva el formulario al programa .php Reset deja el formulario en blanco, borrando todo lo que introdujo el usuario. En general es aconsejable no usarlo. Button define un botn el cual tiene unos comandos que sern ejecutados cuando el usuario haga click sobre l File permite enviar un archivo desde la computadora del usuario hacia el Servidor web Image muestra una imagen que tambin tiene incluido un botn Submit, cuando el usuario hace click sobre la imagen el formulario es enviado El nombre del control se lo asignamos nosotros, por ejemplo: nombreusuario, edad, email, nacionalidad

- 28 -

RECEPCIN DE DATOS Los datos que envi el usuario cuando hizo click sobre el botn Submit son recibidos por un programa PHP, el cual los procesar y cuando termine devolver una pgina .html al Servidor web.
<html> <head> <title>Ejemplo de captura de datos</title> </head> <body> <?php echo "El nombre ingresado es: " echo $_REQUEST['nombreusuario']; ?> </body> </html>

mipagina.php Para acceder a los datos que ingres el usuario se utiliza un array asociativo llamado $_REQUEST que es generado por el PHP, indicndole como subndice y entre apstrofos el nombre de la variable que usamos en el formulario de envo de datos (en este ejemplo, el nombre de la variable es nombreusuario). Hay que recordar que los nombres de las variables son sensibles a las maysculas y a las minsculas. Al escribir en el navegador localhost/pruebas/ingresodatos.html veremos algo como esto:

Pantalla N 4

Y luego de escribir el nombre y de hacer click sobre el botn Confirmar veremos algo como esto:

Pantalla N 5

- 29 -

CONTROL CHECKBOX Las casillas de verificacin (o checkbox, en ingls) sirven para que el usuario elija una de dos opciones posibles: s o no, verdadero o falso. Si un formulario tiene varias casillas de verificacin entonces el usuario puede elegir: ninguna, una, varias, todas. El siguiente programita le pedir que introduzca dos nmeros y luego la operacin aritmtica que desea realizar con ellos: suma, resta, multiplicacin, divisin. Si lo desea, puede elegir varias de esas opciones.
<html> <head> <title>Ejemplo del uso de checkbox</title> </head> <body> <form method = "post" action = "checkbox.php"> Ingresa un nmero: <input type = "text" name = "numero1"> <br> Ingresa un nmero: <input type = "text" name = "numero2"> <br> <input type = "checkbox" name = "check1">sumar <br> <input type = "checkbox" name = "check2">restar <br> <input type = "checkbox" name = "check3">multiplicar <br> <input type = "checkbox" name = "check4">dividir <br> <input type = "submit" value = "Ejecutar"> </form> </body> </html>

controlcheckbox.html

- 30 -

<html> <head> <title>Resultado/s obtenido/s del uso de checkbox</title> </head> <body> <?php $numero1 = $_REQUEST['numero1']; $numero2 = $_REQUEST['numero2']; if (isset($_REQUEST['check1'])) { $Suma = $numero1 + $numero2; echo "La suma es $Suma<br>"; } if (isset($_REQUEST['check2'])) { $Resta = $numero1 - $numero2; echo "La resta es $Resta<br>"; } if (isset($_REQUEST['check3'])) { $Multiplicacion = $numero1 * $numero2; echo "La multiplicacin es $Multiplicacion<br>"; } if (isset($_REQUEST['check4'])) { $Division = $numero1 / $numero2; echo "La divisin es $Division<br>"; } ?> </body> </html>

checkbox.php Para qu se utiliza la funcin isset()? Resulta que si el checkbox no est seleccionado en el formulario entonces no se crea un elemento en el arrary asociativo $_REQUEST. La funcin isset() nos dice si existe la variable que le pasamos como parmetro. Si devuelve true entonces s existe y si devuelve false entonces no existe. En este programa si devuelve true eso significa que el usuario marc esa casilla de verificacin. Usamos la funcin isset() cuatro veces, porque el usuario pudo haber marcado varias casillas de verificacin.

- 31 -

CONTROL RADIO El control radio sirve para que el usuario elija una (y solamente una) de las opciones que tiene a su disposicin. Si hace click sobre un control radio todos los dems controles radio que estn relacionados se desactivan.
<html> <head> <title>Uso de controles radio</title> </head> <body> <form method = "post" action = "prueba23.php"> Con qu deseas pagar tu compra? <br><br> <input type = "radio" name = "radio1" "Tarjeta">Tarjeta de crdito <br> <input type = "radio" name = "radio1" "PayPal">PayPal <br> <input type = "radio" name = "radio1" "Cheque">Cheque bancario <br><br> <input type = "submit" name = "FormaPago"> </form> </body> </html>

value value value

= = =

controlradio.html Para que el PHP sepa que los botones radio estn relacionados todos deben tener el mismo nombre (en este caso, todos se llaman radio1).
<html> <head> <title>Procesar el control radio elegido</title> </head> <body> <?php if ($_REQUEST['radio1'] == "Tarjeta") echo "Has elegido pagar con Tarjeta de Crdito"; if ($_REQUEST['radio1'] == "PayPal") echo "Tu pago se realizar con PayPal"; if ($_REQUEST['radio1'] == "Cheque") echo "Necesito conocer el Nombre del Banco"; ?> </body> </html>

prueba23.php Recuerda que todos los botones radio deben tener el mismo nombre.

- 32 -

CONTROL SELECT En PHP se llama control select al mismo control que otros lenguajes llaman combobox. Su finalidad es mostrar varias opciones al usuario, de las cuales debe seleccionar una (aunque ms adelante veremos que puede seleccionar varias).
<html> <head> <title>Uso del control select</title> </head> <body> <form method = "post" action = "prueba24.php"> En cul medio de locomocin te trasladars para llegar a la conferencia? <select name = "Transporte"> <option value = "Automvil">En automvil</option> <option value = "Avin">En avin</option> <option value = "Bicicleta">En bicicleta</option> <option value = "Motocicleta">En motocicleta</option> <option value = "Tren">En tren</option> </select> <br><br> <input type = "submit" name = "MedioTransporte"> </form> </body> </html>

controlselect.html Dentro de las marcas <select> y </select> se colocan todas las opciones deseadas. Cada opcin debe tener un valor (el que recibir el programa .php) y un texto que se le mostrar al usuario, el cual puede ser (y generalmente es) distinto al valor de esa opcin. Adems, todas las opciones deben finalizar con la marca </option> Como de costumbre se incluye un botn de tipo submit para que cuando el usuario haga click all el nombre de la opcin seleccionada sea enviado al programa determinado por la clusula action (en este caso, ese programa se llama prueba24.php)

- 33 -

<html> <head> <title>Procesar el control select</title> </head> <body> <?php $Transporte = $_REQUEST['Transporte']; if ($Transporte == "Automvil") echo "No te resultar fcil encontrar donde estacionar"; if ($Transporte == "Avin") echo "El aeropuerto queda a tres kilmetros del saln"; if ($Transporte == "Bicicleta") echo "Irs en bicicleta? Es peligroso"; if ($Transporte == "Motocicleta") echo "Cuidado con los otros vehculos"; if ($Transporte == "Tren") echo "La estacin del tren est a 2 cuadras del saln"; ?> </body> </html>

prueba24.php Primero, se guard en la variable $Transporte el nombre del transporte que eligi el usuario en el control select (o combobox) y luego, de acuerdo a su opcin se le mostr un mensaje.

- 34 -

CONTROL TEXTAREA El control textarea le permite al usuario escribir varias lneas de texto, es similar al control text pero mientras que ste solamente permite que el usuario escriba en una lnea, el textarea le permite escribir en varias. En otros lenguajes se le denomina control editbox.
<html> <head> <title>Uso del control textarea</title> </head> <body> <form method = "post" action = "prueba25.php"> Cules son tus canciones favoritas? <br> <textarea name = "Canciones"></textarea> <br><br> Y tus bebidas favoritas? <br> <textarea name = "Bebidas">Vino, cerveza, coac</textarea> <br><br> <input type = "submit" name = "Enviar"> </form> </body> </html>

controltextarea.html Para definir un control textarea hay que delimitarlo con los marcadores <textarea> y </textarea>. Si se desea inicializarlo con algn texto, hay que escribir dicho texto entre esas marcas, tal como se ve en el textarea Bebidas el cual se inicializa con Vino, cerveza, coac.
<html> <head> <title>Procesar el control textarea</title> </head> <body> <?php $CancionesPreferidas = $_REQUEST['Canciones']; $BebidasPreferidas = $_REQUEST['Bebidas']; echo "As que te gusta escuchar $CancionesPreferidas?"; echo "<br>"; echo "Y beber $BebidasPreferidas?"; ?> </body> </html>

prueba25.php

- 35 -

ARCHIVOS DE TEXTO Si necesitamos que los datos que ingres el usuario estn disponibles para un uso posterior (quizs varios das o meses despus) debemos guardarlos en el disco duro del Servidor. Aqu tenemos dos posibilidades: Guardarlos en un archivo de texto Guardarlos en una Base de Datos

Ahora veremos como guardarlos y recuperarlos de un archivo de texto y ms adelante como hacerlo con una Base de Datos de Firebird En un archivo de texto podemos guardar los datos que no requieren de un procesamiento, aquellos que queremos usar as como fueron guardados, en ese mismo orden. En una Base de Datos guardaremos lo que sea ms complejo. Las funciones ms utilizadas cuando se trabaja con archivos de texto son las siguientes: fopen() fputs() fgets() feof() fclose() file_exists() copy() exit() Abre o crea un archivo de texto Escribe una lnea en el archivo de texto Lee una lnea del archivo de texto Indica si ya se ley todo el archivo de texto Cierra el archivo de texto Comprueba si existe un archivo Copia un archivo Finaliza la ejecucin de un programa

La funcin fopen() sirve para crear o abrir un archivo de texto y recibe dos parmetros: El nombre del archivo La operacin que se desea realizar con ese archivo, las ms usadas son: o a. Si no existe, lo crea. Si existe, lo prepara para que se le aadan datos al final o w. Si no existe, lo crea. Si existe, borra todo su contenido o r. Lo abre para slo lectura. No se podr escribir en l Y si se pudo abrir el archivo entonces devuelve un nmero positivo que deber ser usado en todas las operaciones que posteriormente se realizarn con ese archivo. Si no se pudo abrir el archivo devuelve -1. La funcin fputs() sirve para escribir una lnea de texto en el archivo y recibe dos parmetros: El identificador del archivo con el cual se quiere trabajar El texto que se quiere grabar en ese archivo Y devuelve true si la operacin tuvo xito o false en caso contrario.

- 36 -

La funcin fgets() sirve para leer una lnea de texto del archivo y recibe un parmetro: El identificador del archivo con el cual se quiere trabajar Y devuelve un string conteniendo una lnea de texto. La funcin feof() sirve para indicar si ya se ley todo el archivo de texto. Recibe un parmetro: El identificador del archivo que se desea averiguar su estado Y devuelve true si ya se ley todo el archivo (o sea, si el puntero se encuentra en EOF = End of File) y false en caso contrario La funcin fclose() sirve para cerrar un archivo de texto que estaba abierto y recibe un parmetro: El identificador del archivo que se quiere cerrar Devuelve true si se pudo cerrar exitosamente el archivo y false si por algn motivo no pudo ser cerrado. La funcin file_exists() comprueba si un archivo existe o no. Recibe un parmetro: Nombre del archivo que se desea comprobar si existe o no Devuelve true si el archivo existe y false si no existe La funcin copy() copia un archivo desde el origen hacia el destino. Recibe dos parmetros: Nombre del archivo origen Nombre del archivo destino Devuelve true si la copia se realiz con xito y false si fall. La funcin exit() finaliza la ejecucin de un programa. Recibe un parmetro que puede ser: Un string, conteniendo el mensaje que se mostrar al usuario Un nmero entero, con el cdigo de salida o 0 = est todo bien o 1 .. 254 = ocurri algn error o 255 = no debe ser usado, es para uso interno del PHP

- 37 -

CREACIN Y APERTURA DE UN ARCHIVO DE TEXTO En el siguiente programa implementaremos un Libro de Visitas para nuestro sitio web. Le preguntaremos al usuario que opinin le merece nuestro sitio web y su respuesta guardaremos en un archivo de texto el cual podr ser ledo por los dems visitantes del sitio.
<html> <head> <title>Libro de visitas</title> </head> <body> <form method = "post" action = "prueba26.php"> Ingresa tu nombre: <input type = "text" name = "NombreUsuario"> <br><br> Escribe tus comentarios: <br> <textarea name = "Comentarios" rows = "12" cols = "60"> </textarea> <br> <input type = "submit" value = "Enviar"> </form> </body> </html>

librovisitas.html Esta pgina HTML es muy similar a las que ya hemos visto con anterioridad, la diferencia es que ahora determinamos el tamao que tendr el control rea de texto, donde el usuario escribir sus comentarios.
<html> <head> <title>Procesar libro de visitas</title> </head> <body> <?php $fp = fopen("visitas.txt", "a") or exit("No se puede usar el archivo"); fputs($fp, $_REQUEST['NombreUsuario']); fputs($fp, "\n"); fputs($fp, $_REQUEST['Comentarios']); fputs($fp, "\n"); fputs($fp, "------------------------------------------------------"); fputs($fp, "\n"); fclose($fp); echo "Los datos han sido grabados"; ?> </body> </html>

prueba26.php

- 38 -

En el programa prueba26.php se han empleado varias de las funciones que hemos visto con anterioridad. Este programa es muy sencillo y no se han hecho las verificaciones de errores, algo que s deberamos hacer en nuestros programas reales. El valor que devuelve la funcin fopen() lo guardamos en la variable $fp Si por algn motivo el archivo no se pudo abrir entonces se ejecutar lo que se encuentre a continuacin del or, en este caso la funcin exit() la cual le muestra un mensaje al usuario y luego finaliza el programa. La funcin fputs() escribe en el archivo de texto el nombre del usuario, luego una lnea en blanco, luego los comentarios, luego otra lnea en blanco, luego unas rayas y finalmente otra lnea en blanco. Los caracteres \n (nueva lnea) son equivalentes al CHR(13) o CHR(10) o CHR(13) + CHR(10) que se usa en otros lenguajes. Fjate que el primer parmetro de la funcin fputs() es el nmero que devolvi la funcin fopen(). Finalmente, una vez que todo lo que queramos escribir ya fue escrito, cerramos el archivo con la funcin fclose(). Siempre hay que cerrar los archivos que habamos abierto para no desperdiciar recursos de la computadora. Ingresa a librovisitas.html y escribe varios comentarios y haz click varias sobre el botn Enviar para que en el siguiente programa (prueba27.php) puedas ver claramente lo que sucede.

- 39 -

LECTURA DE UN ARCHIVO DE TEXTO Para leer el contenido de un archivo de texto emplearemos la funcin fgets(). Para saber si ya hemos ledo todo el archivo utilizaremos la funcin feof().
<html> <head> <title>Leer el libro de visitas</title> </head> <body> <?php $fp = fopen("visitas.txt", "r") or exit("No se puede usar el archivo"); while (!feof($fp)) { $Linea = fgets($fp); $NuevaLinea = nl2br($Linea); echo $NuevaLinea; } fclose($fp); ?> </body> </html>

prueba27.php Si se pudo abrir el archivo para slo lectura, en la variable $fp tendremos su nmero. Si hubo algn error, se ejecutar la funcin exit(). Mientras no se llegue al final del archivo iremos leyendo todas sus lneas. La variable $Linea contiene una lnea completa, incluyendo el carcter \n. La funcin nl2br() sirve para convertir los caracteres \n a <br>, por qu hacemos eso? Porque el navegador no efecta el salto de lnea cuando lee \n, por lo tanto nosotros debemos convertir \n a <br> y eso se consigue con la funcin nl2br(). Guardamos la lnea leda del archivo, ahora con la marca <br> reemplazando al carcter \n en una nueva variable ($NuevaLinea) e imprimimos esa variable.

- 40 -

BASES DE DATOS FIREBIRD


Hasta ahora hemos visto mucho sobre PHP, con los conocimientos adquiridos ya podramos hacer un montn de programas tiles, sin embargo lo ms interesante viene ahora: acceder a una Base de Datos SQL que est alojada en el Servidor web. Esto nos permitir: INSERTAR nuevas filas a las tablas ELIMINAR filas de la tabla ACTUALIZAR las filas de las tablas CONSULTAR el contenido de las tablas

Lo cual significa que podramos ofrecerles a nuestros clientes un programa que (por ejemplo) hiciera lo siguiente: Vender por Internet. Los usuarios eligen los productos o servicios que desean adquirir, ingresan sus datos y les enviamos su pedido y la Factura Productos y servicios ms consultados. Cules de los productos y servicios que mostramos en nuestro sitio web son los ms visitados por los usuarios? Cules no son visitados? Productos y servicios ms vendidos Cules de los productos y servicios mostrados tienen mayor venta? Y cules no se venden? Votaciones. Se le presentan al usuario varias opciones y se le pregunta cual (o cuales) desea elegir Saldo de clientes. El usuario ingresa su cdigo y se le muestra su Estado de Cuentas, lo que se le vendi, lo que se le cobr y lo que est adeudando. Informe de Ventas. Todo lo que se vendi durante las dos fechas especificadas Informe de Ventas por Internet. Todo lo que se vendi gracias al sitio web Informe de Impuestos a Pagar. Todo lo que se le debe pagar al fisco en concepto de impuestos Estado de Cuentas con el Proveedor. Lo que le compramos, lo que le pagamos y lo que le estamos adeudando Pedidos automticos al Proveedor. Si nuestro Proveedor tambin tiene un sitio web para la recepcin de pedidos entonces podramos automatizar esa tarea y cada vez que el stock de un producto llegue a su cantidad mnima realizar el pedido correspondiente

Estas son solamente algunas ideas, ya depender de tu creatividad el ir agregando muchas opciones ms. A la gran mayora de tus clientes le agradar la idea de poder realizar consultas a la Base de Datos desde cualquier PC que tenga conexin a Internet, desde su notebook, desde su telfono celular, desde su tableta o desde cualquier otro dispositivo que tenga conexin con Internet.

- 41 -

QU DEBO HACER PARA QUE PHP RECONOZCA A FIREBIRD? Despus de instalar PHP (con XAMPP o de alguna otra manera), l todava no reconoce al Firebird, por lo tanto debemos obligarle a que lo reconozca; eso se hace de la siguiente manera: 1. Buscamos el archivo PHP.INI (si usamos el XAMPP lo encontraremos en la carpeta C:\XAMPP\PHP\) 2. Lo abrimos para editarlo (con doble click, por ejemplo) 3. Buscamos la lnea que dice: ;extension=php_interbase.dll 4. Le quitamos el punto y coma del inicio (el punto y coma indica que lo que viene a continuacin es un comentario) 5. Grabamos el archivo PHP.INI y lo cerramos 6. Detenemos el Apache y lo reiniciamos (si estamos usando XAMPP podemos hacerlo con el programa XAMPP-CONTROL.EXE)

CUL ES LA BASE DE DATOS FIREBIRD QUE UTILIZAREMOS? Para los ejemplos que vienen a continuacin he creado una Base de Datos cuyo nombre es ADMIN.FDB y que encontrars en el mismo archivo .ZIP que tiene incluido este documento. Para poder utilizarla, con el programa GSEC debers crear un usuario llamado Walter (sin las comillas) y con password 123456 (sin comillas) ADMIN.FDB tiene las siguientes tablas: CLIENTES (Identificador, Nombre, Telfono) PRODUCTOS (Identificador, Nombre, Precio de Venta) MOVIMCAB (Identificador, Fecha, Identificador del Cliente) MOVIMDET (Identificador, Lnea, Identificador de Producto, Cantidad, Precio) Los Identificadores son todos numricos y autoincrementales. Nombre y Telfono son de tipo Varchar. Fecha es de tipo Date. Cantidad y Precio son numricos. Las columnas Identificador son las claves primarias de cada tabla.

- 42 -

INSERTAR FILAS EN UNA TABLA Ahora vamos a crear un programa que nos permitir insertar nuevas filas a una tabla (en este ejemplo, a la tabla CLIENTES).
<html> <head> <title>Agregar clientes</title> </head> <body> <h1>Agregar nuevos clientes</h1> <form method = "post" action = "prueba28.php"> Nombre del Cliente: <input type = "text" name = "cNombreCliente"> <br> Nmero/s de telfono: <input type = "text" name = "cTelefono"> <br><br> <input type = "submit" value = "Aceptar"> </form> </body> </html>

insertarclientes.html
<html> <head> <title>Aqu se agregan los nuevos clientes</title> </head> <body> <?php $nHandleDB = ibase_pconnect('C:\xampp\htdocs\pruebas\admin.fdb', 'WALTER', '123456'); $nTransaccion = ibase_trans("IBASE_WRITE", $nHandleDB); $cNombre = $_REQUEST['cNombreCliente']; $cTelefo = $_REQUEST['cTelefono']; $cFila = "INSERT INTO CLIENTES (CLI_NOMBRE, CLI_TELEFO) VALUES ('" . $cNombre . "', '" . $cTelefo . "');"; $nResultado = ibase_query($nTransaccion, $cFila); ibase_commit($nTransaccion); ibase_close($nHandleDB); echo "Se agreg a $cNombre a la tabla de CLIENTES"; ?> </body> </html>

prueba28.php Este programita guardar en la tabla CLIENTES los valores que les hayamos asignado a las columnas CLI_NOMBRE y CLI_TELEFO. Recuerda que CLI_IDENTI es autoincremental por lo tanto ser el propio Firebird quien le asignar un nmero, no deberemos preocuparnos por eso.

- 43 -

Se usa la funcin ibase_pconnect() para conectarse a la Base de Datos, tambin se podra usar la funcin ibase_connect(), ambas son muy similares pero la primera establece una conexin persistente o sea que no se cierra cuando finaliza la ejecucin del comando. El valor devuelto por la funcin ibase_pconnect() debe ser guardado en una variable porque necesitaremos usarlo ms adelante. En este caso lo guardamos en la variable llamada $nHandleDB. A continuacin se abre una transaccin con la funcin ibase_trans(), a la cual debemos enviarle dos parmetros: el tipo de transaccin y el valor que nos haba retornado la funcin ibase_pconnect(). A la variable $cFila le asignamos el comando que deseamos ejecutar en la Base de Datos, hay que tener cuidado con algo: las columnas de tipo string deben estar rodeadas por comillas simples. Por ejemplo fjate aqu:
VALUES ('"

All tenemos una comilla simple y luego una comilla doble. Eso es necesario hacer u obtendremos un mensaje de error del PHP. La funcin ibase_query() es la que nos permite ejecutar los comandos del Firebird. Recibe dos parmetros: El identificador de la transaccin que deseamos utilizar y el comando que deseamos ejecutar. Las transacciones solamente pueden terminar de dos maneras posibles: o mediante un COMMIT o mediante un ROLLBACK. La funcin ibase_commit() recibe como parmetro el nmero de la transaccin y trata de grabarla en la Base de Datos. Finalmente, la funcin ibase_close() finaliza la conexin con la Base de Datos. En honor a la brevedad este ejemplo es muy corto y no tiene manejo de errores pero eso es algo que s o s debemos efectuar en todos nuestros programas para evitar que ocurran problemas (o al menos detectarlos y solucionarlos de una forma no traumtica para los usuarios).

- 44 -

En este enlace encontrars el nombre y la descripcin de todas las funciones ibase_ que puedes utilizar: http://www.php.net/manual/es/ref.ibase.php Son muchas, pero las que ms frecuentemente necesitars son solamente estas: ibase_pconnect() ibase_trans() ibase_query() ibase_commit() ibase_rollback() ibase_fetch_object() ibase_free_result() ibase_close() LISTAR TODAS LAS FILAS DE UNA TABLA Con este programita podremos ver los datos de todos nuestros clientes.
<html> <head> <title>Listar las filas de una Base de Datos de Firebird </title> </head> <body> <?php $nHandleDB = ibase_pconnect('C:\xampp\htdocs\pruebas\admin.fdb', 'WALTER', '123456'); $cConsulta = "SELECT * FROM CLIENTES"; $nResultado = ibase_query($nHandleDB, $cConsulta) or exit(ibase_errmsg()); while ($cFila = ibase_fetch_object($nResultado)) { echo $cFila->CLI_IDENTI . '---' . $cFila->CLI_NOMBRE . '---' . $cFila->CLI_TELEFO; echo "<br>"; } ibase_free_result($nResultado); ibase_close($nHandleDB); ?> </body> </html>

prueba29.php Aqu hay varias cosas que resaltar: Primero, que no se usa un solo handle como en la mayora de los lenguajes de programacin, sino un handle para la Base de Datos y otro para guardar el resultado de la ejecucin del comando, que nos devuelve la funcin ibase_query().

- 45 -

Segundo, que para obtener todas las filas se debe utilizar un ciclo while y la funcin ibase_fetch_object() la cual extrae los datos de la tabla y los devuelve para que puedan ser guardados en una variable. Tercero, que para referirnos a las columnas extradas debemos usar el nombre de la variable (en este caso: $cFila) y a continuacin el smbolo -> y luego el nombre de la columna que nos interesa. Cuarto, que despus de haber usado el resultado obtenido debemos liberarlo de la memoria con la funcin ibase_free_result(), la cual recibe como parmetro el resultado de la ejecucin de la funcin ibase_query(). Quinto y ltimo, que cuando ya no necesitamos estar conectados a la Base de Datos debemos cerrar la conexin con la funcin ibase_close().

CONSULTAR DATOS El programa de consulta es muy similar al anterior de listado, pero en este caso solamente devolveremos aquellas filas que cumplan con la condicin indicada. En nuestro ejemplo, le pediremos al usuario que ingrese el identificador de un Cliente y le mostraremos los datos de ese cliente o un mensaje avisndole que no existe ningn cliente con ese identificador.
<html> <head> <title>Consultar clientes</title> </head> <body> <h1>Consultar datos de los clientes</h1> <form method = "post" action = "prueba30.php"> Escribe el Identificador del Cliente: <input type = "text" name = "nIDCliente"> <br><br> <input type = "submit" value = "Aceptar"> </form> </body> </html>

consultarclientes.html En esta pgina web le pedimos al usuario que ingrese el Identificador de un cliente.

- 46 -

<html> <head> <title>Consultar Clientes</title> </head> <body> <?php $nHandleDB = ibase_pconnect('C:\xampp\htdocs\pruebas\admin.fdb', 'WALTER', '123456'); $cConsulta = "SELECT * FROM CLIENTES WHERE CLI_IDENTI = " . $_REQUEST['nIDCliente']; $nResultado = ibase_query($nHandleDB, $cConsulta) or exit(ibase_errmsg()); if ($nResultado > 0) { $cFila = ibase_fetch_object($nResultado) or exit("No existe ningn cliente con ese Identificador"); echo $cFila->CLI_IDENTI . '---' . $cFila->CLI_NOMBRE . '---' . $cFila->CLI_TELEFO; echo "<br>"; } ibase_free_result($nResultado); ibase_close($nHandleDB); ?> </body> </html>

prueba30.php Y aqu realizamos la bsqueda. Si tuvo xito, mostramos los datos del cliente buscado, en caso contrario mostramos un mensaje de error.

- 47 -

SISTEMA DE INGRESO DE DATOS POR INTERNET Ahora crearemos un pequeo sistemita, el cual nos permitir: 1. 2. 3. 4. Pedir el nombre y la contrasea del usuario Mostrarle las opciones que tiene disponibles Permitirle ingresar datos de Clientes y de Productos Listar los clientes y los productos

Para ejecutarlo debemos escribir: localhost/pruebas/sistemita.html despus de lo cual veremos la siguiente pantalla.

Pantalla N 6 Para poder continuar el nombre debe ser Walter y la contrasea 123456
<html> <head> <title>Sistema de Ingreso de datos por Internet</title> </head> <body> <h1>Ventas por Internet</h1> Este es un pequeo Sistema para registrar en una Base de Datos <br><br> <form method = "post" action = "ValidarUsuario.php"> Ingresa tu nombre: <input type = "text" name = "cNombreUsuario"> <br> Y tu contrasea: <input type = "password" name = "cContrasena"> <br><br> <input type = "submit" value = "Aceptar" name = "cEnviar"> </form> </body> </html>

sistemita.html

- 48 -

El programita que valida que el Nombre y la Contrasea del usuario sean correctos es muy corto:
<?php session_start(); $_SESSION['cNomUsu'] = $_REQUEST['cNombreUsuario']; $_SESSION['cPasswo'] = $_REQUEST['cContrasena']; $nHandlB = ibase_pconnect('C:\xampp\htdocs\pruebas\admin.fdb', $_SESSION['cNomUsu'], $_SESSION['cPasswo']) or exit("Datos del usuario incorrectos"); header('Location: http://localhost/pruebas/menuprincipal.html'); ?>validarusuario.php

Qu es lo que hace? Primero, inicia una sesin. Qu es eso? En PHP cuando se inicia una sesin se pueden almacenar variables que sern usadas en otros programas .php. Por defecto las variables duran 20 minutos, si no son usadas son liberadas de la memoria, aunque ese tiempo es configurable en el archivo PHP.INI. Al escribir $_SESSION[cNomUsu] le estamos diciendo que queremos que el valor de la variable cNomUsu se guarde durante los siguientes 20 minutos, entonces podremos volver a usarla durante ese tiempo. Segundo, se obtiene el Nombre y la Contrasea que escribi el usuario. Tercero, con esos datos trata de conectarse a la Base de Datos. Cuarto, si no se pudo conectar, sale del programa con un mensaje de error. Quinto, si se pudo conectar se dirige hacia otro programa, llamado menuprincipal.html Para poder redirigirnos hacia otra pgina web u otro programa .php debemos: Usar la funcin header() Escribir: Location: Dejar un espacio en blanco despus de los dos puntos Escribir http:// Escribir la direccin donde se encuentra la pgina o el programa hacia el cual deseamos redirigirnos

- 49 -

<html> <head> <title>Men Principal del sistemita</title> </head> <body> <h1>Men Principal del sistemita por Internet</h1> <form method = "post" action = "procesaropcion.php"> <h3> 1. Agregar clientes <br> 2. Agregar productos <br> 3. Listar los clientes <br> 4. Listar los productos <br> </h3> Cul es tu opcin? <input type = "text" name = "nOpcionElegida"> <br><br> <input type = "submit" value = "Aceptar" name = "OK"> </form> </body> </html> menuprincipal.html

Pantalla N 7

- 50 -

QU SIGNIFICAN ESTOS ERRORES?


Fatal error: Call to undefined function ibase_connect()

No se est usando la extensin php_interbase.dll, asegrate de haberle quitado el punto y coma del principio, de haber grabado el archivo php.ini y de haber reiniciado el Apache. Tambin verifica que el nombre de la extensin sea exactamente ese.
Warning: ibase_pconnect() [function.ibase-pconnect]: during "CreateFile (open)" operation for file I/O error

No existe una Base de Datos con ese nombre en esa carpeta. La carpeta debe tener el nombre que le asigna el Windows, no debes usar localhost en ella. Por ejemplo: C:\xampp\htdocs\pruebas\admin.fdb localhost\pruebas\admin.fdb Correcto Incorrecto

Warning: ibase_fetch_object(): supplied resource is not a valid Firebird/InterBase result resource

El parmetro de la function ibase_fetch_object() es invlido. Debes pasarle como parmetro el nmero que te devolvi la funcin ibase_query().
Warning: ibase_free_result() expects parameter 1 to be resource, null given in

El parmetro de la function ibase_fetch_object() es invlido. Debes pasarle como parmetro el nmero que te devolvi la funcin ibase_query().

- 51 -

S-ar putea să vă placă și