PHP Y FIREBIRD

Primera Parte

Walter R. Ojeda Valiente

Asunción, Paraguay, Enero de 2012

ÍNDICE
INTRODUCCIÓN............................. 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 Páginas web estáticas y páginas web dinámicas ............... 3 ¿Cómo se comunican el Cliente y el Servidor sin PHP? ........ 3 ¿Cómo 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 dónde puedo descargar el XAMPP? ......................... 6 ¿Cuál de ellos debo descargar? .............................. 7 ¿Cómo se instala el XAMPP? .................................. 7 ¿Dónde debo descomprimir el archivo .zip? ................... 7 ¿Qué viene incluido dentro del XAMPP? ....................... 7 ¿Cómo inicializo el XAMPP? .................................. 8 ¿Qué es el Panel de Control del XAMPP? ...................... 9 ¿Cómo sé si el intérprete PHP se está ejecutando? ........... 9 ¿Qué significa instalar Apache como un servicio? ............ 9 ¿Cuál es la carpeta raíz del AMPP? ......................... 10 ¿Cómo creo la estructura de carpetas de mi sitio web? ....... 10

PROGRAMACIÓN EN PHP......................11
Conocimientos previos ...................................... Ejemplos ................................................... ¿Cómo se crea un programa PHP? ............................. ¿Cómo se ejecuta un programa PHP? .......................... ¿Cuál es el resultado de la ejecución de un programa PHP? .. Comentarios ................................................ Variables en PHP ........................................... Tipos de variables ......................................... Saltos de línea ............................................ Concatenación .............................................. Comillas simples y comillas dobles ......................... Estructura condicional IF .................................. Operadores de comparación .................................. Estructura de repetición FOR ............................... Estructura de repetición WHILE ............................. Estructura de repetición DO WHILE .......................... Funciones internas ......................................... Funciones del usuario ...................................... Arrays tradicionales ....................................... Arrays asociativos ......................................... Envío de datos desde un formulario ......................... Recepción de datos ......................................... Control Checkbox ........................................... Control Radio .............................................. Control Select ............................................. Control TextArea ........................................... Archivos de texto .......................................... Creación 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? ......... ¿Cuál 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

INTRODUCCIÓN
Utilizar Firebird en las aplicaciones de escritorio multiusuario que requieren acceso a una (o más de una) Base de Datos es una muy buena opción, pero en estos tiempos donde Internet está en todas partes también debemos plantearnos la posibilidad de usarlo en un Servidor web para poder realizar las operaciones de inserción, borrado, actualización y consulta desde cualquier computadora, teléfono celular, tableta u otro dispositivo que tenga conexión con Internet. Este documento justamente trata ese punto, la intención 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 muchísimo más poderosas, con un gran valor agregado y por lo tanto más “vendibles” que las de la competencia, aquellos que se han quedado atrasados y aún no interactúan con Internet. Hay muchísimo material sobre PHP que se puede conseguir fácilmente, tanto documentos como vídeos 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 introducción al lenguaje PHP y muchas páginas con ejemplos escritas en él para que el aprendizaje resulte muy sencillo. Lo bueno del PHP es que si tienes experiencia con algún otro lenguaje de programación te resultará demasiado fácil aprenderlo, tiene una sintaxis clara y no hay cosas rebuscadas, todo es muy directo, no deberías tardar más de unos pocos días 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 acrónimo recursivo de “PHP: Hypertext Preprocessor), se trata de un lenguaje interpretado, de alto nivel, embebido en páginas HTML y ejecutado en el Servidor. Es un lenguaje interpretado porque no se lo compila, sus instrucciones van ejecutándose a medida que un intérprete las va leyendo Es de alto nivel porque no se preocupa por asignaciones de memoria, páginas de memoria, interrupciones y todo eso, sino que sus instrucciones son fáciles de entender por los seres humanos Es embebido en páginas HTML porque el código fuente de un programa PHP siempre está metido dentro de una página 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 páginas 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ó. Además de las páginas HTML también puede enviar fotos, vídeos, canciones, gráficos, u otros documentos que estén incluidos dentro de dichas páginas.

CLIENTE WEB Un Cliente web es un programa, comúnmente conocido como el navegador, el cual le envía una petición al Servidor web y recibe una respuesta de éste

-2-

Son estáticas aquellas que siempre muestran lo mismo. envía el archivo.RESUMEN DE SERVIDOR WEB Y CLIENTE WEB Resumiendo: un Servidor web es un programa de computadora que recibe un mensaje de un Cliente web. Si no lo encuentra. etc. si tenemos una página productos. la única forma de que vean otros productos es que esa página sea editada y luego vuelta a subir al sitio web. El Cliente web (o navegador) le muestra al usuario la página que recibió -3- . la única forma de cambiar su contenido es que el administrador del sitio web introduzca modificaciones en ellas. por ejemplo: Firefox) envía el mensaje a través de Internet al Servidor web.py.html) 2. El Cliente web (o sea el navegador. recibe una página HTML de éste y muestra esa página al usuario. Son dinámicas aquellas que cambian su contenido dependiendo de una condición (el día de la semana. le envía una página avisándole que no encontró el archivo (la página que tiene el famoso error 404) 7. PÁGINAS WEB ESTÁTICAS Y PÁGINAS WEB DINÁMICAS Las páginas web pueden ser estáticas o dinámicas. Si lo encuentra. y le envía una página HTML a ese Cliente. así mismo como está grabado en el disco duro al Cliente web (o sea: al navegador) 6. que es un programa que se ejecuta en una computadora y que se encuentra en la dirección www.html todos quienes la vean siempre verán exactamente los mismos productos. Estas son mucho más flexibles y normalmente mucho más útiles que las estáticas aunque ambas tienen su razón de ser.html) 3. Un Cliente web es un programa de computadora que envía un mensaje al Servidor web.com. Se escribe en el navegador (o también llamado Cliente web) el nombre de la página que se desea visitar (por ejemplo: www. ¿CÓMO SE COMUNICAN EL CLIENTE Y EL SERVIDOR SIN PHP? Cuando no se usa PHP la comunicación es así: 1. solicitándole que le devuelva un archivo que tiene ese nombre (en este caso: index.abc.py/index. El Servidor web. recibe el mensaje 4. la hora del día.abc.). el nombre del usuario. Con PHP lo que haremos serán páginas web dinámicas. Por ejemplo. lo procesa. un dato que introdujo el usuario. Busca ese archivo en su disco duro 5.com.

la versión del intérprete PHP. al navegador Firefox) 11. Delphi. El Cliente web le muestra al usuario la página (el archivo . Se escribe en el navegador (o también llamado Cliente web) el nombre de la página que se desea visitar (por ejemplo: www. por ejemplo: Firefox) envía el mensaje a través de Internet al Servidor web. El Cliente web (o sea el navegador.html. En cambio. Al ver que la página tiene la extensión . solicitándole que le devuelva un archivo que tiene ese nombre (en este caso: index.html) Aquí hay algo importante que notar: en los lenguajes de programación normales (Visual FoxPro. Envía el archivo que generó. al Servidor web 10. etc. etc.html. -4- .html 8. en PHP la salida es la creación de un archivo que tiene la extensión . se comunica con un gestor de Bases de Datos. el cual se lo muestra al usuario.html) al Cliente web (o sea.py/index. El intérprete PHP recibe el mensaje (o sea: el nombre de un archivo que tiene extensión . El Servidor web envía la página (el archivo con extensión .php se la envía al intérprete PHP (que es otro programa alojado en la misma computadora que el Servidor web) 5.php) 3.abc. la hora.abc. El Servidor web.php es un archivo con extensión . el nombre del Servidor web.py recibe el mensaje 4. Si el archivo con extensión . Java. el cual tiene extensión .) 9.com. El resultado de la ejecución de todos los comandos contenidos en el archivo con extensión .com. Pantalla Nº 1 En la pantalla Nº 1 se ve un ejemplo de lo que ocurre cuando el archivo .html conteniendo un mensaje de error y algunos datos más (la fecha.¿CÓMO SE COMUNICAN EL CLIENTE Y EL SERVIDOR CON PHP? Cuando se usa PHP la comunicación es así: 1.php no existe en el disco duro del Servidor web entonces el intérprete PHP genera un archivo con extensión .php) 2. como podría ser el Firebird) 7. Basic.php) y lo busca en el disco duro 6. Si lo encontró. el cual se envía al Servidor web el cual lo envía al Cliente web. que es un programa que se ejecuta en una computadora y que se encuentra en la dirección www.php no existe en el disco duro del Servidor web.) la salida es normalmente la pantalla. ejecuta todos los comandos contenidos en ese archivo (y si es necesario.

los archivos . pero ¿vale la pena? Ventajas • No tienes límite en el espacio de almacenamiento. las fotos. en tu propia computadora. Si deseamos que nuestra computadora actúe como un Servidor web y que también interprete programas PHP entonces necesitaremos: 1. Casi todos los proveedores de hosting te asignan una cantidad “x” de megabytes. Sin embargo no es el mismo caso con el Servidor web. en cambio si tu sitio está en tu propia computadora puedes utilizar todo tu disco duro para ello si lo deseas. instalarlos y configurarlos por separado. Casi todos los proveedores de hosting te limitan la cantidad de megabytes que se pueden subir o bajar mensualmente en tu sitio. los vídeos.. sin perder tiempo en configurarlos. etc. si tienes un programa Servidor web y un intérprete del lenguaje PHP puedes tener todo tu sitio web (las páginas . etc. El intérprete del lenguaje PHP Podemos buscarlos. • No debes pagar por el hosting. ¿PUEDO TENER MI SITIO WEB EN MI PROPIA COMPUTADORA? Sí. Servidor de e-mail. Servidor de FTP. las páginas . éste debe ser descargado e instalado antes de poder ser usado.html. por ejemplo: Internet Explorer.css. la Base de Datos. Mozilla Firefox. • No tienes límite en el ancho de banda. Google Chrome.¿QUÉ DEBO INSTALAR EN MI COMPUTADORA? Todas las computadoras ya tienen instalado un programa que pueden usar como Cliente web.php. • Puedes tener siempre esos programas actualizados con su última versión -5- .). etc. son todos ejemplos de Clientes web. siempre tienen algunas limitaciones y los que realmente valen la pena son de pago. sin embargo la mejor opción es usar un instalador que los tiene a ambos incluidos. Aunque hay muchos sitios gratis. IIS o algún otro) 2. El programa Servidor web (puede ser Apache. • Eliminas la posibilidad de que los administradores del web hosting estén curioseando en tus programas y en tus Bases de Datos • Puedes instalar todos los programas que necesites (y que te gusten): Servidor web. los más conocidos son WAMP y XAMPP ¿Por qué usar un instalador todo-en-uno? Porque toda (o casi toda) la configuración ya está realizada y solamente podemos dedicarnos a usar esos programas.

Desventajas • El riesgo de seguridad se incrementa mucho.7-VC9-installer.7.net/projects/xampp/files/XAMPP%20Windows/1. Para ser descomprimido en una carpeta El instalador del XAMPP puede ser descargado desde: http://sourceforge.zip) puede ser descargado desde: http://sourceforge.7/xamppwin32-1. pero eso lleva su tiempo) • Si tu sitio es muy concurrido entonces necesitarás de un muy buen ancho de banda para evitar que el acceso sea lentísimo (y un ancho de banda grande puede llegar a ser muy caro) Deberías evaluar bien todos los puntos anteriores antes de tomar una decisión.7-VC9. 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. un buen antivirus.net/projects/xampp/files/XAMPP%20Windows/1. monitorear lo que entra y lo que sale de tu computadora.7. sobre todo en época de verano • Tus gastos en concepto de energía eléctrica aumentarán muchísimo • Si necesitas apagar tu computadora para hacerle alguna tarea de mantenimiento (ampliarle la memoria.7. pues si no está encendida no se podrá acceder a ella.7/xamppwin32-1. los 365 días del año. Eso significa que debes preocuparte por ese tema.exe/download El archivo comprimido (con formato . 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.apachefriends.html Allí encontrarás mucha documentación y comentarios. buscar los últimos parches de los programas que utilizas. Para ser instalado 2. usar un buen firewall.zip/download -6- . ¿DE DÓNDE PUEDO DESCARGAR EL XAMPP? La página principal es la siguiente: http://www.org/en/xampp. cambiarle el disco duro. El XAMPP viene en dos “sabores”: 1.) tu sitio estará inaccesible • Necesitarás contratar a alguien que se encargue de verificar constantemente que el hardware está bien y que no estás recibiendo ataques de hackers o de malware (o hacerlo tú mismo.7. • Necesitarás de un muy buen equipo de aire acondicionado para evitar que se sobrecaliente. etc. al estar expuesto a Internet puedes ser víctima de hackers.

5. Lo único que debes tomar en consideración 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. Si vas a usar el Servidor web frecuentemente entonces te conviene instalarlo pero si lo vas a usar muy esporádicamente entonces lo mejor sería que lo descomprimas en una carpeta. lo siguiente: Apache 2.4.5 Filezilla FTP Server 0.8 phpMyAdmin 3.21 MySQL 5.ZIP? Si elegiste la opción de descargar un archivo comprimido y lo deseas descomprimir para usarlo.16 PHP 5.¿CUÁL 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 más lenta).39 Tomcat 7. Lo normal es instalarlo en la carpeta C:\xampp\ ¿DÓNDE DEBO DESCOMPRIMIR EL ARCHIVO . -7- . normalmente C:\xampp\ ¿CÓMO SE INSTALA EL XAMPP? Como cualquier otro programa Windows.3.9.2. lo normal es que lo hagas en la carpeta C:\ para que se guarde en la carpeta C. ¿QUÉ VIENE INCLUIDO DENTRO DEL XAMPP? En el momento de escribir este documento.21 Los programas y las versiones de los mismos pueden variar en el futuro.0.\xampp\ que es la que asumiremos en todo este documento.

hasta ver esta pantalla: Pantalla Nº 2 Eso lo debes hacer una sola vez. etc. ejecutar sentencias SQL. ya está listo para ser usado. Filezilla es un Servidor de FTP. que son programitas que se ejecutan en el Cliente). 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.• • • • • • Apache es el Servidor web MySQL es un SGBD muy usado en Internet PHP es el intérprete del lenguaje PHP phpMyAdmin es un programa escrito en PHP encargado de administrar Bases de Datos MySQL. puede agregar.bat y esperar unos segundos. ¿CÓMO INICIALIZO EL XAMPP? Si lo instalaste. -8- . eliminar y modificar tablas. Los servlets son programitas que se ejecutan en el Servidor (a la inversa de los applets. Pero si lo descomprimiste en una carpeta entonces antes de usarlo deberás ejecutar el programa: C:\xampp\setup_xampp. la primera vez que usarás el XAMPP.

Si lo está. ya que siempre están ejecutándose. La desventaja es que consumen memoria y recursos del Sistema.exe ¿CÓMO SÉ SI EL INTÉRPRETE PHP SE ESTÁ EJECUTANDO? Fíjate en el Panel de Control de XAMPP si Apache se está ejecutando (o sea. ¿QUÉ SIGNIFICA INSTALAR APACHE COMO UN SERVICIO? Los servicios de Windows son programas que están siempre residentes en la memoria. Pantalla Nº 3 El nombre completo es: C:\xampp\xampp-control. PHP también. debes hacer click sobre su botón “Stop”. si está en “Running”). están allí desde que inicias el Windows hasta que sales de él (salvo que lo detengas manualmente). también se está ejecutando el intérprete de PHP). por ejemplo) cuando los necesitas. -9- . Si quieres iniciar una de ellas debes hacer click sobre su botón “Start” y si quieres detener una aplicación. La ventaja es que no debes ejecutarlos por ti mismo (haciendo doble click sobre un icono.¿QUÉ ES EL PANEL DE CONTROL DE XAMPP? Es un programa que te indica el estado actual de las aplicaciones incluidas en el paquete. lo cual es un desperdicio si no los utilizas. En la Pantalla Nº 2 vemos que sí se está ejecutando Apache (y por lo tanto.

eso significa que cuando escribas localhost en tu navegador se ubicará en esa carpeta. eso es porque la convención de Windows es usar barras hacia atrás para las carpetas y la convención de Unix es la de usar barras hacia adelante.¿CUÁL ES LA CARPETA RAÍZ DEL XAMPP? La carpeta raíz o localhost del xampp es htdocs.php Habrás notado que en un caso se usan barras hacia atrás y en el otro se usan barras hacia adelante. .html localhost/Verano2012/fotos/amigos. localhost C:\xampp\htdocs\ ¿CÓMO CREO LA ESTRUCTURA DE CARPETAS DE MI SITIO WEB? Dado que C:\xampp\htdocs\ equivale al localhost.10 - . entonces estas podrían 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 páginas podrías escribir en la barra de direcciones algo como: localhost/Verano2012/index. por ejemplo supongamos que estás construyendo un sitio que se llamará Verano2012. Como Internet fue inicialmente creado en Unix ese es el motivo del por qué se usan las barras hacia adelante en las direcciones web.html localhost/Verano2012/lugaresvisitados. todas tus carpetas deben estar debajo de ella.

.PROGRAMACIÓN EN PHP CONOCIMIENTOS PREVIOS A partir de aquí se asume que tienes algunos conocimientos aunque sean básicos del lenguaje HTML y que también sabes programar en algún lenguaje de programación (Visual FoxPro. EJEMPLOS Todos los programas que desarrollaremos en este curso se encuentran incluidos en el mismo archivo .php. para poder entender lo que sigue. el programa anterior se llama: C:\xampp\htdocs\pruebas\prueba01. pero la extensión debe ser .php Las etiquetas de PHP Todos los códigos fuente de PHP están entre las etiquetas <?php y ?> El punto y coma al final de la sentencia Al igual que otros lenguajes de programación. ?> </body> </html> Puedes grabar ese archivo con cualquier nombre que quieras. Delphi. <html> <head></head> <body> <?php echo "Estamos aprendiendo PHP y Firebird". C.php.ZIP de donde extrajiste este documento. en PHP hay que finalizar las sentencias con un punto y coma. ¿CÓMO SE CREA UN PROGRAMA PHP? Como ya habíamos visto. los programas PHP están incluidos dentro de archivos con extensión . Java.). ya que es la única que reconoce el intérprete de PHP. Todos los programas que desarrollaremos a lo largo de este curso se guardarán en la carpeta pruebas y los nombres de todos los archivos tendrán el formato: prueba99. etc.html. Visual Basic. Puedes escribir las siguientes instrucciones en cualquier editor que guarde el contenido como texto plano. por ejemplo el Block de Notas del Windows. por ejemplo. sí o sí.11 - . Si eso no es así entonces deberías leer algunos tutoriales aunque sean muy simples sobre esos temas.

html (o sea: una página web).12 - . Interesante.¿CÓMO SE EJECUTA UN PROGRAMA PHP? Escribiendo su nombre (y su extensión . para ejecutar el programa anterior escribiríamos: localhost/pruebas/prueba01. echo $Localidad. Todos los nombres de variables tienen un símbolo $ como prefijo y son sensibles a las mayúsculas y a las minúsculas (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 = "Asunción.php) en la barra de direcciones del navegador.php ¿CUÁL ES EL RESULTADO DE LA EJECUCIÓN DE UN PROGRAMA PHP? Siempre es un archivo con extensión . ¿verdad? COMENTARIOS Los comentarios se indican con dos barras hacia delante (//) o con /* para empezarlo y */ para finalizarlo.php en la barra de direcciones hacemos click con el botón derecho en esa página web y luego en el menú contextual que aparece hacemos click sobre la opción “Ver código fuente” esto es lo que veremos: <html> <head></head> <body> Estamos aprendiendo PHP y Firebird</body> </html> Que no es lo mismo que habíamos escrito en nuestro programa. VARIABLES EN PHP No se las define antes de usarlas. Paraguay".php . ?> </body> </html> prueba02. Por ejemplo. sino el resultado de la ejecución de nuestro programa. Si después de escribir localhost/pruebas/prueba01. son creadas en el momento en que se las usa por primera vez.

$Precio = 487. echo $Mes. entero. echo "<br>". echo $Localidad.13 - . como vemos a continuación: <html> <head></head> <body> <?php $Nombre="Walter". $Mes = 12. Paraguay". echo "<br>". ?> </body> </html> prueba03.php . ?> </body> </html> prueba04. echo $Nombre.php SALTOS DE LÍNEA Para que la impresión se muestre en la siguiente línea se usa “<br>”. echo $Nombre. $Precio = 487. lógica $Nombre = “Walter”. echo $Localidad. $Mes = 12. echo "<br>". echo "<br><br><br><br>". echo "<br>". echo $Localidad. echo $Precio. $Localidad = "Asunción. $Cobrado = true.52. echo $Cobrado. $Cobrado = true.TIPOS DE VARIABLES Hay cuatro tipos de variables: string. echo "<br>". doble.52. // Tipo string // Tipo entero // Tipo doble // Tipo lógica (el valor numérico de true es 1) No se necesita convertirlas a tipo string para concatenarlas <html> <head></head> <body> <?php $Nombre = "Walter". echo $Nombre.

echo "<br>". $Mes.52.52.php También se podría concatenar todo lo anterior para escribirlo en una sola línea. ?> </body> </html> prueba06. $Nombre . echo "<br>". $Precio . $Precio = 487.php . echo "El precio es " . echo $Apellido . ?> </body> </html> prueba05. $Precio = 487. $Cobrado. "El mes es " . echo "El nombre es " .CONCATENACIÓN Para concatenar dos constantes o variables se usa el punto. $Nombre. " . $Mes .php <html> <head></head> <body> <?php $Nombre = "Walter". $Cobrado = true. por ejemplo: <html> <head></head> <body> <?php $Nombre="Napoleón". "<br>" . $Apellido = "Bonaparte". ". "Cobrado es " . $Nombre. echo "El nombre es " . $Precio. "<br>" . $Mes = 12. "El precio es " . por ejemplo: <html> <head></head> <body> <?php $Nombre = "Walter". no es necesario que los dos operandos sean de tipo string. echo "El mes es " .14 - . $Cobrado. $Mes = 12. echo "Cobrado es " . "<br>" . echo "<br>". $Cobrado = true. ?> </body> </html> prueba07.

$Precio = 876. [Instrucción 2].42. Si se necesita ejecutar varias instrucciones. $Mensaje2 = "El precio es $Precio". // Se sustituye la variable por su valor <html> <head></head> <body> <?php $Precio = 876.15 - . echo $Mensaje1. // No se sustituye la variable por su valor $Mensaje2 = “El precio es $Precio”. [Instrucción 4]. } else { [Instrucción 5]. } elseif (Condición 2) { [Instrucción 3]. Tiene el siguiente formato: if (Condición 1) { [Instrucción 1]. éstas deben estar entre llaves. Las condiciones siempre deben estar entre paréntesis.42. la diferencia es que en el primer caso no se sustituyen las variables que tenga en su interior y en el segundo caso sí. $Mensaje1 = ‘El precio es $Precio’. ?> </body> </html> prueba08. } . [Instrucción 6]. echo $Mensaje2. echo "<br>".COMILLAS SIMPLES Y COMILLAS DOBLES Las variables de tipo string se pueden definir con comillas simples o con comillas dobles. $Mensaje1 = 'El precio es $Precio'.php ESTRUCTURA CONDICIONAL IF Para que la ejecución del programa se desvíe según que una condición sea verdadera o falsa se utiliza la construcción if … elseif … else.

16 - . } elseif ($HoraEntrada == 14) { echo "Tarde". if ($HoraEntrada == 6) { echo "Mañana". if ($HoraEntrada == 6) echo "Mañana".php <html> <head></head> <body> <?php $HoraEntrada = 14. $Sueldo = 150. ?> </body> </html> prueba11. $Sueldo = 100.} else { echo "Noche". if ($Edad >= 18) echo "Puede ver la película".<html> <head></head> <body> <?php $Edad = 17. ?> </body> </html> prueba10. else echo "No puede ver la película". } echo "<br><br>Tu sueldo es de $Sueldo por hora". ?> </body> </html> prueba09. elseif ($HoraEntrada == 14) echo "Tarde". $Sueldo = 120. else echo "Noche".php .php <html> <head></head> <body> <?php $HoraEntrada = 14.

17 - . [Se cambia el valor]) { [Instrucciones]. $i <= 100. . ?> </body> </html> prueba12. $i++) echo "I = $i <br>". incrementa el valor de la variable $i en una unidad. } <html> <head></head> <body> <?php for ($i = 1. $i <= 100 es la condición que debe cumplirse para que el ciclo se repita. eso se ejecuta una sola vez.php $i = 1 lo que hace es asignar el valor inicial de la variable $i. [condición].OPERADORES DE COMPARACIÓN Para comparar dos operandos se pueden utilizar los siguientes operadores de comparación: == != >= > <= < // Igualdad // Distinto // Mayor o igual // Mayor // Menor o igual // Menor ESTRUCTURA DE REPETICIÓN FOR Tiene el siguiente formato: for ([Se inicializa la variable]. En otras palabras significa “mientras el valor de $i sea menor o igual que 100” $i++ es lo mismo que en otros lenguajes se escribiría $i = $i + 1 o sea.

antes del while() hay que asignarle un valor inicial a la variable que se usará en la condición. ESTRUCTURA DE REPETICIÓN WHILE Tiene el siguiente formato: while (condición) { [Instrucciones]. while ($i <= 10) { echo "El valor es $i <br>". No se coloca un punto y coma después de la llave de cierre . } ?> </body> </html> prueba14.php En este caso el valor inicial es 2 y el incremento también es de 2. $i <= 100. Si la primera vez la condición es falsa entonces las instrucciones que estén dentro del while nunca será ejecutadas. inclusives. $i++. 2.<html> <head></head> <body> <?php for ($i = 2.php En este caso. $i = $i + 2) echo "I = $i <br>".18 - . ?> </body> </html> prueba13. mientras la condición sea verdadera se ejecutarán todas las instrucciones que estén entre las llaves. eso significa que se mostrarán todos los números pares entre 2 y 100. Hay que tomar en cuenta dos cosas: 1. } Mientras la condición sea verdadera se ejecutarán las instrucciones. <html> <head></head> <body> <?php $i = 1.

do { echo "El valor es $i <br>".php . primero se ejecutan las instrucciones y luego se verifica si la condición es verdadera ¿qué implica eso? Que las instrucciones siempre se ejecutan al menos una vez. } while (condición).19 - . ?> </body> </html> prueba15. <html> <head></head> <body> <?php $i = 5. $i = $i + 5. } while ($i <= 100). También.ESTRUCTURA DE REPETICIÓN DO WHILE Tiene el siguiente formato: do { [instrucciones]. fíjate que se coloca un punto y coma al final de la condición. En este caso.

<html> <head> <title>Ejemplo de una función interna</title> </head> <body> <?php phpinfo(). ambos incluidos. $i++) echo "$i <br>". por ejemplo el siguiente: http://www.php La función rand() devuelve un número que se encuentre entre el primero y el segundo de sus argumentos. te permitirá siempre conocer la configuración actual de PHP. 20). $i <= $NumeroElegido. ?> </body> </html> prueba16. $NumeroElegido = rand(1. para conocerlas a todas deberías leer algún manual o visitar algún sitio web.20 - .net/manual/es/funcref. ?> </body> </html> prueba17.php La función phpinfo() es extremadamente importante. <html> <head> <title>Ejemplo de uso de la función rand()</title> </head> <body> <?php echo "Ejecuta varias veces este programa para ver lo que hace <br><br>".FUNCIONES INTERNAS El PHP cuenta con numerosísimas funciones internas. .php.php Allí las encontrarás clasificadas y con una descripción de la tarea que realizan. for ($i = 1.

echo "</tr></td>". [return valor_retornado]. normalmente llamadas funciones del usuario. Se le puede enviar cualquier mensaje y lo mostrará centrado horizontalmente. echo $Mensaje.FUNCIONES DEL USUARIO Las declaraciones de funciones propias del programador. } <html> <head> <title>Ejemplo de función del usuario</title> </head> <body> <?php function CentrarMensaje($Mensaje) { echo "<table width=\"100%\" border=\"1\">". echo "</table>". } CentrarMensaje("Este es mi primer mensaje centrado con la función CentrarMensaje()"). CentrarMensaje("Este también estará centrado"). ?> </body> </html> prueba18. echo "<tr><td align=\"center\">".21 - .php Esta función mostrará en la pantalla un mensaje centrado. . tienen el siguiente formato: Function [nombre de la función] ([parámetros de entrada]) { [instrucciones].

<html> <head> <title>Esta función devuelve el mayor de dos números</title> </head> <body> <?php function Mayor($Numero1. se hace como siempre. El ampersand (&) se coloca en la declaración de la función. ¿Y si se necesita que una función devuelva más de un valor? En ese caso los valores se devuelven por referencia. $Valor2). no en la llamada a la función. Para decirle al PHP que deseamos que devuelva los valores por referencia le colocamos el prefijo ampersand (&). . $Valor2 = 22. ?> </body> </html> $Valor2 es: " . else return $Numero2. Todas las variables que empiecen con & serán devueltas por referencia. } $Valor1 = 15. prueba19. La función MayorMenor() recibe dos números y devuelve el número mayor y el número menor. como podemos ver en el siguiente ejemplo. La llamada es normal. echo "El mayor entre $Valor1 y Mayor($Valor1.22 - . $Numero2) { if ($Numero1 > $Numero2) return $Numero1.php La función Mayor() recibe como parámetros dos números y devuelve el mayor de ellos.

php Fíjate que al declarar la función MayorMenor() dos de sus parámetros empiezan con el símbolo de dólar y dos empiezan con ampersand. else $Menor = $Numero2. ?> </body> </html> función devuelve el mayor y el menor de dos prueba20. $NumeroMenor). Solamente los que empiezan con ampersand se devuelven. echo "El menor entre $Valor1 y $Valor2 es: $NumeroMenor<br>". $Valor2. $Numero2. else $Mayor = $Numero2. MayorMenor($Valor1. &$Menor){ if ($Numero1 > $Numero2) $Mayor = $Numero1. } $Valor1 = 15. .<html> <head> <title>Esta números</title> </head> <body> <?php function MayorMenor($Numero1. $NumeroMayor. if ($Numero1 < $Numero2) $Menor = $Numero1. echo "El mayor entre $Valor1 y $Valor2 es: $NumeroMayor<br>".23 - . &$Mayor. $Valor2 = 22.

$Dia[1] = 28. $Continente[] = “Asia”. Si se necesita conocer la cantidad de elementos se puede utilizar la función count(). y es la siguiente: $Color = array(“Blanco”. $NombreEstacion[3] = “Invierno”. “Verde”). . $NombreEstacion[1] = “Verano”. “Amarillo”. // $Cantidad será 5 También se puede usar la función sizeof(). cuando se los define el PHP ya sabe que se trata de un array.24 - . ejemplos: $NombreEstacion[0] = “Primavera”. booleano). doble. También se puede evitar colocar los números de los índices. $Continente[] = “América”. Dependiendo de la cantidad de dimensiones que tengan pueden ser: • • • De una dimensión (vectores) De dos dimensiones (matrices) De tres o más dimensiones (multidimensionales) Para acceder a los elementos del array se utilizan los corchetes [] Pueden guardar valores de cualquier tipo de variable (string. ya que el PHP los puede colocar automáticamente. No se los necesita declarar previamente. “Azul”. Hay que recordar que los arrays siempre comienzan numerándose desde cero. entero. $Dia[2] = 31. $Continente[] = “Oceanía”.ARRAYS TRADICIONALES Los arrays son muy utilizados en la programación en general y en PHP en particular. “Rojo”. por ejemplo: $Cantidad = count($Continente). $Continente[] = “Europa”. $Dia[0] = 31. la cual es equivalente a count() Hay otra forma de asignarle valores a un array. $NombreEstacion[2] = “Otoño”. por ejemplo: $Continente[] = “Africa”.

Un array asociativo también puede ser creado así: $Cliente = array(‘Codigo’ => ‘00257’. "<br>". $Cliente['Telefono'] . entonces podríamos escribir: echo "Nombre = " . Si queremos usar un array tradicional para guardar los datos de un Cliente podríamos tener algo así. Con un array asociativo podríamos escribir algo como: $Cliente[‘Codigo’] = “00257”. no necesitamos recordar los números de índices sino las palabras clave. llamados asociativos. $Cliente['Nombre'] . $Cliente[0] = “00257”. Eso no es un problema cuando nuestro array tiene pocos elementos ¿pero si tiene 25 ó más? Lo cual no es raro en programación web. Esto es muchísimo más fácil de recordar y por lo tanto es muy usado en PHP. $Cliente[‘Nombre’] = “Juan Pérez”. que en el cuarto elemento se encuentra la Localidad. ‘Nombre’ => ‘Juan Pérez’. $Cliente[2] = “(212) 567-1234” $Cliente[3] = “Nueva York” ¿Cuál es el problema? Que debemos recordar la relación de los índices con los datos.25 - . los equivalentes a los campos de un registro. Si deseamos visualizar el nombre y el teléfono del cliente. $Cliente[‘Localidad’] = “Nueva York”. ‘Telefono’ => ‘(212) 567-1234’. $Cliente[‘Telefono’] = “(212) 567-1234”. los cuales poseen casi todos los lenguajes de programación. Por ejemplo. En los arrays asociativos se accede a los elementos por medio de un string. ‘Localidad’ => ‘Nueva York’). $Cliente[1] = “Juan Pérez”. En los arrays tradicionales se accede a los elementos del array a través de un índice numérico. el PHP también dispone de otra clase de arrays. Como vemos. "<br>". Allí se complica. Para salvarnos están los arrays asociativos. . echo "Teléfono = " .ARRAYS ASOCIATIVOS Además de los arrays tradicionales.

php <html> <head> <title>Uso de un array asociativo</title> </head> <body> <?php $Cliente = array('Codigo' => '00257'. $Cliente['Nombre'] . "<br>". "<br>". $Cliente['Telefono'] . echo "Localidad = " . "<br>". $Cliente['Localidad'] . Cliente['Localidad'] = "Nueva York". echo "Localidad = " . echo "Nombre = " . "<br>".<html> <head> <title>Uso de un array asociativo</title> </head> <body> <?php Cliente['Codigo'] = "00257". echo "Teléfono = " . 'Nombre' => 'Juan Pérez'. ?> </body> </html> prueba21. Cliente['Telefono'] = "(212) 567-1234". echo "Teléfono = " .php . "<br>". echo "Nombre = " . echo "Código = " . 'Telefono' => '(212) 567-1234'. "<br>". echo "Código = " . 'Localidad' => 'Nueva York'). $Cliente['Localidad'] . Cliente['Nombre'] = "Juan Pérez". "<br>".26 - . $Cliente['Telefono'] . "<br>". $Cliente['Codigo'] . ?> </body> </html> prueba22. $Cliente['Codigo'] . $Cliente['Nombre'] .

27 - . . en este caso no se trata de un programa PHP sino de una página web escrita totalmente en HTML.php) que pide los datos es la siguiente: <form method = “post” action = “mipagina.ENVÍO DE DATOS DESDE UN FORMULARIO Para que nuestros programas sean interactivos necesitamos pedirles datos a los usuarios.html aunque también podría hacerse con .html) Otra. La propiedad method indica como se organizan los datos que se enviarán al Servidor web. Serán enviados cuando el usuario haga click sobre el botón “submit”. En general necesitaremos de dos páginas: Una. para procesar esos datos (página . la cual tiene dos propiedades obligatorias: method y action. los valores posibles son “post” y “get”. procesar dichos datos y luego devolverle el resultado.php”> [se piden los datos] [se envían los datos] </form> <html> <head> <title>Pedido de ingreso de datos</title> </head> <body> <form method = "post" action = "mipagina. para pedirle al usuario que ingrese los datos (página .php"> Ingresa tu nombre: <input type = "text" name = "nombreusuario"> <br> <input type = "submit" value = "Confirmar"> </form> </body> </html> ingresodatos.html Como puedes ver. lo normal es que se envíen mediante “post” La propiedad action indica el nombre del archivo que recibirá los datos ingresados por el usuario.php) • • La estructura de la página (generalmente es . Le indicamos que queremos un formulario con la marca <form>.

php Reset deja el formulario en blanco. Button define un botón el cual tiene unos comandos que serán 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 también tiene incluido un botón “Submit”. 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 interactúa con él Submit envía el formulario al programa . cuando el usuario hace click sobre la imagen el formulario es enviado El nombre del control se lo asignamos nosotros. el lugar donde se le puede pedir al usuario que ingrese su nombre. 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. su dirección. nacionalidad . por ejemplo: nombreusuario. su e-mail. borrando todo lo que introdujo el usuario.28 - . email. En general es aconsejable no usarlo.La propiedad input type Esta propiedad nos permite definir el tipo del control y el nombre del control. Checkbox es una casilla de verificación donde el usuario puede elegir solamente una de dos alternativas posibles (sí/no. etc. edad.

29 - . el nombre de la variable es nombreusuario). <html> <head> <title>Ejemplo de captura de datos</title> </head> <body> <?php echo "El nombre ingresado es: " echo $_REQUEST['nombreusuario']. Al escribir en el navegador localhost/pruebas/ingresodatos. el cual los procesará y cuando termine devolverá una página . ?> </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.RECEPCIÓN DE DATOS Los datos que envió el usuario cuando hizo click sobre el botón “Submit” son recibidos por un programa PHP.html veremos algo como esto: Pantalla Nº 4 Y luego de escribir el nombre y de hacer click sobre el botón “Confirmar” veremos algo como esto: Pantalla Nº 5 . Hay que recordar que los nombres de las variables son sensibles a las mayúsculas y a las minúsculas. indicándole como subíndice y entre apóstrofos el nombre de la variable que usamos en el formulario de envío de datos (en este ejemplo.html al Servidor web.

puede elegir varias de esas opciones. varias. una.html . resta. <html> <head> <title>Ejemplo del uso de checkbox</title> </head> <body> <form method = "post" action = "checkbox. multiplicación.php"> Ingresa un número: <input type = "text" name = "numero1"> <br> Ingresa un número: <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. Si un formulario tiene varias casillas de verificación entonces el usuario puede elegir: ninguna. Si lo desea.30 - . división. en inglés) sirven para que el usuario elija una de dos opciones posibles: sí o no.CONTROL CHECKBOX Las casillas de verificación (o checkbox. verdadero o falso. todas. El siguiente programita le pedirá que introduzca dos números y luego la operación aritmética que desea realizar con ellos: suma.

echo "La resta es $Resta<br>". porque el usuario pudo haber marcado varias casillas de verificación. echo "La suma es $Suma<br>". Si devuelve true entonces sí existe y si devuelve false entonces no existe. } ?> </body> </html> checkbox.$numero2. if (isset($_REQUEST['check1'])) { $Suma = $numero1 + $numero2. La función isset() nos dice si existe la variable que le pasamos como parámetro. } if (isset($_REQUEST['check3'])) { $Multiplicacion = $numero1 * $numero2. echo "La multiplicación es $Multiplicacion<br>".php ¿Para qué se utiliza la función isset()? Resulta que si el checkbox no está seleccionado en el formulario entonces no se crea un elemento en el arrary asociativo $_REQUEST. echo "La división es $Division<br>".<html> <head> <title>Resultado/s obtenido/s del uso de checkbox</title> </head> <body> <?php $numero1 = $_REQUEST['numero1'].31 - . } if (isset($_REQUEST['check4'])) { $Division = $numero1 / $numero2. En este programa si devuelve true eso significa que el usuario marcó esa casilla de verificación. } if (isset($_REQUEST['check2'])) { $Resta = $numero1 . . Usamos la función isset() cuatro veces. $numero2 = $_REQUEST['numero2'].

if ($_REQUEST['radio1'] == "Cheque") echo "Necesito conocer el Nombre del Banco".CONTROL RADIO El control radio sirve para que el usuario elija una (y solamente una) de las opciones que tiene a su disposición.html Para que el PHP sepa que los botones radio están relacionados todos deben tener el mismo nombre (en este caso.php"> ¿Con qué deseas pagar tu compra? <br><br> <input type = "radio" name = "radio1" "Tarjeta">Tarjeta de crédito <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. ?> </body> </html> prueba23.php Recuerda que todos los botones radio deben tener el mismo nombre. if ($_REQUEST['radio1'] == "PayPal") echo "Tu pago se realizará con PayPal". . <html> <head> <title>Uso de controles radio</title> </head> <body> <form method = "post" action = "prueba23. 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 Crédito". Si hace click sobre un control radio todos los demás controles radio que están relacionados se desactivan.32 - .

Cada opción debe tener un valor (el que recibirá el programa .php"> ¿En cuál medio de locomoción te trasladarás para llegar a la conferencia? <select name = "Transporte"> <option value = "Automóvil">En automóvil</option> <option value = "Avión">En avión</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. de las cuales debe seleccionar una (aunque más adelante veremos que puede seleccionar varias).33 - . Además. todas las opciones deben finalizar con la marca </option> Como de costumbre se incluye un botón de tipo “submit” para que cuando el usuario haga click allí el nombre de la opción seleccionada sea enviado al programa determinado por la cláusula action (en este caso.html Dentro de las marcas <select> y </select> se colocan todas las opciones deseadas. <html> <head> <title>Uso del control select</title> </head> <body> <form method = "post" action = "prueba24.CONTROL SELECT En PHP se llama control select al mismo control que otros lenguajes llaman combobox. ese programa se llama prueba24. Su finalidad es mostrar varias opciones al usuario.php) .php) y un texto que se le mostrará al usuario. el cual puede ser (y generalmente es) distinto al valor de esa opción.

php Primero. if ($Transporte == "Avión") echo "El aeropuerto queda a tres kilómetros del salón". de acuerdo a su opción se le mostró un mensaje.<html> <head> <title>Procesar el control select</title> </head> <body> <?php $Transporte = $_REQUEST['Transporte']. . if ($Transporte == "Automóvil") echo "No te resultará fácil encontrar donde estacionar". if ($Transporte == "Bicicleta") echo "¿Irás en bicicleta? Es peligroso". se guardó en la variable $Transporte el nombre del transporte que eligió el usuario en el control select (o combobox) y luego. if ($Transporte == "Tren") echo "La estación del tren está a 2 cuadras del salón".34 - . ?> </body> </html> prueba24. if ($Transporte == "Motocicleta") echo "Cuidado con los otros vehículos".

es similar al control text pero mientras que éste solamente permite que el usuario escriba en una línea. ?> </body> </html> prueba25. <html> <head> <title>Uso del control textarea</title> </head> <body> <form method = "post" action = "prueba25. coñac</textarea> <br><br> <input type = "submit" name = "Enviar"> </form> </body> </html> controltextarea. $BebidasPreferidas = $_REQUEST['Bebidas']. coñac. Si se desea inicializarlo con algún texto. echo "<br>".php"> ¿Cuáles son tus canciones favoritas? <br> <textarea name = "Canciones"></textarea> <br><br> ¿Y tus bebidas favoritas? <br> <textarea name = "Bebidas">Vino.CONTROL TEXTAREA El control textarea le permite al usuario escribir varias líneas de texto. cerveza.35 - . echo "¿Y beber $BebidasPreferidas?". el textarea le permite escribir en varias. tal como se ve en el textarea Bebidas el cual se inicializa con Vino. echo "¿Así que te gusta escuchar $CancionesPreferidas?".html Para definir un control textarea hay que delimitarlo con los marcadores <textarea> y </textarea>. cerveza. En otros lenguajes se le denomina control editbox. hay que escribir dicho texto entre esas marcas. <html> <head> <title>Procesar el control textarea</title> </head> <body> <?php $CancionesPreferidas = $_REQUEST['Canciones'].php .

36 - . Las funciones más 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 línea en el archivo de texto Lee una línea 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 ejecución de un programa La función fopen() sirve para crear o abrir un archivo de texto y recibe dos parámetros: • El nombre del archivo • La operación que se desea realizar con ese archivo. Lo abre para sólo lectura. . Si no existe. lo crea. lo prepara para que se le añadan datos al final o “w”. aquellos que queremos usar así como fueron guardados. lo crea. 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 más 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. Si no existe. las más usadas son: o “a”. En una Base de Datos guardaremos lo que sea más complejo.ARCHIVOS DE TEXTO Si necesitamos que los datos que ingresó el usuario estén disponibles para un uso posterior (quizás varios días o meses después) debemos guardarlos en el disco duro del Servidor. No se podrá escribir en él Y si se pudo abrir el archivo entonces devuelve un número positivo que deberá ser usado en todas las operaciones que posteriormente se realizarán con ese archivo. La función fputs() sirve para escribir una línea de texto en el archivo y recibe dos parámetros: • El identificador del archivo con el cual se quiere trabajar • El texto que se quiere grabar en ese archivo Y devuelve true si la operación tuvo éxito o false en caso contrario. Si existe. Si existe. borra todo su contenido o “r”. Si no se pudo abrir el archivo devuelve -1. en ese mismo orden.

con el código de salida o 0 = está todo bien o 1 .La función fgets() sirve para leer una línea de texto del archivo y recibe un parámetro: • El identificador del archivo con el cual se quiere trabajar Y devuelve un string conteniendo una línea de texto. Recibe un parámetro: • El identificador del archivo que se desea averiguar su estado Y devuelve true si ya se leyó todo el archivo (o sea. La función feof() sirve para indicar si ya se leyó todo el archivo de texto. 254 = ocurrió algún error o 255 = no debe ser usado. Recibe dos parámetros: • Nombre del archivo origen • Nombre del archivo destino Devuelve true si la copia se realizó con éxito y false si falló. Recibe un parámetro que puede ser: • Un string.. La función file_exists() comprueba si un archivo existe o no.37 - . La función exit() finaliza la ejecución de un programa. conteniendo el mensaje que se mostrará al usuario • Un número entero. es para uso interno del PHP . Recibe un parámetro: • Nombre del archivo que se desea comprobar si existe o no Devuelve true si el archivo existe y false si no existe La función copy() copia un archivo desde el origen hacia el destino. si el puntero se encuentra en EOF = End of File) y false en caso contrario La función fclose() sirve para cerrar un archivo de texto que estaba abierto y recibe un parámetro: • El identificador del archivo que se quiere cerrar Devuelve true si se pudo cerrar exitosamente el archivo y false si por algún motivo no pudo ser cerrado.

fputs($fp. donde el usuario escribirá sus comentarios.CREACIÓN Y APERTURA DE UN ARCHIVO DE TEXTO En el siguiente programa implementaremos un Libro de Visitas para nuestro sitio web.38 - . la diferencia es que ahora determinamos el tamaño que tendrá el control área de texto. <html> <head> <title>Libro de visitas</title> </head> <body> <form method = "post" action = "prueba26. echo "Los datos han sido grabados". "------------------------------------------------------").html Esta página HTML es muy similar a las que ya hemos visto con anterioridad. $_REQUEST['NombreUsuario']).txt". "a") or exit("No se puede usar el archivo"). fputs($fp. fclose($fp).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. fputs($fp. fputs($fp. $_REQUEST['Comentarios']). fputs($fp. "\n"). ?> </body> </html> prueba26. fputs($fp.php . Le preguntaremos al usuario que opinión le merece nuestro sitio web y su respuesta guardaremos en un archivo de texto el cual podrá ser leído por los demás visitantes del sitio. <html> <head> <title>Procesar libro de visitas</title> </head> <body> <?php $fp = fopen("visitas. "\n"). "\n").

Fíjate que el primer parámetro de la función fputs() es el número que devolvió la función fopen().php) puedas ver claramente lo que sucede. una vez que todo lo que queríamos escribir ya fue escrito. Finalmente. luego unas rayas y finalmente otra línea en blanco. Los caracteres “\n” (nueva línea) son equivalentes al CHR(13) o CHR(10) o CHR(13) + CHR(10) que se usa en otros lenguajes. luego otra línea en blanco. La función fputs() escribe en el archivo de texto el nombre del usuario.php se han empleado varias de las funciones que hemos visto con anterioridad.39 - . El valor que devuelve la función fopen() lo guardamos en la variable $fp Si por algún motivo el archivo no se pudo abrir entonces se ejecutará lo que se encuentre a continuación del or. luego los comentarios. luego una línea en blanco. Ingresa a librovisitas. .En el programa prueba26. Este programa es muy sencillo y no se han hecho las verificaciones de errores. algo que sí deberíamos hacer en nuestros programas reales. en este caso la función exit() la cual le muestra un mensaje al usuario y luego finaliza el programa. cerramos el archivo con la función fclose(). Siempre hay que cerrar los archivos que habíamos abierto para no desperdiciar recursos de la computadora.html y escribe varios comentarios y haz click varias sobre el botón “Enviar” para que en el siguiente programa (prueba27.

. en la variable $fp tendremos su número. $NuevaLinea = nl2br($Linea). while (!feof($fp)) { $Linea = fgets($fp). ?> </body> </html> prueba27. Guardamos la línea leída del archivo. incluyendo el carácter \n.40 - . La función nl2br() sirve para convertir los caracteres \n a <br>.LECTURA DE UN ARCHIVO DE TEXTO Para leer el contenido de un archivo de texto emplearemos la función fgets(). se ejecutará la función exit().txt". Mientras no se llegue al final del archivo iremos leyendo todas sus líneas.php Si se pudo abrir el archivo para sólo lectura. ¿por qué hacemos eso? Porque el navegador no efectúa el salto de línea cuando lee \n. Para saber si ya hemos leído todo el archivo utilizaremos la función feof(). Si hubo algún error. por lo tanto nosotros debemos convertir \n a <br> y eso se consigue con la función nl2br(). La variable $Linea contiene una línea completa. <html> <head> <title>Leer el libro de visitas</title> </head> <body> <?php $fp = fopen("visitas. echo $NuevaLinea. ahora con la marca <br> reemplazando al carácter \n en una nueva variable ($NuevaLinea) e imprimimos esa variable. } fclose($fp). "r") or exit("No se puede usar el archivo").

. A la gran mayoría de tus clientes le agradará la idea de poder realizar consultas a la Base de Datos desde cualquier PC que tenga conexión a Internet. sin embargo lo más interesante viene ahora: acceder a una Base de Datos SQL que está alojada en el Servidor web. lo que le pagamos y lo que le estamos adeudando Pedidos automáticos al Proveedor. lo que se le cobró y lo que está adeudando.BASES DE DATOS FIREBIRD Hasta ahora hemos visto mucho sobre PHP. Lo que le compramos. Todo lo que se vendió durante las dos fechas especificadas Informe de Ventas por Internet. Informe de Ventas. ya dependerá de tu creatividad el ir agregando muchas opciones más. ingresan sus datos y les enviamos su pedido y la Factura Productos y servicios más consultados. El usuario ingresa su código y se le muestra su Estado de Cuentas. desde su notebook. Todo lo que se vendió gracias al sitio web Informe de Impuestos a Pagar. ¿Cuáles de los productos y servicios que mostramos en nuestro sitio web son los más visitados por los usuarios? ¿Cuáles no son visitados? Productos y servicios más vendidos ¿Cuáles de los productos y servicios mostrados tienen mayor venta? ¿Y cuáles no se venden? Votaciones. lo que se le vendió. 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 podríamos ofrecerles a nuestros clientes un programa que (por ejemplo) hiciera lo siguiente: Vender por Internet. Todo lo que se le debe pagar al fisco en concepto de impuestos Estado de Cuentas con el Proveedor. Se le presentan al usuario varias opciones y se le pregunta cual (o cuales) desea elegir Saldo de clientes. con los conocimientos adquiridos ya podríamos hacer un montón de programas útiles. Si nuestro Proveedor también tiene un sitio web para la recepción de pedidos entonces podríamos automatizar esa tarea y cada vez que el stock de un producto llegue a su cantidad mínima realizar el pedido correspondiente - Estas son solamente algunas ideas.41 - . desde su tableta o desde cualquier otro dispositivo que tenga conexión con Internet. desde su teléfono celular. Los usuarios eligen los productos o servicios que desean adquirir.

Identificador del Cliente) • MOVIMDET (Identificador.FDB tiene las siguientes tablas: • CLIENTES (Identificador. .ZIP que tiene incluido este documento.EXE) ¿CUÁL ES LA BASE DE DATOS FIREBIRD QUE UTILIZAREMOS? Para los ejemplos que vienen a continuación he creado una Base de Datos cuyo nombre es ADMIN. Cantidad y Precio son numéricos. Línea.INI y lo cerramos 6. Precio de Venta) • MOVIMCAB (Identificador.¿QUÉ DEBO HACER PARA QUE PHP RECONOZCA A FIREBIRD? Después de instalar PHP (con XAMPP o de alguna otra manera). Para poder utilizarla.extension=php_interbase. Cantidad. Buscamos el archivo PHP. Buscamos la línea que dice: . Nombre y Teléfono son de tipo Varchar. con el programa GSEC deberás crear un usuario llamado “Walter” (sin las comillas) y con password “123456” (sin comillas) ADMIN. Identificador de Producto. Grabamos el archivo PHP. Nombre. Teléfono) • PRODUCTOS (Identificador. Las columnas Identificador son las claves primarias de cada tabla. por ejemplo) 3. Nombre. Lo abrimos para editarlo (con doble click.dll 4. eso se hace de la siguiente manera: 1. Precio) Los Identificadores son todos numéricos y autoincrementales.INI (si usamos el XAMPP lo encontraremos en la carpeta C:\XAMPP\PHP\) 2. por lo tanto debemos obligarle a que lo reconozca. Fecha es de tipo Date. él todavía no reconoce al Firebird.42 - . Fecha. Detenemos el Apache y lo reiniciamos (si estamos usando XAMPP podemos hacerlo con el programa XAMPP-CONTROL. Le quitamos el punto y coma del inicio (el punto y coma indica que lo que viene a continuación es un comentario) 5.FDB y que encontrarás en el mismo archivo .

php"> Nombre del Cliente: <input type = "text" name = "cNombreCliente"> <br> Número/s de teléfono: <input type = "text" name = "cTelefono"> <br><br> <input type = "submit" value = "Aceptar"> </form> </body> </html> insertarclientes. CLI_TELEFO) VALUES ('" . <html> <head> <title>Agregar clientes</title> </head> <body> <h1>Agregar nuevos clientes</h1> <form method = "post" action = "prueba28. $cNombre . "'). '" .php Este programita guardará en la tabla CLIENTES los valores que les hayamos asignado a las columnas CLI_NOMBRE y CLI_TELEFO. '123456'). $cTelefo = $_REQUEST['cTelefono'].". echo "Se agregó a $cNombre a la tabla de CLIENTES". a la tabla CLIENTES). "'. 'WALTER'.html <html> <head> <title>Aquí se agregan los nuevos clientes</title> </head> <body> <?php $nHandleDB = ibase_pconnect('C:\xampp\htdocs\pruebas\admin. no deberemos preocuparnos por eso.43 - . $nTransaccion = ibase_trans("IBASE_WRITE". Recuerda que CLI_IDENTI es autoincremental por lo tanto será el propio Firebird quien le asignará un número. ibase_close($nHandleDB). $nHandleDB). $cFila = "INSERT INTO CLIENTES (CLI_NOMBRE. $nResultado = ibase_query($nTransaccion.INSERTAR FILAS EN UNA TABLA Ahora vamos a crear un programa que nos permitirá insertar nuevas filas a una tabla (en este ejemplo. $cFila). . $cTelefo . $cNombre = $_REQUEST['cNombreCliente']. ?> </body> </html> prueba28.fdb'. ibase_commit($nTransaccion).

Eso es necesario hacer u obtendremos un mensaje de error del PHP. . Las transacciones solamente pueden terminar de dos maneras posibles: o mediante un COMMIT o mediante un ROLLBACK. Recibe dos parámetros: El identificador de la transacción que deseamos utilizar y el comando que deseamos ejecutar.44 - . ambas son muy similares pero la primera establece una conexión persistente o sea que no se cierra cuando finaliza la ejecución del comando. también se podría usar la función ibase_connect(). Por ejemplo fíjate aquí: VALUES ('" Allí tenemos una comilla simple y luego una comilla doble. En este caso lo guardamos en la variable llamada $nHandleDB. El valor devuelto por la función ibase_pconnect() debe ser guardado en una variable porque necesitaremos usarlo más adelante. 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. 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 traumática para los usuarios). La función ibase_query() es la que nos permite ejecutar los comandos del Firebird. la función ibase_close() finaliza la conexión con la Base de Datos. a la cual debemos enviarle dos parámetros: el tipo de transacción y el valor que nos había retornado la función ibase_pconnect(). La función ibase_commit() recibe como parámetro el número de la transacción y trata de grabarla en la Base de Datos. Finalmente.Se usa la función ibase_pconnect() para conectarse a la Base de Datos. A continuación se abre una transacción con la función ibase_trans().

que no se usa un solo handle como en la mayoría de los lenguajes de programación. '---' . ibase_close($nHandleDB). $cConsulta) or exit(ibase_errmsg()). sino un handle para la Base de Datos y otro para guardar el resultado de la ejecución del comando.net/manual/es/ref.ibase. $cConsulta = "SELECT * FROM CLIENTES". '123456'). while ($cFila = ibase_fetch_object($nResultado)) { echo $cFila->CLI_IDENTI .45 - .En este enlace encontrarás el nombre y la descripción de todas las funciones ibase_ que puedes utilizar: http://www.php. $cFila->CLI_NOMBRE . } ibase_free_result($nResultado). . ?> </body> </html> prueba29. <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. echo "<br>".fdb'. '---' . $cFila->CLI_TELEFO.php Aquí hay varias cosas que resaltar: Primero.php Son muchas. 'WALTER'. que nos devuelve la función ibase_query(). $nResultado = ibase_query($nHandleDB. pero las que más frecuentemente necesitarás 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.

que para obtener todas las filas se debe utilizar un ciclo while y la función ibase_fetch_object() la cual extrae los datos de la tabla y los devuelve para que puedan ser guardados en una variable.html En esta página web le pedimos al usuario que ingrese el Identificador de un cliente. le pediremos al usuario que ingrese el identificador de un Cliente y le mostraremos los datos de ese cliente o un mensaje avisándole que no existe ningún cliente con ese identificador. la cual recibe como parámetro el resultado de la ejecución de la función ibase_query().Segundo. que después de haber usado el resultado obtenido debemos liberarlo de la memoria con la función ibase_free_result(). . Quinto y último. En nuestro ejemplo. Cuarto. pero en este caso solamente devolveremos aquellas filas que cumplan con la condición indicada. Tercero. <html> <head> <title>Consultar clientes</title> </head> <body> <h1>Consultar datos de los clientes</h1> <form method = "post" action = "prueba30. que para referirnos a las columnas extraídas debemos usar el nombre de la variable (en este caso: $cFila) y a continuación el símbolo -> y luego el nombre de la columna que nos interesa.php"> Escribe el Identificador del Cliente: <input type = "text" name = "nIDCliente"> <br><br> <input type = "submit" value = "Aceptar"> </form> </body> </html> consultarclientes.46 - . CONSULTAR DATOS El programa de consulta es muy similar al anterior de listado. que cuando ya no necesitamos estar conectados a la Base de Datos debemos cerrar la conexión con la función ibase_close().

$nResultado = ibase_query($nHandleDB. mostramos los datos del cliente buscado.fdb'. ibase_close($nHandleDB). $cConsulta) or exit(ibase_errmsg()).php Y aquí realizamos la búsqueda. '123456'). $cFila->CLI_TELEFO. '---' . ?> </body> </html> prueba30. echo "<br>". en caso contrario mostramos un mensaje de error. . '---' .<html> <head> <title>Consultar Clientes</title> </head> <body> <?php $nHandleDB = ibase_pconnect('C:\xampp\htdocs\pruebas\admin. $_REQUEST['nIDCliente']. echo $cFila->CLI_IDENTI . if ($nResultado > 0) { $cFila = ibase_fetch_object($nResultado) or exit("No existe ningún cliente con ese Identificador"). $cFila->CLI_NOMBRE . } ibase_free_result($nResultado).47 - . $cConsulta = "SELECT * FROM CLIENTES WHERE CLI_IDENTI = " . 'WALTER'. Si tuvo éxito.

el cual nos permitirá: 1. 2. Pantalla Nº 6 Para poder continuar el nombre debe ser Walter y la contraseña 123456 <html> <head> <title>Sistema de Ingreso de datos por Internet</title> </head> <body> <h1>Ventas por Internet</h1> Este es un pequeño Sistema para registrar en una Base de Datos <br><br> <form method = "post" action = "ValidarUsuario.html .php"> Ingresa tu nombre: <input type = "text" name = "cNombreUsuario"> <br> Y tu contraseña: <input type = "password" name = "cContrasena"> <br><br> <input type = "submit" value = "Aceptar" name = "cEnviar"> </form> </body> </html> sistemita. Pedir el nombre y la contraseña 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.SISTEMA DE INGRESO DE DATOS POR INTERNET Ahora crearemos un pequeño sistemita.48 - .html después de lo cual veremos la siguiente pantalla. 3. 4.

sale del programa con un mensaje de error.INI. se obtiene el Nombre y la Contraseña que escribió el usuario. si no son usadas son liberadas de la memoria. Al escribir $_SESSION[‘cNomUsu’] le estamos diciendo que queremos que el valor de la variable ‘cNomUsu’ se guarde durante los siguientes 20 minutos. Quinto. $nHandlB = ibase_pconnect('C:\xampp\htdocs\pruebas\admin.html'). $_SESSION['cPasswo'] = $_REQUEST['cContrasena']. ¿Qué es eso? En PHP cuando se inicia una sesión se pueden almacenar variables que serán usadas en otros programas . $_SESSION['cNomUsu'] = $_REQUEST['cNombreUsuario']. entonces podremos volver a usarla durante ese tiempo.php. $_SESSION['cNomUsu']. $_SESSION['cPasswo']) or exit("Datos del usuario incorrectos"). Por defecto las variables duran 20 minutos. si se pudo conectar se dirige hacia otro programa.php ¿Qué es lo que hace? Primero.49 - .fdb'. Segundo.html Para poder redirigirnos hacia otra página web u otro programa . header('Location: http://localhost/pruebas/menuprincipal. Cuarto. llamado menuprincipal. inicia una sesión. ?>validarusuario.php debemos: • Usar la función header() • Escribir: Location: • Dejar un espacio en blanco después de los dos puntos • Escribir http:// • Escribir la dirección donde se encuentra la página o el programa hacia el cual deseamos redirigirnos . Tercero. aunque ese tiempo es configurable en el archivo PHP.El programita que valida que el Nombre y la Contraseña del usuario sean correctos es muy corto: <?php session_start(). si no se pudo conectar. con esos datos trata de conectarse a la Base de Datos.

html Pantalla Nº 7 . Agregar productos <br> 3.<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.50 - . Agregar clientes <br> 2. Listar los clientes <br> 4. Listar los productos <br> </h3> ¿Cuál es tu opción? <input type = "text" name = "nOpcionElegida"> <br><br> <input type = "submit" value = "Aceptar" name = "OK"> </form> </body> </html> menuprincipal.

Debes pasarle como parámetro el número que te devolvió la función ibase_query().fdb Correcto Incorrecto Warning: ibase_fetch_object(): supplied resource is not a valid Firebird/InterBase result resource El parámetro de la function ibase_fetch_object() es inválido. null given in El parámetro de la function ibase_fetch_object() es inválido.fdb localhost\pruebas\admin. . Debes pasarle como parámetro el número que te devolvió la función ibase_query().dll. Warning: ibase_pconnect() [function. También verifica que el nombre de la extensión sea exactamente ese.ini y de haber reiniciado el Apache.51 - . Warning: ibase_free_result() expects parameter 1 to be resource. La carpeta debe tener el nombre que le asigna el Windows.¿QUÉ SIGNIFICAN ESTOS ERRORES? Fatal error: Call to undefined function ibase_connect() No se está usando la extensión php_interbase. Por ejemplo: C:\xampp\htdocs\pruebas\admin. no debes usar localhost en ella. de haber grabado el archivo php. asegúrate de haberle quitado el punto y coma del principio.ibase-pconnect]: during "CreateFile (open)" operation for file I/O error No existe una Base de Datos con ese nombre en esa carpeta.