Вы находитесь на странице: 1из 61

Implantacin de PHP Aplicaciones Web

IES GALILEO Martn Del Cerro Quintana

Apuntes del BLOQUE A: (63 horas) del currculo correspondiente al ttulo de Tcnico Superior en Administracin de Sistemas Informticos en Red en la Comunidad de Castilla y Len.
Pgina 1

PHP
ndice

1. Introduccin a PHP 2. Instalar PHP 3. Primeros pasos 4. Variables 5. Formularios 6. Operadores 7. Programacin estructurada 7.1 Estructura secuencial 7.2 Estructura condicional 7.3 Estructura repetitiva 8. Cadenas 9. Arrays 10. Funciones 11. Funciones de fecha y hora 12. Ficheros 13. Bases de datos 14. Programacin orientada a objetos

Pgina 2

PHP
1. Introduccin a PHP
Qu es PHP?
PHP es un lenguaje de cdigo abierto muy popular especialmente adecuado para desarrollo web y que puede ser incrustado en HTML. El cdigo PHP est entre medio de etiquetas de comienzo y final especiales: <?php ?> que nos permitirn entrar y salir del "modo PHP". Lo que distingue a PHP de algo lado-cliente como Javascript, es que el cdigo es ejecutado en el servidor, generando HTML y envindolo al cliente. El cliente recibir los resultados de ejecutar el script, sin ninguna posibilidad de determinar qu cdigo ha producido el resultado recibido.

Pginas web dinmicas


PHP es un lenguaje de programacin utilizado para la creacin de pginas dinmicas. Las pginas web dinmicas son las pginas web que se crean en el momento en que el usuario accede a ellas.

Otros lenguajes similares a PHP


ASP
Es un lenguaje del lado de servidor desarrollado por Microsoft con una funcionalidad similar a PHP pero una sintaxis muy diferente. Este lenguaje genera pginas dinmicas y es ejecutado en el servidor en vez de en el navegador (cliente).

JSP
Java Server Pages (JSP) es la tecnologa para generar pginas web de forma dinmica en el servidor, desarrollado por Sun Microsystems, basado en scripts que utilizan una variante del lenguaje java.

2. Instalar PHP
Existe una manera de comenzar a utilizar PHP5 en Windows sin tener que sufrir las complicaciones tpicas de la instalacin de los servidores necesarios para programar en PHP. Se trata de instalar un paquete llamado WAMP, que permite instalar y configurar en un solo proceso el servidor Apache, la base de datos MySQL y el mdulo de programacin en PHP versin 5.

Pgina 3

PHP
Programas que contiene WAMP El software que se instala con WAMP5 contiene los siguientes servidores y programas: Apache. El servidor de pginas web ms extendido del mercado. PHP. El motor renovado del lenguaje. MySQL. La base de datos ms extendida para utilizar con PHP. PHPmyadmin. Un software que permite administrar una base de datos a travs de una interfaz web. SQLitemanager. Un sistema para administrar una base de datos a partir de sentencias SQL.

Instalacin de WAMP La instalacin se realiza a travs de un ejecutable Windows donde se pueden introducir muy pocas configuraciones, apenas el directorio donde deseamos que se instalen los programas. Despus del proceso de instalacin se habrn creado un par de servicios con el servidor web y el de bases de datos: Servicio wampapache: Relacionado con el servidor Apache. Servicio wampmysql: Relacionado con la base de datos MySQL.

Adems, dentro del directorio donde hayamos instalado WAMP se habr creado una carpeta llamada "www", que corresponde con el directorio de publicacin, es decir, el lugar donde se deben colocar las pginas web. Durante la instalacin tambin debemos decidir si deseamos que WAMP se inicie automticamente al arrancar el equipo o si deseamos que su puesta en marcha se realice manualmente. Puesta en marcha de los servidores Cuando instalamos WAMP se crea un grupo de programas llamado WampServer, donde podremos encontrar una opcin que pone "Start Wampserver", que ser necesario ejecutar si no hemos seleccionado que el servidor se inicie automticamente. Una vez arrancado WampServer dispondremos de un icono en la barra de tareas con una forma similar a la de un marcador de velocidad. Si pulsamos sobre ese icono se abrir un men con opciones variadas para gestionar los servicios relacionados con el paquete. La imagen siguiente muestra ese men.

Podemos probar si los servicios estn corriendo perfectamente accediendo a la pgina de inicio del servidor, escribiendo en la barra de direcciones de nuestro navegador algo como http://localhost/. Entonces nos debera de aparecer una pgina con varios enlaces a las distintas herramientas instaladas con WAMP, adems de algunas pginas de prueba de PHP.

3. Primeros pasos
Instalar Notepad++
Editor libre de texto y de cdigo fuente que soporta adems de PHP muchos otros lenguajes de programacin. Lo utilizaremos para escribir los script en PHP. Se ejecuta bajo Windows, y su uso est regulado bajo la licencia GPL.

Nuestro primer script: ejer001.php

Pgina 4

PHP
Una vez instalado Wamp, accede desde Windows a la carpeta C:\wamp\www y crea dentro una carpeta llamada php que ser donde guardemos todos nuestros scripts. Escribe el siguiente cdigo con el Notepad++ y gurdalo en un archivo llamado ejer001.php en la carpeta anterior C:\wamp\www\php
<html> <head> <title>Prueba de PHP</title> </head> <body> <?php echo"<h2>Hola mundo!</h2>"; ?> </body> </html>

El servidor leer el fichero y todo lo que est fuera de esas etiquetas lo interpreta como cdigo HTML y por tanto no har ninguna modificacin. Cuando llegue a la etiqueta <?php, sabr que empieza el cdigo PHP y se lo entregar al intrprete PHP para que ejecute todas las ordenes hasta la etiqueta ?> y genere el cdigo HTML para completar la pgina y enviarla al cliente. En este caso la orden es echo que lo que hace es mostrar una o ms cadenas.

echo()
Imprime el contenido de una cadena esttica y/o variables en el navegador. Esta funcin es muy fcil de utilizar, inclusive los parntesis no son necesarios. Su estructura es la siguiente:
<?php $saludo = "Hola"; echo ("<h2>$saludo mundo!</h2>"); //se imprime Hola mundo! echo "<h2>$saludo mundo!</h2>"; ?>

1. 2. 3.

Las lneas de PHP acaban en ; Las etiquetas <?php y ?> no acaban en punto y coma Podamos haber utilizado la funcin print en lugar de echo y el resultado hubiese sido el mismo

La llamada al script se realizar desde el cliente (navegador web), a travs de una URL como por ejemplo http://localhost/php/ejer001.php Observa en el navegador el cdigo fuente de la pgina, vers que el cliente (navegador) slo recibe cdigo HTML.

ejer002.php
Consiste en un script que muestra la fecha y hora del servidor. El objetivo de este ejercicio es ver con ms claridad cmo trabaja PHP: ejecutndose el script en el servidor y generando pginas dinmicas. Por tanto no te preocupes si no entiendes las funciones que utilizamos, ya las explicaremos ms adelante, repito lo importante es que entiendas lo que hace y cmo lo hace.
<html> <head> <title>Prueba de PHP</title> </head> <body> <?php date_default_timezone_set('Europe/Madrid'); echo "<p>Hoy es "; echo date("d-m-Y H:i:s")."<p>"; ?> </body> </html>

Pgina 5

PHP
date_default_timezone_set('Europe/Madrid'); Establece la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script date("d-m-Y H:i:s") Dar formato a la fecha y hora local. La cadena entre comillas indica cmo ser devuelta la fecha y hora local. d m Y H i s Da del mes, 2 dgitos con ceros iniciales Representacin numrica de una mes, con ceros iniciales Una representacin numrica completa de un ao, 4 dgitos Formato de 24 horas de una hora con ceros iniciales Minutos, con ceros iniciales Segundos, con ceros iniciales 01 a 31 01 hasta 12 Ejemplos: 1999 o 2003 00 hasta 23 00 hasta 59 00 hasta 59

print()
Imprime el contenido de una cadena esttica y/o variables en el navegador. Esta funcin es muy fcil de utilizar, inclusive los parntesis no son necesarios. Su estructura es la siguiente:
<?php $saludo = "Hola"; print ("<h2>$saludo mundo!</h2>"); //se imprime Hola mundo! print "<h2>$saludo mundo!</h2>"; ?> Diferencias entre print() y echo():

print() puede comportarse como una funcin, puesto que devuelve el valor 1, por lo que es posible que una instruccin print() se encuentre participando en expresiones complejas, donde echo() generara un error. echo() acepta mltiples argumentos. print() es ms lenta por devolver el valor TRUE.

ejer003.php
<?php print("<a href=\"http://www.iesgalileo.org\">IES Galileo</a><br />\n"); print"\t<span style=\"font-weight:bold\";>Hola mundo</span>"; ?>
Observa los caracteres en rojo: \, \n y \t Las etiquetas HTML que requieren comillas pueden causar problemas cuando se manejan desde PHP, ya que la funcin print() utiliza tambin comillas. La solucin a este problema es utilizar el carcter \ para que el intrprete PHP sepa que esas comillas no son el final de la cadena. \n es un salto de lnea \t es un tabulador.

Pgina 6

PHP
Comentarios en PHP
/ /comentario de una lnea # comentario de una lnea /* Este comentario lo puedes utilizar para comentarios extensos que ocupen varias lneas. */

<? echo 'Esto se ve'; // esto no se ve echo 'esto tambin se ve'; /* esto tampoco se ve */ ?>

<? # esto no se ve echo 'pero esto si'; ?>

Tendremos cuidado con no poner un comentario multilnea en el interior del otro: <? /* /* No hacer nunca esto */ */ ?> Como veis, PHP interpreta como comentario desde el primer /* al primer */ sin tener en cuenta que hay otro */, esto nos producir un error as que habr que tener cuidado.

4. Variables
Una variable es un fragmento de memoria a la que le ponemos un nombre y de esta forma podemos usarla para realizar nuestro programas.

Las variables son espacios reservados en la memoria que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecucin de un programa. Podemos imaginarnos una variable como una caja con un nombre que la identifica y que puede contener un dato de un determinado tipo (nmeros enteros, nmeros racionales, cadenas, ). Cuando metemos un valor a la variable se dice que le estamos asignando un valor. Cuando esto ocurre, el nuevo valor sustituye al anterior.

En PHP no es necesario ni declarar la variable antes de usarla ni tampoco especificar el tipo de dato que va a utilizar, por ejemplo: $edad=12; //Ser una variable numrica $cadena="Hola mundo"; //Ser una cadena de caracteres

Pgina 7

PHP
Normas para los nombres de variables en PHP
1. 2. 3. 4. 5. 6. Toda variable debe empezar por $ El $ debe estar seguido por una letra o un guin bajo_, nunca por un nmero No se pueden usar espacios en el nombre de la variables No podemos usar ,, . ni otros smbolos, tan slo _ o - PHP es sensible a las maysculas por tanto $Num, $NUM y $num son variables diferentes. Conviene utilizar nombres descriptivo para facilitar la programacin y modificacin del script.

Variables predefinidas
PHP proporciona una gran cantidad de variables predefinidas para todos los scripts. Estas variables se generan automticamente y contienen diversa informacin sobre el cliente y el servidor. Vamos a ver una de estas variables que es $_SERVER es un array que contiene informacin, tales como cabeceras, rutas y localizaciones del cdigo. Las entradas en este array son creadas por el servidor web. No existe garanta que cada servidor web proporcione todas estas entradas, ya que existen servidores que pueden omitir algunas o proporcionar otras que no se encuentran recogidas aqu.

Tipos de variables segn su contenido


Dependiendo de la informacin que contenga, tenemos diversos tipos de variables: integer contiene un nmero entero double contiene un nmero con decimales string una cadena de caracteres

ejer004.php
<body> <pre> <?php /* Las variables son contenedores de datos * que se identifican con un nombre. */ $a=5;//variable numrica print("El contenido de la variable a = $a<br />"); print_r($_SERVER);//variable predefinida ?> </pre> </body>

<pre> </pre> (PREformated) que nos permite formatear cualquier texto que se encuentre dentro de ella. print_r() nos devuelve de forma legible informacin acerca de una variable o array.

ejer005.php
Obtener el Tipo de una Variable ? Con la funcion gettype() podemos obtener el tipo de una Variable
<?php $a=12; // Entero $b=32.23; // Double = Float $c="5223"; // String echo '$a es '.gettype($a).' <br> '; echo '$b es '.gettype($b).' <br> '; echo '$c es '.gettype($c).' <br> '; ?>

Pgina 8

PHP
Observa que echo muestra: literalmente el contenido (no el contenido de la variable) con la cadena '$a es ' por estar entre comillas

simples. el punto concatena (unir) dos cadenas para formar una nueva.

Matrices (Arrays)
Este tema ser una pequea introduccin a las matrices y ms adelante, por su importancia, las veremos con ms profundidad.

En la realizacin de un script en PHP en mltiples ocasiones existen variables que tienen informacin similar y se procesan de forma semejante. Para ello PHP (y otros lenguajes) poseen un elemento denominado array. Un array es un conjunto de variables agrupadas bajo un nico nombre. Cada variable dentro de la matriz se denomina elemento. Dentro de la misma matriz pueden existir variables de diferentes tipos y no es necesario que sean todas del mismo tipo. Por ejemplo:
$sentido[1]="vista"; $sentido[2]="tacto"; $sentido[3]=odo"; $sentido[4]="gusto"; $sentido[5]="olfato";

vista

tacto

odo

gusto

olfato

$sentido[1]

$sentido[2]

$sentido[3]

$sentido[4]

$sentido[5]

ejer006.php

<body> <pre> <?php $sentidos[1]="vista"; $sentidos[2]="tacto"; $sentidos[3]="odo"; $sentidos[4]="gusto"; $sentidos[5]="olfato"; print_r($sentidos); ?> </pre> </body>

ejer007.php
Dado el siguiente script PHP incompleto: <?php $direccion="Villabaez, s/n";//variable tipo cadena $ciudad="Valladolid";//variable de cadena $codPostal=47012;//variable numrica $telefono[1]=983205640; $telefono[2]=983205641; ?>

Pgina 9

PHP
Completarlo para que la salida sea similar a la siguiente:

ejer008.php

Diferencia entre comillas dobles y simples


<?php /* Si quiere mostrar el valor de una variable dentro de un contexto * puede utilizar la funcin print colocando el nombre de la variable * en la cadena siempre y cuando utilice comillas dobles. */ $num1=12; $num2=8; $suma=$num1+$num2; print("<p>$num1 + $num2 = $suma </p>"); /* Si en lugar de comillas dobles se utiliza comillas simples, el * contenido se muestra literalmente, es decir, sin cambiar los * nombres de las variables por su contenido. */ print('<p>$num1 + $num2 = $suma</p>'); print('<p>Dentro de las comillas simples se puede introducir "comillas dobles"</p>'); print("<p style=\"color:red;\"> este texto est entre comillas dobles</p>"); ?>

5. Formularios
Vamos a dar un repaso a los formularios bsicos HTML y veremos la interaccin con PHP. Un formulario bsico en HTML se compone de la etiqueta <form> con un conjunto de parmetros (de los cuales veremos los bsicos) y el conjunto de campos que se enva con el formulario. Lo ms bsico para definir un formulario sera, por ejemplo: <form name='mi_formulario' action='procesar.php' method='post'> ........ </form> action: indica la pgina de destino a la que se deben mandar los datos del formulario. Como vemos en el ejemplo, los datos se mandaran a la pgina procesar.php

method: indica cmo se deben pasar los parmetros: post: se mandan como variables ocultas (basta saber esto para lo que queremos conseguir en este cursillo).

Pgina 10

PHP
get: las variables se mandan dentro de la URL de destino (son visibles). Por ejemplo si pasamos una variable que sea el DNI de la persona y el formulario usa method=get veramos en la barra de navegador una URL similar a: http://miservidor/pagina.php?dni=112335965 Sin embargo, con post veramos solamente http://miservidor/pagina.php y el acceso a la variable DNI vendra embebido en el formulario. Visto as, parece que siempre debiramos usar post en vez de get, verdad? El usuario no tiene por qu ver qu variables manejamos. Esto ser cierto la mayora de los casos, pero habr ocasiones en las que no nos quede ms remedio que usar get. La experiencia te ir diciendo cundo usar uno u otro mtodo.

formulario1.html y ejer009.php
Hacer un formulario que pida el nombre y el correo electrnico y enve dicha informacin utilizando el mtodo post a un script PHP la muestre en la pantalla del navegador. formulario1.html ejer009.php

formulario2.html y ejer010.php
Hacer un formulario que pida el nmero de kilmetros y un script PHP que con la informacin suministrada por el formulario convierta los Kilmetros en Millas y muestre el resultado en la pantalla del navegador. Utilizar el mtodo get para enviar la informacin del formulario. formulario2.html ejer010.php

Observa la barra de direcciones del navegador: Como puedes observar, a la pgina que recibe los datos se le enva una serie de pares nombre=valor (en nuestro caso km=100 y boton=Convertir) separados por un ampersand (&). La secuencia completa est precedida por un signo de interrogacin (inmediatamente despus del nombre del script).

Enviar datos a una pgina manualmente


Si en la barra de direcciones anterior cambias 100 por 200 y refrescas la pgina el navegador te mostrar:

Pgina 11

PHP
Por tanto, podemos transferir los datos de esta forma creando un formulario HTML que utilice el mtodo get. Pero tambin podemos utilizar esta misma idea para enviar datos a una pgina PHP sin utilizar el formulario. Normalmente podra realizarlo utilizando vnculos a otra pgina:

ejer011.html
<html> <head> <title>Pasar Kilomentros a Millas</title> </head> <body> <a href="Ejer010.php?km=300">Cuantas millas son 300 Km?</a> </body> </html>

Ejer012.html y ejer012.php
Hacer un archivo html que muestre una lista desordenada con tres nombres que enlacen a ejer012.php que mostrar en pantalla un saludo personalizado. ejer012.html ejer012.php Hola, Paco! Hola, Pepe!

Hola, Mara!

6. Operadores
Los operadores son componente esencial de cualquier lenguaje de programacin. Con ellos podemos asignar, unir, cambiar o comparar valores de datos, cambiar el flujo del programa, etc. Los operadores son smbolos que representan operaciones sobre un valor.

Operador de asignacin
El smbolo = permite asignar valores a variables:
<?php $ciudad = "madrid"; $mi_numero = 123; $var1 = var2 = 0; ?>

Operadores aritmticos
Los simbolos + - / * permiten realizar las operaciones de suma, resta, divisin y multiplicacin. El smbolo % permite hallar el resto de una divisin.

Operadores de incremento - decremento


Los smbolos ++ y -- aplicados a una variable, permiten incrementar o decrecer su valor. Su efecto es distinto segun se empleen precediendo o siguiendo el nombre de la variable:

Pgina 12

PHP
++$a Incrementa $a en uno y despus devuelve $a. $a++ Devuelve $a y despus incrementa $a en uno. --$a Decrece el valor de $a en uno y despus devuelve $a. $a-- Devuelve $a y despus decrece su valor en uno.

ejer013.html y ejer013.php
Realiza el siguiente formulario HTML (ejer013.html): Condiciones para la solucin: Utilizar una tabla Tipo de IVA o General 18% o Reducido 8% o Superreducido4% Mtodo de transporte o Ordinario 5 o Urgente 10

Realizar un formulario ejer013.php que maneje el formulario anterior y que proporcione la siguiente salida al cliente:

ejer014.html y ejer014.php
ejer014.html es igual que ejer013.html, slo tienes que cambiar el manejador del formulario ejer014.php a partir de los datos suministrados por el formulario de ejer014.html mostrar al cliente la siguiente informacin:

Pgina 13

PHP
Redondear nmeros
round(float num [, precisin]) Es una funcin matemticas de PHP que nos permite redondear un float (nmero en coma flotante o nmero con decimales) al valor entero ms prximo. round(0.6) devolvera el valor entero 1. round(7.3) devolvera el valor entero 7. Pero en muchas ocasiones vamos a necesitar redondear un nmero en coma flotante de manera que conservemos algunos decimales. Por ejemplo, si estamos haciendo operaciones con euros o dlares, lo lgico es que conservemos dos decimales en el redondeo. En este caso aadiremos un segundo argumento que representa al nmero de decimales al que redondea el nmero. round(4.289, 2) devolver 4.29 floor(float num) Redondea el valor de num al entero ms prximo por debajo.
<?php echo floor(4.3); // 4 echo floor(9.999); // 9 echo floor(-3.14); // -4 ?>

ceil(float num) Redondea el valor de num al entero ms prximo por encima.


<?php echo ceil(4.3); // 5 echo ceil(9.999); // 10 echo ceil(-3.14); // -3 ?>

Ejercicio:
En el ejercicio anterior redondear con dos decimales el total pedido y el importe de cada pago.

Dar formato a los nmeros


number_format(num, nd, separador_decimales, separador_miles) num es el nmero al que se quiere dar formato nd es opcional y representa el nmero de decimales al que se quiere redondear separador_decimales es opcional, si no se pone nada el separador de decimales es el punto. separador_miles es opcional, si no se pone nada el separador de miles es la coma. number_format(258.849) devolvera el valor 259 number_format(258.849, 2) devolvera el valor 258.85 number_format(258, 2) devolvera el valor 258.00 number_format(12345678.1733, 2) devolvera el valor 12,345,678.17 number_format(12345678.1733, 2, ,, .) devolvera el valor 12.345.678,17

Pgina 14

PHP
Ejercicio:
En el ejercicio anterior dar formato con dos decimales y separador de miles a el total pedido y al importe de cada pago.

Operador de concatenacin
Usando el smbolo del . podemos unir valores:
<?php $nombre = "jorge"; $apellido = "prez"; $id = $nombre." ".$apellido; // suma los dos valores mas un espacio ?> El operador .= asigna un dato al valor anterior: <?php echo "uno, dos, tres" . ", cuatro, cinco, seis"; // imprime "uno, dos, tres, cuatro, cinco, seis" $id = "jorge"; $id .=" perez"; // $id es ahora jorge perez ?>

Operadores de comparacin
Operador == (igual) != o tambin <> (no igual) === (idntico) !== (no idntico) < (menor que) > (mayor que) <= (menor o igual que) >= (mayor o igual que) Ejemplo $x == $y $x != $y $x === $y $x !== $y $x < $y $x > $y $x <= $y $x >= $y Resultado true si $x es igual a $y; false de lo contrario. true si $x no es igual a $y; false de lo contrario. true si $x es igual a $y y son del mismo tipo; false de lo contrario. true si $x es igual a $y y no son del mismo tipo; false de lo contrario. true si $x es menor que $y; false de lo contrario. true si $x es mayor que $y; false de lo contrario. true si $x es menor o igual que $y; false de lo contrario. true si $x es mayor o igual que $y; false de lo contrario.

Operadores lgicos
&&, and ||, or ! Operador and (y) Operador or (o) Operador not (no) $x true true false false $y true false true false $x && $y $x and $y true false false false $x true true false false $y true false true false $x || $y $x or $y true true true false

Pgina 15

PHP

Constantes
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] ) Para definir una constante con nombre.

Prioridad de los operadores


++ -! */% +-. < <= > >= <> == != === !== && || = += -= *= /= .= %= &= |= ^= <<= >>= => and or

Expresiones
Una expresin en PHP es una combinacin de constantes, variables o funciones, que es interpretada (evaluada) de acuerdo a las normas particulares de precedencia del lenguaje. Por ejemplo: 10+$x/5 Toda expresin da lugar a un valor que podr ser numrico, alfanumrico o lgico. Ejercicio: Escribe una expresin que sea true cuando el valor numrico real que contiene la variable $nota sea un notable (consideraremos que son notable todas las notas que se encuentran en el intervalo [7.0, 8.99])

7. Programacin estructurada
El teorema del programa estructurado, demuestra que todo programa puede escribirse utilizando nicamente las tres estructuras de control siguientes: Secuencial, Condicional, Repetitiva.

Pgina 16

PHP
7.1 Estructura secuencial
La estructura secuencial es aquella en la que una instruccin sigue a otra en secuencia. Todos los scripts que hemos hecho hasta ahora tienen esta nica estructura.

ejer015.html y ejer015.php
Hacer un programa que calcule el rea y el volumen de un cilindro. Condiciones para la solucin: La altura (h) y el radio (r) sern introducidos por teclado El valor de PI ser una constante simblica de valor 3.141592 ejer015.html

ejer015.php

Texto de la pagina:
Un cilindro circular recto es aquel cuerpo o slido geomtrico generado por el giro de una regin rectangular en torno a uno de sus lados o tambin en torno a uno de sus ejes de simetra. rea total: Superficie completa de la figura, es decir, el rea lateral ms el rea de las bases de la figura. Volumen del cilindro: Para un cilindro circular, su volumen (V) es igual al producto del rea del crculo basal por su altura (h).

Pgina 17

PHP
Imagen de la pgina: cilindro.png

En el ejercicio anterior (15) cuando el usuario pulsa el botn sin haber introducido nada, muestra los siguiente:

Modificarlo de tal forma que el mensaje mostrado sea este otro:

7.2 Estructura condicional (if)


Son aquellas que controlan la ejecucin o la no ejecucin de una o ms instrucciones en funcin de que se cumpla o no una condicin. Pueden ser: Simples
if(expresin){ //ejecutar este cdigo si se cumple la condicin }

Dobles
if(expresin){ //ejecutar este cdigo si se cumple la condicin }else{ //ejecutar este cdigo si no se cumple la condicin }

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

Pgina 18

PHP
Ejercicios de expresiones lgicas: Suponiendo que la variable $nota es de tipo real, construye una expresin que sea true (verdadera) para todas las notas validas (comprendidas entre 0.0 y 10.0)

Construir una expresin con la variable $nota que sea true (verdadera) cuando la nota no sea vlida.

Estructura condicional simple:


if(expresin lgica) { instruccin 1; }

ejer016.html y ejer016.php
Una empresa vende un nico artculo cuyo precio de venta unitario es 11,90 . Hacer un programa que lea la cantidad comprada y calcule lo que tiene que pagar el cliente, teniendo en cuenta que en ventas superiores a 10 unidades hay un descuento del 5%. Condiciones para la solucin: Utilizar un formulario para que el usuario teclee la cantidad de artculos que desea comprar Utilizar tipo de datos float y enteros Utilizar una estructura condicional simple Ejer016.html Ejer016.php

Estructura condicional doble:


if(expresin lgica) { instruccin 1; }else{ instruccin 2; }

Pgina 19

PHP
ejer017.html y ejer017.php
Para poder acceder a un puesto de Polica Nacional es necesario que los aspirantes midan al menos 1,70 m y que su edad est comprendida entre los 18 y 39 aos (ambos inclusive). Hacer un formulario que pida el ao de nacimiento y la altura en metros de una persona y un script de PHP que con esos datos diga si la persona es admitida o no como aspirante. Adems en caso de no ser admitida dir la causa por la que no ha sido admitida.
Ejer017.html Ejer017.php Ejer017.html Ejer017.php

Estructura elseif:
if(expresin lgica) { instruccin 1; } elseif (expresin lgica){ instruccin 2; } elseif (expresin lgica){ instruccin 3; } else (expresin lgica){ instruccin 4; }

ejer018.html y ejer018.php
Formulario que permita introducir 3 nmeros por teclado. Script de PHP que muestre los tres nmeros en orden creciente Ejer018.html Ejer018.php

Estructura condicional mltiple (switch):


switch es una alternativa quizs ms legible cuando necesitamos evaluar una variable frente a mltiples valores posibles.

Pgina 20

PHP
El uso de break; es necesario, ya que en la estructura switch una vez cumplida una condicin se ejecutan el resto de declaraciones (incluso las comprendidas en los casos que siguen). La orden break evita esto saltando fuera del switch y continuando la ejecucin del resto del script. Si en lugar de break usamos exit, el resto del script no se ejecutar.
switch ($op) { case "a": // cdigo que se ejecuta si $op vale "a" break; case "b": // cdigo que se ejecuta si $op vale "b" break; case "c": // cdigo que se ejecuta si $op vale "c" break; default: /* cdigo a ejecutar si no se cumple * ninguna condicin */ }

Funcion : is_numeric Permite saber si el contenido de una variable es un nmero o una cadena. En caso de que el valor de la variable a verificar sea un nmero, devolver un valor TRUE, en caso contrario, devolver FALSE. Ejemplo:
$valor = 1395; if (is_numeric($valor)) echo("Es un nmero"); else echo("Es una Cadena");

ejer019.html y ejer019.php
Un formulario pide al usuario que teclee nota (ser un nmero entero) y un script de PHP que dependiendo de la nota tecleada por el usuario: si la nota es 0, 1 2 visualizar "Muy deficiente si es 3 4 visualizar "Insuficiente" si es 5 "Suficiente" si es 6 "Bien" si es 7 u 8 "Notable" y si es 9 10 "Sobresaliente" en cualquier otro caso: si la nota no es un nmero entero visualizar Error, nota tiene que ser entero. si la nota es otro nmero entero visualizar "Error, nota no vlida". si la nota es un valor no numrico visualizar Error, no es un dato numrico.

Ejer019.html

Ejer019.php

7.3 Estructura repetitiva (bucles)


Pgina 21

PHP
La idea bsica de un bucle es ejecutar el mismo bloque de cdigo una y otra vez hasta que se cumpla una determinada condicin. Hay tres sentencias repetitivas: while do/while for

while
El bucle while ejecuta una instruccin (que puede ser un bloque) mientras sea cierta una determinada expresin lgica. El bucle while no llegar a ejecutarse si la expresin lgica es falsa desde el principio

while(expresin lgica) { bloque de instrucciones }

ejer020.php
Hacer un programa en PHP que escriba los nmeros del 1 al 100. Condicin para la solucin: Utilizar el bucle while.

Nmeros aleatorios
Un nmero aleatorio es aquel obtenido al azar, es decir, que todo nmero tenga la misma probabilidad de ser elegido y que la eleccin de uno no dependa de la eleccin del otro. El ejemplo clsico ms utilizado para generarlos es el lanzamiento repetitivo de una moneda o dado ideal no trucado.

Para que sirven los nmeros aleatorios?


Los nmeros aleatorios permiten a los modelos matemticos representar la realidad. En general cuando se requiere una impredecibilidad en unos determinados datos, se utilizan nmeros aleatorios. Por ejemplo si queremos simular con un programa el lanzamiento de una moneda o de un dado deberemos utilizar nmeros aleatorios.

Funciones PHP para generar nmeros aleatorios: rand Genera un nmero entero aleatorio int rand ( void ) int rand ( int $min , int $max )
Se si emplea sin los argumentos min y max, rand() devuelve un entero pseudo-aleatorio entre 0 y getrandmax(). Para obtener un nmero aleatorio, por ejemplo, entre 5 y 15 (incluidos), use rand(5,15). En algunas plataformas (como en Windows), getrandmax() slo alcanza hasta 32767. En caso de necesitar un valor mayor de 32767, se deber especificar min y max que permiten crear un valor mayor que 32767, o considere emplear mt_rand() en su lugar.

Pgina 22

PHP
mt_rand Genera un mejor nmero entero aleatorio
int mt_rand ( void ) int mt_rand ( int $min , int $max )

La funcin mt_rand() utiliza un generador de nmeros aleatorios que produce nmeros aleatorios cuatro veces ms rpido que el promedio de lo que proporciona la libc rand(). Se si emplea sin los argumentos min y max, mt_rand() devuelve un valor pseudo-aleatorio entre 0 y mt_getrandmax(). Para obtener un nmero aleatorio, por ejemplo, entre 5 y 15 (incluidos), use mt_rand(5,15).

Variable contador
Es una variable que utiliza el programa para contar las veces que ocurre un suceso en el programa (por ejemplo en un programa que lee notas podemos utilizar un contador para contar los aprobados). Generalmente el programa inicializar el contador a cero y cada vez que ocurra el suceso incrementar el valor del contador en uno. Por ejemplo:
$contador=0;//Inicializa el contador if($nota>=5) contador=contador+1;//Incrementa el contador. Es muy frecuente poner contador++ o tambin ++contador

ejer021.php
Hacer un programa en PHP que simule 10 lanzamientos de una moneda al aire. En cada lanzamiento el programa mostrara Cara o Cruz. Al final de los lanzamientos el programa mostrar en pantalla el nmero total de caras y de cruces.

do while
El bucle do/while es similar al bucle while con la excepcin de que la expresin lgica se evala al final del bucle. Primero realiza la accin y luego pregunta, si la expresin lgica es verdadera vuelve a dar un ciclo, de lo contrario termina. Esto nos garantiza que la accin se va a realizar al menos una vez.

do{ bloque de instrucciones } while(expresin lgica);

ejer022.php

Pgina 23

PHP

for
El bucle FOR se suele utilizar cuando sabemos el nmero de veces que queremos que se ejecute. La cabecera del bucle for consta de tres parmetros: for (inicializacin; terminacin; incremento) { bloque de instrucciones } for($con=0; $cont<100; $con++) { bloque de instrucciones }

Inicializacin: se realiza antes de entrar en el bucle. Normalmente se utiliza para inicializar una variable que ser el contador del bucle. Terminacin: expresin lgica que se evala al principio del bucle y que si es false el bucle se termina. Normalmente se utiliza para comprobar si el contador ha alcanzado el valor final. Incremento: es invocado al final del bucle. Normalmente se utiliza para incrementar o decrementar el valor del contador.

ejer023.php
Hacer un programa en PHP que escriba los 100 primeros mltiplos de 3 y al final la suma de todo ellos. Condicin para la solucin: Utilizar el bucle for.

ejer024.html, ejer024_1.php y ejer024_2.php


ejer024.html ejer024_1.php ejer024_2.php

Pgina 24

PHP

ejer025.html y ejer025.php
Hacer un formulario HTML que pida al usuario un nmero entero y un script PHP que calcule el factorial del nmero recibido del formulario. Para todo nmero natural n, se llama n factorial o factorial de n al producto de todos los naturales desde 1 hasta n:

Se define 0! = 1, para que la relacin n! = n (n 1)! sea tambin vlida para n = 1. Ejer025.html Ejer025.php

ejer026.html y ejer026.php
Escribe un programa en PHP que escriba todos los nmeros de un intervalo. Los dos nmeros enteros que sern los limites inferior y superior del intervalo se los proporcionar un formulario. Ejer026.html Ejer026.php

Pgina 25

PHP
8. Cadenas (String)
Una cadena o string es una secuencia de caracteres. La web est basada en datos de cadena (HTML, URL, ), esto significa que los lenguajes de programacin web como PHP estn particularmente orientados a trabajar con cadenas. Nota: No existe problema alguno para que un string sea muy grande. PHP no impone ningn lmite para el tamao de un string; el nico lmite es la memoria disponible en el ordenador donde se est ejecutando PHP. Un string literal puede ser especificado de cuatro formas diferentes: comillas simples comillas dobles sintaxis heredoc sintaxis nowdoc (desde PHP 5.3.0)

Comillas sencillas Las variables y las sentencias de escape para caracteres especiales no se expandirn cuando estn incluidas dentro de un string con comillas simples.
<?php echo 'Esto es una cadena sencilla'; echo 'Tambien puede incluir nuevas lneas en cadenas de esta forma ya que es correcto hacerlo as'; // Resultado: Arnold una vez dijo: "I'll be back" echo 'Arnold una vez dijo: "I\'ll be back"'; // Resultado: Ha borrado C:\*.*? echo 'Ha borrado C:\\*.*?'; // Resultado: Ha borrado C:\*.*? echo 'Ha borrado C:\*.*?'; // Resultado: Esto no se expandir: \n una nueva lnea echo 'Esto no se expandir: \n una nueva lnea'; // Resultado: Las variables $tampoco se $expandiran echo 'Las variables $tampoco se $expandiran'; ?>

Comillas dobles La caracterstica ms importante de entrecomillar un string mediante comillas dobles es el hecho que los nombres de las variables son expandidas. Si un string est encerrado entre comillas dobles ("), PHP interpretar ms sentencias de escape como caracteres especiales:
\n avance de lnea \r retorno de carro \t tabulador horizontal \v tabulador vertical \f avance de pgina \\ barra invertida \$ signo del dlar \" comillas dobles

Heredoc Una tercera forma de delimitar un string es mediante la sintaxis heredoc: <<<. Despus de este operador, se deber ofrecer un identificador y despus una nueva lnea. A continuacin va el propio string, y para cerrar la notacin se pone el mismo identificador. El identificador de cierre debe empezar en la primera columna de la nueva lnea. Asimismo, el identificador debe seguir las mismas reglas de nomenclatura de las etiquetas en PHP: debe contener solo caracteres alfanumricos y guiones bajos, y debe empezar con un caracter alfabtico o un guin bajo.

Pgina 26

PHP
<?php echo <<<EOT esta cadena se imprimir sin problemas, y podemos usar en ellas "comillas" sin necesidad de escape; Tambien interpreta (expande) las $variables Lo que es ideal para incluir grandes trozos de cdigo html. EOT; ?>

Nowdoc Nowdocs son a las cadenas con comillas simples lo mismo que Heredoc lo es a las comillas dobles. Una cadena nowdoc se especifica de forma anloga a la heredoc, pero no se realiza ningn anlisis dentro de nowdoc. Esta construccin es ideal para embeber cdigo PHP o grandes fragmentos de texto sin necesidad de escaparlo. Comparte algunas caractersticas comunes con la construccin SGML <![CDATA[ ]]>, donde se declara un fragmento de texto que no debe ser analizado. Una cadena nowdoc se identifica con la misma sintaxis <<< usada para heredoc, pero el identificador que le sigue esta encerrado entre comillas simples, por ejemplo <<<'EOT'. Todas las reglas para los identificadores heredoc tambin son aplicables a los identificadores nowdoc, especialmente aquellos que se refieren al empleo del identificador de cierre.
echo <<<'ABC' Texto largo, de varias lneas, que se imprime usando la sintaxis NOWDOC. Las variables aqu NO son interpretadas: $variable ABC;

Llaves{} Consideremos el siguiente cdigo:


$animalFavorito=gato: echo (Mis animales favoritos son los $animalFavoritos);

Este cdigo es ambiguo. PHP interpreta insertar el contenido de la variable $animalFavorito seguido del carcter s? O debera insertar el contenido de la variable $animalFavoritos (no existente)? PHP interpreta lo ltimo. Para evitar este problema podemos utilizar las llaves como sigue:
echo (Mis animales favoritos son los {$animalFavorito}s);

Funciones de strings
Longitud de una cadena int strlen ( string ) Devuelve la longitud del string dado.

Pgina 27

PHP
ejer027.html y ejer027.php
Escribe un programa en PHP que escriba una tantas veces como letras tenga. La palabra se la proporcionar un formulario. Ejer027.html Ejer027.php

Acceder a los caracteres de un string Para acceder a un carcter individual en una posicin determinada (ndice) de la cadena: $character=$string[posicin]; Por ejemplo:
$nombre=Fernando; echo ($nombre[0].<br/>);//Muestra F echo ($nombre[1].<br/>);//Muestra e echo ($nombre[2].<br/>);//Muestra r

ejer028.html y ejer028.php
Escribe un programa en PHP que escriba las letras de una palabra. La palabra se la proporcionar un formulario. Ejer028.html Ejer028.php

ejer029.html y ejer029.php
Escribe un programa en PHP que escriba el nmero de vocales de una palabra. La palabra se la proporcionar un formulario. Ejer029.html Ejer029.php

Pgina 28

PHP

Bsqueda en cadenas strstr, strchr string strstr(string $pajar, string $aguja[, true/false]) string strchr(string $pajar, string $aguja[, true/false]) Devuelve parte de la cadena pajar desde la primera aparicin de la aguja hasta el final del pajar. La bsqueda diferencia entre maysculas y minsculas. El tercer parmetro es opcional, si se pone true la funcin devolver la parte de la cadena desde el principio hasta la aguja. stristr strstr insensible a maysculas y minsculas strrchr string strstr(string $pajar, string $aguja) Encuentra la ltima aparicin de un carcter en un string y devuelve la subcadena hasta el final.

strpos int strpos(string $pajar, string $aguja [, int $desplazamiento]) Devuelve la posicin numrica de la primera ocurrencia de la cadena aguja en la cadena pajar o false si la cadena aguja no se encuentra. El parmetro opcional desplazamiento permite especificar por que caracter en el pajar se desea empezar la bsqueda. La posicin devuelta sigue siendo relativa al inicio del pajar.
<?php $mystring = 'abc'; $findme = 'a'; $pos = strpos($mystring, $findme); // Ntese el uso de ===. Puesto que == simple no funcionar como se espera porque la posicin de 'a' est en el 1 (primer) caracter. if ($pos === false) { echo "La cadena '$findme' no fue encontrada en la cadena '$mystring'"; } else { echo "La cadena '$findme' fue encontrada en la cadena '$mystring y existe en la posicin $pos"; } ?>

strrpos int strrpos(string $pajar, string $aguja [, int $desplazamiento]) Devuelve la posicin numrica de la ltima aparicin de aguja en el string pajar o false si la cadena aguja no se encuentra. Si se especifica desplazamiento, la bsqueda parar en ste nmero de caracteres contados desde el comienzo del string. Si el valor es negativo, entonces la bsqueda iniciar desde esa cantidad de caracteres desde el final del string.
<?php echo strrpos("Hello wonderful world!","wo"); ?>

La salida del cdigo de arriba ser 16

Pgina 29

PHP
Ejer030.html Ejer030.php

<html> <head> <title>funciones de busqueda de cadenas</title> </head> <body> <form action="ejer030.php" method="post"> <p>Pajar: <input type="text" name="pajar" size="70" /></p> <p>Aguja: <input type="text" name="aguja" size="25" /></p> <p><input type="submit" name="boton" value="Enviar" /></p> </form> </body> </html>

<html> <head><title>funciones de cadenas</title></head> <body> <?php $pajar=$_POST['pajar']; $aguja=$_POST['aguja']; $subcadena=strstr($pajar, $aguja); echo '$pajar='."\"$pajar\" <br/>"; echo '$aguja='."\"$aguja\" <br/>"; echo 'strstr($pajar, $aguja) devuelve --->'; echo "\"$subcadena\" <br/>"; $subcadena=strstr($pajar, $aguja, true); echo 'strstr($pajar, $aguja, true) devuelve --->'; echo "\"$subcadena\" <br/>"; $subcadena=stristr($pajar, $aguja); echo 'stristr($pajar, $aguja) devuelve --->'; echo "\"$subcadena\" <br/>"; $subcadena=strrchr($pajar, $aguja); echo 'strrchr($pajar, $aguja) devuelve --->'; echo "\"$subcadena\" <br/>"; $n=strpos($pajar, $aguja); echo 'strpos($pajar, $aguja) devuelve --->'; echo "$n "; if($n===false) echo "La aguja no est en el pajar "; if(is_bool($n)) echo("(El valor devuelto es boolean) <br/>"); elseif(is_int($n)) echo("El valor devuelto es entero <br/>"); echo 'strrpos($pajar, $aguja) devuelve --->'; echo strrpos($pajar,$aguja); ?> </body> </html>

Comparacin de cadenas strcmp Compara dos cadenas (es sensible a maysculas y minsculas.); int strcmp ( string $str1 , string $str2 ) Devuelve < 0 si str1 es menor que str2; > 0 si str1 es mayor que str2 y 0 si son iguales. strcasecmp Compara dos cadenas (NO es sensible a maysculas y minsculas.); int strcmp ( string $str1 , string $str2 ) Devuelve < 0 si str1 es menor que str2; > 0 si str1 es mayor que str2 y 0 si son iguales.

ejer031.html y ejer031.php
El programa pide 2 cadenas por teclado y las muestra ordenas en orden creciente. En caso de ser iguales solamente muestra una cadena. Ejer031.html Ejer031.php

Pgina 30

PHP
Operar con subcadenas substr Devuelve parte de una cadena. string substr ( string $string, int $start [, int $length ] ) string: la cadena de la que se quiere obtener la subcadena. start: comienzo de la subcadena o Si start no es negativo, la cadena devuelta comenzar en el start de la posicin del string empezando desde cero. Por ejemplo, en la cadena 'abcdef', el caracter en la posicin 0 es 'a', el caracter en la posicin 2 es 'c', y as sucesivamente. o Si start es negativo, la cadena devuelta empezar en start contando desde el final de string. o Si la longitud del string es menor o igual a start, la funcin devolver FALSE. Lengtn:longitud de subcadena o Si se especifica el length y es positivo, la cadena devuelta contendr como mximo de caracteres de la cantidad dada por length que comienza en start . o Si se especifica length es negativo, entonces ese nmero de caracteres se omiten al final del string. Si start indica la posicin de su truncamiento o ms all, se devolver false. o Si se omite el length, la subcadena empezar por start hasta el final de la cadena donde ser devuelta. o Si se especifica length y es 0, FALSE o NULL devolver una cadena vaca.
<?php $rest = substr("abcdef", -1); // devuelve "f" $rest = substr("abcdef", -2); // devuelve "ef" $rest = substr("abcdef", -3, 1); // devuelve "d" ?> <?php $rest = substr("abcdef", 0, -1); // devuelve "abcde" $rest = substr("abcdef", 2, -1); // devuelve "cde" $rest = substr("abcdef", 4, -4); // devuelve false $rest = substr("abcdef", -3, -1); // devuelve "de" ?>

ejer032.html y ejer032.php
Ejer032.html Ejer032.php

ejer033.html y ejer033.php
Escribir un formulario HTML que pida el infinitivo de un verbo acabado en ar o en er y un script PHP que nos muestre el infinitivo, gerundio, participio y presente de indicativo del verbo. Ejer033.html Ejer033.php

Pgina 31

PHP
str_replace mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) Esta funcin devuelve un string o un array con todas las apariciones de search en subject reemplazadas con el valor dado de replace.
// Produce: <body text='black'> $bodytag = str_replace("%body%", "black", "<body text='%body%'>"); // Produce: 2 $str = str_replace("ll", "", "good golly miss molly!", $count); echo $count;

strtr string strtr(string cadena, string carBuscados, string carReemplazo) Devuelve una copia de cadena donde todas las apariciones de cada caracter en carBuscados ha sido traducido al caracter correspondiente en carReemplazo. Si carBuscados y carReemplazo tienen distinta longitud, se ignoran los caracteres extra del string ms largo. La longitud de cadena ser la misma que la del valor devuelto. substr_count int substr_count ( string $pajar , string $aguja [, int $offset = 0 [, int $length ]] ) Devuelve el nmero de veces en que el substring aguja aparece en el string pajar (aguja es sensible a maysculas y minsculas).
<?php $text = 'This is a test'; echo strlen($text); // 14 echo substr_count($text, 'is'); // 2 // el string es reducido a 's is a test', as que muestra 1 echo substr_count($text, 'is', 3); // el texto es reducido a 's i', as que muestra 0 echo substr_count($text, 'is', 3, 3); // genera una advertencia debido a que 5+10 > 14 echo substr_count($text, 'is', 5, 10); // muestra slo 1, debido a que no cuenta substrings solapados. $text2 = 'gcdgcdgcd'; echo substr_count($text2, 'gcdgcd'); ?>

strpos Busca la posicin de la primera ocurrencia de una cadena

int strpos ( string $pajar , mixed $aguja [, int $offset = 0 ] ) Devuelve la posicin numrica de la primera ocurrencia de la cadena aguja en el string pajar.

Pgina 32

PHP
Eliminar espacios de una cadena string chop(string cadena) Devuelve cadena sin los espacios en blanco y los caracteres de fin de lnea que se encuentren al final del string. string rtrim(string cadena) Hace lo mismo que chop(). string ltrim(string cadena) Devuelve la cadena sin los espacios en blanco que se encuentren al principio del string. string trim(string cadena) Devuelve cadena sin los espacios en blanco que se encuentren al principio y al final del string. Conversin entre maysculas y minsculas string strtolower(string cadena) Devuelve el string cadena de caracteres a minsculas. string strtoupper(string cadena) Devuelve el string cadena de caracteres a maysculas. Ejer034.html Ejer034.php

Ejer035.html

Ejer035.php

Pgina 33

PHP

Listado de todas las funciones de strings

addcslashes Escapa una cadena de la misma forma que lo hace C addslashes Aade barras invertidas a una cadena bin2hex Convierte datos binarios en su representacin hexadecimal chop Alias de rtrim chr Devuelve un caracter especfico chunk_split Divide una cadena en trozos ms pequeos convert_cyr_string Convierte de un juego de caracteres cirlico a otro juego de caracteres cirlico convert_uudecode Descodifica una cadena codificada mediante uuencode convert_uuencode Codifica, mediante uuencode, una cadena count_chars Devuelve informacin sobre los caracteres usados en una cadena crc32 Calcula el polinomio crc32 de una cadena crypt Hashing de una sola va de un string echo Muestra una o ms cadenas explode Divide una cadena en varias cadenas fprintf Escribir una cadena con formato a una secuencia get_html_translation_table Devuelve la tabla de traduccin utilizada por htmlspecialchars y htmlentities hebrev Convierte texto hebreo lgico a texto visual hebrevc Convertir texto de hebreo lgico a texto visual con conversin de lnea nueva hex2bin Decodifica una cadena binaria codificada hexadecimalmente html_entity_decode Convierte todas las entidades HTML a sus caracteres correspondientes htmlentities Convierte todos los caracteres aplicables a entidades HTML htmlspecialchars_decode Convierte entidades HTML especiales de nuevo en caracteres htmlspecialchars Convierte caracteres especiales en entidades HTML implode Une elementos de un array en una cadena join Alias de implode lcfirst Pasa a minscula el primer caracter de un string levenshtein Clculo de la distancia Levenshtein entre dos strings localeconv Obtener informacin sobre el formato numrico ltrim Retira espacios en blanco (u otros caracteres) del inicio de un string md5_file Calcula el resumen criptogrfico md5 de un archivo dado md5 Calcula el hash md5 de un string metaphone Calcula la clave metaphone de un string money_format Da formato a un nmero como un string de moneda nl_langinfo Consulta informacin sobre el idioma y la configuracin regional nl2br Inserta saltos de lnea HTML antes de todas las nuevas lneas de un string number_format Formatear un nmero con los miles agrupados ord devuelve el valor ASCII de una caracter parse_str Interpreta el string en variables print Mostrar una cadena printf Imprimir una cadena con formato quoted_printable_decode Convierte un string quoted-printable en un string de 8 bits quoted_printable_encode Convierte un string de 8 bits en un string quoted-printable quotemeta Escapa meta caracteres rtrim Retira los espacios en blanco (u otros caracteres) del final de un string setlocale Establecer la informacin de la configuracin regional sha1_file Calcula el hash sha1 de un archivo sha1 Calcula el hash sha1 de un string similar_text Calcula la similitud entre dos strings soundex Calcula la clave soundex de un string sprintf Devuelve un string formateado sscanf Interpreta un string de entrada de acuerdo con un formato str_getcsv Interpreta un string de CSV en un array str_ireplace Versin insensible a maysculas y minsculas de str_replace str_pad Rellena un string hasta una longitud determinada con otro string str_repeat Repite un string str_replace Reemplaza todas las apariciones del string buscado con el string de reemplazo str_rot13 Realizar la transformacin rot13 sobre una cadena str_shuffle Reordena aleatoriamente una cadena str_split Convierte un string en un array str_word_count Devuelve informacin sobre las palabras utilizadas en un string strcasecmp Comparacin de string segura a nivel binario e insensible a maysculas y minsculas strchr Alias de strstr strcmp Comparacin de string segura a nivel binario

Pgina 34

PHP

strcoll Comparacin de cadenas basada en la localidad strcspn Encuentra la longitud del segmento inicial que no coincida con la mscara strip_tags Retira las etiquetas HTML y PHP de un string stripcslashes Desmarca la cadena marcada con addcslashes stripos Encuentra la posicin de la primera aparicin de un substring insensible a maysculas y minsculas en in string stripslashes Quita las barras de un string con comillas escapadas stristr strstr insensible a maysculas y minsculas strlen Obtiene la longitud de un string strnatcasecmp Comparacin de strings, insensible a maysculas y minsculas, utilizando un algoritmo de "orden natural" strnatcmp Comparacin de strings utilizando un algoritmo de "orden natural" strncasecmp Comparacin de los primeros n caracteres de cadenas, segura con material binario e insensible a maysculas y minsculas strncmp Comparacin segura a nivel binario de los primeros n caracteres entre strings strpbrk Buscar una cadena por cualquiera de los elementos de un conjunto de caracteres strpos Encuentra la posicin de la primera ocurrencia de un substring en un string strrchr Encuentra la ltima aparicin de un caracter en un string strrev Invierte una string strripos Encuentra la posicin de la ltima aparicin de un substring insensible a maysculas y minsculas en un string strrpos Encuentra la posicin de la ltima aparicin de un substring en un string strspn Encuentra la longitud del segmento inicial de un string que consista nicamente en caracteres contenidos dentro de una mscara dada. strstr Encuentra la primera aparicin de un string strtok Tokeniza string strtolower Convierte una cadena a minsculas strtoupper Convierte un string a maysculas strtr Traduce ciertos caracteres o reemplaza substrings substr_compare Comparacin segura a nivel binario de dos o ms cadenas desde un ndice, hasta una longitud dada de caracteres substr_count Cuenta el nmero de apariciones del substring substr_replace Reemplaza el texto dentro de una porcin de un string substr Devuelve parte de una cadena trim Elimina espacio en blanco (u otro tipo de caracteres) del inicio y el final de la cadena ucfirst Convierte el primer caracter de una cadena a maysculas ucwords Convierte a maysculas el primer caracter de cada palabra en una cadena vfprintf Escribe un string con formato en un flujo vprintf Muestra una cadena con formato vsprintf Devuelve una cadena con formato wordwrap Ajusta un string hasta un nmero dado de caracter

Hacer un formulario fecha1.html que pida una fecha y un script fecha1.php que valide esa fecha segn se indica a continuacin. Inicialmente no tendremos en cuenta que si el ao es o no bisiesto, es decir el da es 29 de febrero es vlido para todos los aos. fecha1.html fecha1.php

Mejoras al programa anterior: Un ao es bisiesto si es divisible entre 4, a menos que sea divisible entre 100. Sin embargo, si un ao es divisible entre 100 y adems es divisible entre 400, tambin resulta bisiesto.

Cuando la fecha sea correcta la visualice en formato de los Estados Unidos mm/dd/aaaa

Pgina 35

PHP
9. Arrays
Que es un array?
Una variable es un contenedor que puede almacenar un nmero o una cadena. El problema es que una variable slo puede contener un valor. Si tuvisemos que almacenar un lista de coches en variables tendramos que hacer:

$coches1="Saab"; $coches2="Volvo"; $coches3="BMW"; Qu ocurrira si quisiramos recorrer a lista para buscar un determinado coche?Y si la lista en lugar de tener 3 elementos tuviese 300?
Un array (o matriz, como tambin son llamados) es un tipo de variable, con la singularidad de que no contiene un nico valor, sino un conjunto de valores referenciados con un ndice. Utilizando en el ejemplo anterior un array podramos almacenar todos los valores utilizando un mismo nombre (por ejemplo $coches) y podramos acceder a cada uno de los valores a travs de un ndice (por ejemplo $coches[0]). De esta forma se simplifican muchsimo los programas que tengan que utilizar estas colecciones de datos. La sintaxis es muy parecida a la usada con el resto de variables, con diferencias en la forma en que el array es creado y lgicamente, la forma en que su valor es recuperado.

Creando arrays
La forma ms sencilla es asignar el valor de cada elemento de manera explcita

$coches[0]="Saab"; $ coches[1]="Volvo"; $ coches[]="BMW"; $ coches[]="Toyota";


Cuando al generar un array no indicamos la posicin de los elementos, estos se van situando secuencialmente sobre la ltima asignacin realizada. En el ejemplo anterior BMW se almacena en el elemento de ndice 2 y Toyota en el de ndice 3. La otra forma de crear arrays es usando el constructor array() con la siguiente sintaxis: Nombre_Array array([index]=>[valor], [index2]=>[valor], ...);

$coches=array("Saab","Volvo","BMW","Toyota");
En el ejemplo anterior podemos ver que, por defecto, los ndices se asignan de modo secuencial comenzando por la posicin 0. El constructor array() tambin nos permite asignar los valores a los elementos que queramos del array. Por ejemplo:

$coches=array(2=>"Saab",0=>"Volvo",1=>"BMW",3=>"Toyota"); Pgina 36

PHP
ejer036.html y ejer036.php
Una tienda online vende diez artculos que se identifican con un cdigo de artculo que es un nmero del 1 al 10. Los precios unitarios sin IVA de los artculos son (ordenados por el cdigo de artculo) los siguientes 1.5, 2, 1.75, 0.5, 3.25, 6, 10, 5, 3 y 4.5. El tipo de IVA ser el 21%. Se trata de hacer un formulario que pida el cdigo de artculo y la cantidad a un cliente y un programa en PHP que le muestre el precio total sin IVA, el importe del IVA y el precio final. Ejer036.html Ejer036.php

Arrays asociativos
Como ya sabemos, un array sencillo est formado por conjuntos de parejas ndice => valor, o como suele expresarse en ingls, key, value. Hasta ahora hemos manejado un ejemplo con ndices o keys numricos (tambin conocidos como arrays escalares), pero tambin podemos usar strings como ndices, es decir, cadenas de texto. Este tipo de array es el array asociativo:

<?php $agenda = array( "Pedro"=>"983101010", "Juan"=>"983202020", "Ana"=>"983303030"); ?>

ejer037.html y ejer037.php
Modificar el ejercicio anterior para que el usuario tenga que introducir el nombre del artculo en lugar del cdigo. Los nombres de los artculos son los siguientes: m10, m20, m30, m40, m50, m60, n10, n20, n30, n40 y sus precios: 1.5, 2, 1.75, 0.5, 3.25, 6, 10, 5, 3 y 4.5. Ejer037.html Ejer037.php

Recorrer un array
Una de las operaciones ms habituales con arrays es recorrer sus elementos para obtener sus valores ya sea para mostrarlos, modificarlos o trabajar con ellos.

Pgina 37

PHP
Para recorrer un array en PHP tenemos tres opciones. Cada una es apropiada para distintas situaciones. 1: Bucle For Este bucle es apropiado para arrays con un ndice numrico. Si no hemos definido ndices a nuestro array, por defecto ser numrico. Requiere tres parmetros, el primero es dnde empieza a contar, el segundo hasta cundo, y el tercero las variaciones que va sufriendo la variable en cada iteracin. $vector = array(a,b,c); $vector[] = d; $vector[] = e; for($i=0;$i<count($vector);$i++) echo "<p>El vector con indice $i tiene el valor $vector[$i] </p>";

Otra ventaja de este bucle es que podemos recorrerlo parcialmente, o ir saltando elementos. Por ejemplo, vamos a recorrer un array desde el elemento 3 hasta el 9, de dos en dos.

ejer036_2.php
Sustituir el archivo HTML ejer036.html por el programa PHP ejer036_2.php que muestra el contenido del array que contiene los precios utilizando el bucle for para recorrer el array. Ejer036_2.php Ejer036.php

2: Bucle foreach Este bucle es el ms indicado para arrays con ndices no numricos, anque sirve tambin para recorrer fcilmente uno numrico. La ventaja es que da igual cuntos elementos tenga el array, o cmo sean; foreach los recorrer sin problema.
$vector = array(uno=>a,dos=>b,tres=>c,cuatro=>d); foreach($vector as $c=>$v) echo "<p>El vector con indice $c tiene el valor $v </p>";

Pgina 38

PHP
ejer037_2.php
Sustituir el archivo HTML ejer037.html por el programa PHP ejer037_2.php que muestra el contenido del array que contiene los precios utilizando el bucle foreach para recorrer el array.

Ejer037_2.php

Ejer037.php

3: Bucle While Para recorrer un bucle con ndices, podemos optar tambin por el bucle While. Pero tendremos que hacer uso de las funciones list y each. $vector = array(uno=>a,dos=>b,tres=>c,cuatro=>d); while (list($clave, $valor) = each($vector)) echo "<p>El vector con indice $clave tiene el valor $valor </p>";

ejer037_3.php
Sustituir el archivo HTML ejer037.html por el programa PHP ejer037_3.php que muestra el contenido del array que contiene los precios utilizando el bucle while para recorrer el array. Elije en cada ocasin la que ms te convenga, pero ten siempre en mente todas las opciones.

Pgina 39

PHP
Listado de todas las funciones de arrays

array_change_key_case Cambia todas las claves en un array array_chunk Divide un array en fragmentos array_combine Crea un nuevo array, usando una matriz para las claves y otra para sus valores array_count_values Cuenta todos los valores de un array array_diff_assoc Calcula la diferencia entre arrays con un chequeo adicional de ndices array_diff_key Calcula la diferencia entre arrays usando las keys para la comparacin array_diff_uassoc Calcula la diferencia entre arrays con un chequeo adicional de ndices que se realiza por una funcin de devolucin de llamada suministrada por el usuario array_diff_ukey Calcula la diferencia entre arrays usando una funcin de devolucin de llamada en las keys para comparacin array_diff Calcula la diferencia entre arrays array_fill_keys Llena un array con valores, especificando las keys array_fill Llena un array con valores array_filter Filtra elementos de un array usando una funcin de devolucin de llamada array_flip Intercambia todas las keys con sus valores asociados en un array array_intersect_assoc Calcula la interseccin de arrays con un chequeo adicional de ndices array_intersect_key Calcula la interseccin de arrays usando las keys para la comparacin array_intersect_uassoc Calcula la interseccin de arrays con un chequeo adicional de ndices que se realiza por una funcin de devolucin de llamada array_intersect_ukey Calcula la interseccin de arrays usando una funcin de devolucin de llamada en las keys para la comparacin array_intersect Calcula la interseccin de arrays array_key_exists Verifica si el ndice o clave dada existe en el array array_keys Devuelve todas las claves de un array o un subconjunto de claves de un array array_map Aplica la llamada de retorno especificada a los elementos de los dados array_merge_recursive Une dos o ms arrays recursivamente array_merge Combina dos o ms arrays array_multisort Ordena mltiples arrays, o arrays multi-dimensionales array_pad Rellena un array a la longitud especificada con un valor array_pop Extrae el ltimo elemento del final del array array_product Calcula el producto de los valores en el array array_push Inserta uno o ms elementos al final de un array array_rand Selecciona una o ms entradas aleatorias de un array array_reduce Reduce iterativamente una matriz a un solo valor usando una funcin llamada de retorno array_replace_recursive Reemplaza los elementos de los arrays pasados al primer array de forma recursiva array_replace Remplaza los elementos de los arrays pasados en el primer array array_reverse Devuelve un array con los elementos en orden inverso array_search Busca un valor determinado en un array y devuelve la clave correspondiente en caso de xito array_shift Quita un elemento del principio del array array_slice Extrae una parte de un array array_splice Elimina una porcin del array y la reemplaza con algo array_sum Calcula la suma de los valores en un array array_udiff_assoc Computa la diferencia entre arrays con una comprobacin de indices adicional, compara la informacin mediante una funcin de llamada de retorno array_udiff_uassoc Computa la diferencia entre arrays con una verificacin de ndices adicional, compara la informacin y los ndices mediante una funcin de llamada de retorno array_udiff Computa la diferencia entre arrays, usando una llamada de retorno para la comparacin de datos array_uintersect_assoc Computa la interseccin de arrays con una comprobacin de ndices adicional, compara la informacin mediante una funcin de llamada de retorno array_uintersect_uassoc Computa la interseccin de arrays con una comprobacin de ndices adicional, compara la informacin y los ndices mediante funciones de llamada de retorno array_uintersect Computa una interseccin de arrays, compara la informacin mediante una funcin de llamada de retorno array_unique Elimina valores duplicados de un array array_unshift Aadir al inicio de un array uno a ms elementos array_values Devuelve todos los valores de un array array_walk_recursive Aplicar una funcin de usuario recursivamente a cada miembro de un array array_walk Aplicar una funcin de usuario a cada miembro de un array array Crea un array arsort Ordena un array en orden inverso y mantiene la asociacin de ndices asort Ordena un array y mantiene la asociacin de ndices compact Crear un array que contiene variables y sus valores count Cuenta todos los elementos de un array o en un objeto current Devuelve el elemento actual en un array

Pgina 40

PHP

each Devolver el par clave/valor actual de un array y avanzar el cursor del array end Establece el puntero intero de un array a su ltimo elemento extract Importar variables a la tabla de smbolos actual desde un array in_array Comprueba si un valor existe en un array usando comparacin flexible key Obtiene una clave de un array krsort Ordena un array por clave en orden inverso ksort Ordena un array por clave list Asigna variables como si fuera un array natcasesort Ordenar un array usando un algoritmo de "orden natural" insensible a maysculas-minsculas natsort Ordena un array usando un algoritmo de "orden natural" next Avanza el puntero interno de un array pos Alias de current prev Rebobina el puntero interno del array range Crear un array que contiene un rango de elementos reset Establece el puntero interno de un array a su primer elemento rsort Ordena un array en orden inverso shuffle Mezcla un array sizeof Alias de count sort Ordena un array uasort Ordena un array con una funcin de comparacin definida por el usuario y mantiene la asociacin de ndices uksort Ordena un array segn sus claves usando una funcin de comparacin definida por el usuario usort Ordena un array segn sus valores usando una funcin de comparacin definida por el usuario

array_key_exists Verifica si el ndice o clave dada existe en el array bool array_key_exists ( mixed $key , array $search ) $key Valor para verificar.
$search Un array con las claves para verificar Devuelve TRUE en caso de xito o FALSE en caso de error. Ejercicio: Modifica ejer037.php para que en caso de que el usuario pida en su pedido un nombre de artculo que no existe visualice el siguiente mensaje: Lo sentimos, no tenemos el producto pedido..

count Cuenta todos los elementos de un array o en un objeto sort Ordena un array
Esta funcin ordena un array. Los elementos sern ordenados de menor a mayor cuando la funcin haya terminado. Devuelve TRUE en caso de xito o FALSE en caso de error.
<?php $fruits = array("lemon", "orange", "banana", "apple"); sort($fruits); foreach ($fruits as $key => $val) { echo "fruits[" . $key . "] = " . $val . "\n"; } ?>

El resultado del ejemplo sera:


fruits[0] fruits[1] fruits[2] fruits[3] = = = = apple banana lemon orange

rsort Ordena un array en orden inverso


Esta funcin ordena un array en orden inverso. Los elementos sern ordenados de mayor a menor cuando la funcin haya terminado. Devuelve TRUE en caso de xito o FALSE en caso de error.

Pgina 41

PHP
<?php $fruits = array("lemon", "orange", "banana", "apple"); rsort($fruits); foreach ($fruits as $key => $val) { echo "fruits[" . $key . "] = " . $val . "\n"; } ?>

El resultado del ejemplo sera:


fruits[0] fruits[1] fruits[2] fruits[3] = = = = orange lemon banana apple

asort Ordena un array y mantiene la asociacin de ndices


Esta funcin ordena un array manteniendo la correlacin de los ndices del array con los elementos con los que estn asociados. Se utiliza principalmente para ordenar arrays asociativos en los que el orden es importante. Devuelve TRUE en caso de xito o FALSE en caso de error.
<?php $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); asort($fruits); foreach ($fruits as $key => $val) { echo "$key = $val\n"; } ?>

El resultado del ejemplo sera:


c b d a = = = = apple banana lemon orange

Las frutas han sido ordenadas alfabeticamente, y se ha mantenido el ndice asociado con cada elemento.

arsort Ordena un array en orden inverso y mantiene la asociacin de ndices


Ejer038.html Ejer038.php

array_multisort Ordena mltiples arrays, o arrays multi-dimensionales


<?php $matriz1 = array(10, 100, 100, 0); $matriz2 = array(1, 3, 2, 4); array_multisort($matriz1, $matriz2); var_dump($matriz1); var_dump($matriz2); ?>

Pgina 42

PHP
En este ejemplo, despus del ordenado, el primer array contendr los valores 0, 10, 100, 100. El segundo array contendr 4, 1, 2, 3. Las entradas en el segundo array que correspondan a las entradas idnticas del primer array (100 y 100) fueron ordenadas tambin.

ejer039.html y ejer039.php
Ejer039.html Ejer039.php

arrays Multidimensionales
Un array multidimensional es simplemente un array en el que al menos uno de sus valores es, a su vez, un array:
<?php $agenda = array("domicilio" => "calle tal cual", "telefono" => $telefonos, "trabajo" => "empresa tal cual"); $telefonos = array("trabajo" => "7296489", "casa" => "5689524", "movil" => "6558987"); ?>

Y podemos acceder a dichos valores aadiendo un par de corchetes:


<?php $agenda['telefono']['casa'] = "5689524"; ?>

Supongamos la siguiente tabla perteneciente a una floristera, donde aparecen los productos, precios cantidad en la tienda. Producto Rosa Margarita Orquidea Precio 1,25 0,75 1,75 Cantidad 30 40 7

Veamos como podemos almacenar estos datos en una tabla de dos dimensiones:
<?php $tienda = array( array("rosa", 1.25 , 30), array("margarita", 0.75 , 40), array("orqudea", 1.75 , 7) ); ?>

Pgina 43

PHP
ejer040.php ejer040.php ejer040.php

ejer040_1.php

ejer040_1.php

ejer040_1.php

ejer041.php
Hacer un programa PHP que muestre todos los elementos e ndices del array $fruta tal y como se ve en la imagen (utiliza listas HTML ordenadas y desordenadas)
$fruta = array( "naranja" => array( 'propiedad' => 'jugosa', 'color' => 'naranja', 'sabor' => 'dulce' ), 'limn' => array( 'propiedad' => 'jugoso', 'color' => 'amarillo', 'sabor' => 'ctrico' ) );

Pgina 44

PHP
10. Funciones
La mejor forma de crear y mantener un programa grande, es construirlo a partir de piezas ms pequeas o mdulos. Cada una de estas piezas es ms manejable que el programa en su totalidad. Por otra parte hay trozos de cdigo que se repiten en muchos programas y nos podemos evitar programarlas en cada uno de ellos. Una funcin de PHP es una seccin separada de cdigo a la que se le ha dado un nombre. Utilizando este nombre en un script se puede llamar a esta seccin de cdigo tantas veces como se quiera en los momentos en que se necesite. Las funciones pueden recibir valores desde las sentencias que las llaman. Estos valores se denominan parmetros o argumentos. Las funciones pueden devolver valores.

Declaracin de una funcin


La sintaxis de la declaracin de una funcin es la siguiente:
function nombre_de_funcin ([parmetro1 [, ]) { sentencias }

La palabra reservada function se utiliza para especificar un nombre de funcin, el cual sirve como identificador para el conjunto de sentencias incluidas entre las llaves. Los parmetros, encerrados entre parntesis y separados por comas, son las variables que recibirn los valores con los que es llamada la funcin. Los parntesis habr que escribirlos siempre, aunque la funcin no tenga parmetros.

Llamada a una funcin


Una vez declarada una funcin, esta no se ejecuta hasta que se llama desde cualquier parte del script. Para llamar a una funcin basta con escribir una sentencia que contenga el nombre de la funcin y, entre parntesis, los valores de los argumentos. Una funcin puede ser llamada tantas veces como se necesite.
<?php function imprimirNegrita($texto){ echo "<b>$texto</b>"; } echo "Linea sin negrita<br>"; imprimirNegrita("Linea en negrita<br>"); ?>

mbito de las variables


El mbito de las variables es el lugar o lugares donde tienen validez. El mbito vara en funcin de donde se hayan creado esas variables, pudiendo ser globales o locales. En PHP, todas las variables creadas en la pgina, fuera de funciones, son variables globales a la pgina. Por su parte, las variables creadas dentro de una funcin son variables locales a esa funcin.

Pgina 45

PHP
Las variables globales se pueden acceder en cualquier lugar de la pgina, mientras que las variables locales slo tienen validez dentro de la funcin donde han sido creadas. De modo que una variable global la podemos acceder dentro de cualquier parte del cdigo, mientras que si intentamos acceder a una variable local fuera de la funcin donde fue creada, nos encontraremos con que esa variable no tiene contenido alguno.
Si intentamos acceder a una variable global dentro de una funcin, en principio tambin nos encontraremos con que no se tiene acceso a su valor.
<?php function mifuncion() { echo $pais; } $pais = "Espaa"; mifuncion(); echo $pais; ?>

Para poder hacerlo, tenemos que especificar que esa variable que vamos a utilizar es una global de una de las siguientes maneras: Matriz GLOBALS Declaracin de uso de variables globales dentro de una funcin Matriz GLOBALS Existe un array en PHP llamado $GLOBALS, que guarda una referencia a todas las variables creadas de manera global a la pgina. Es una matriz o array asociativo, de los que en lugar de ndices numricos utilizan ndices de texto, donde cada ndice es el nombre que hemos dado a la variable y cada valor es el contenido de cada variable.
<?php function mifuncion() { echo $GLOBALS[pais]; } $pais = "Espaa"; mifuncion(); echo $pais; ?>

Declaracin de uso de variables globales dentro de una funcin

Otra forma de acceder a variables globales dentro de una funcin es especificar al comienzo de dicha funcin la lista de variables que vamos a utilizar dentro con la palabra clave global.
<?php $a = 1; $b = 2; function Suma() { global $a, $b; $b = $a + $b; } Suma(); echo $b; ?>

Pgina 46

PHP
ejer042.html y ejer042.php
Se trata de hacer un script PHP que utilice una funcin de usuario llamada escribe_separa que recibe un texto de un formulario y lo escribe en la pgina con cada carcter separado por "-". Es decir, si recibe "hola" debe escribir "ho-l-a" en la pgina web. Ejer042.html Ejer042.php

Devolver valores
Los valores son devueltos usando la sentencia opcional return. Se puede devolver cualquier tipo, incluidos arrays y objetos. Esto causa que la funcin finalice su ejecucin inmediatamente y pase el control de nuevo a la lnea desde la que fue llamada. Si se omite return() ser devuelto el valor NULL.

ejer043.html y ejer043.php
Se trata de hacer un script PHP que utilice una funcin de usuario llamada cuadrado que recibe un nmero de un formulario devuelve el cuadrado. Si lo que se le pasa como parmetro no es un nmero devuelve NULL. Ejer043.html Ejer043.php Ejer043.html Ejer043.php

is_array()
bool is_array ( mixed $var ) Devuelve TRUE si var es un array, o de lo contrario FALSE.

print_r()
Si se le da string, integer o float, el valor en s mismo ser impreso. Si le dan un array, los valores sern presentados en un formato que muestra las claves y los elementos.

var_dump()
Esta funcin muestra informacin estructurada sobre una o ms expresiones incluyendo su tipo y valor.

ejer044.php
Se trata de hacer un script PHP que utilice dos funciones de usuario llamadas: menor y mayor. Las dos funciones tienen como parmetro un array. La primera devuelve el menor valor del array y la segunda el mayor valor del array. Por ejemplo con este array: $numeros=array(6,1,5,4,10,3,9,2,7,8); La salida sera la que se muestra debajo (utilizar var_dump y print_r para mostrar las dos primeras lneas):

Pgina 47

PHP
No es posible devolver mltiples valores desde una funcin, pero un efecto similar se puede conseguir devolviendo una lista, para ello se emplea la funcin de PHP list(), veamos un ejemplo:
<?php function nmeros_pequeos() { return array (0, 1, 2); } list ($cero, $uno, $dos) = nmeros_pequeos(); echo (<p>$cero, $uno, $dos</p>); ?>

list()
array list ( mixed $varname [, mixed $... ] ) list() se utiliza para asignar una lista de variables en una sola operacin. Ejemplo de list:
<?php $info = array('caf', 'marrn', 'cafena'); // Listando todas las variables list($drink, $color, $power) = $info; echo "El $drink es $color y la $power lo hace especial.\n"; // Listando algunas variables list($drink, , $power) = $info; echo "El $drink tiene $power.\n"; // O vamos a omitir solo la tercera list( , , $power) = $info; echo "Necesito $power!\n"; // list() no funciona con cadenas list($bar) = "abcde"; var_dump($bar); // NULL ?>

ejer045.php
Modificar ejer044.php para que utilice una nica funcin llamada menor_mayor que devuelva un array con dos valores, el primero ser el menor valor del array y el segundo el mayor valor del array.

Funciones con nmero variable de parmetros


PHP nos permite definir funciones en las que el nmero de parmetros no est fijado a priori. No se necesita una sintaxis especfica, pero su funcionamiento se basa en el siguiente conjunto de funciones definidas:

func_num_args()
Devuelve el nmero de argumentos pasados a la funcin.

func_get_args()
Devuelve un array con los argumentos pasados a la funcin.

func_get_arg()
Devuelve un argumento de la lista de argumentos pasados a la funcin. Los argumentos empiezan en la posicin 0 igual que los arrays. Si se solicita un argumento de una posicin que no existe, devuelve false.

ejer046.php
Hacer una funcin mayor que pueda ser llamada pasndole diferente nmero de parmetros con valores de nmeros y que devuelva el mayor de todos ello. Si algn parmetro no es numrico devuelve null. Por ejemplo: mayor(15,4,25,9) devolvera 25 mayor(15,4) devolvera 15

Pgina 48

PHP

mayor(15,4,25,9,"xx") devolvera el mensaje Error, todos los valores tienen que ser numricos

Funciones recursivas
Una funcin recursiva es aquella que se llama a si misma para resolverse. El proceso de llamadas recursivas siempre tiene que acabar en una llamada a la funcin que se resuelve de manera directa, sin necesidad de invocar de nuevo la funcin. Esto ser siempre necesario, para que llegue un momento que se corten las llamadas reiterativas a la funcin y no se entre en un bucle infinito de invocaciones. Un ejemplo tpico de recursividad sera la funcin factorial. El factorial es una funcin matemtica que se resuelve multiplicando ese nmero por todos los nmeros naturales que hay entre l y 1. Por ejemplo, factorial de 4 es igual a 4 * 3 * 2 * 1. Si nos fijamos, para el ejemplo de factorial de 4 (factorial se expresa matemticamente con un signo de admiracin hacia abajo, como 4!), se puede resolver como 4 * 3! (4 * factorial de 3). Es decir, podemos calcular el factorial de un nmero multiplicando ese nmero por factorial de ese nmero menos 1. n! = n * (n-1)! En el caso de la funcin factorial, tenemos el caso bsico que factorial de 1 es igual a 1. As que lo podremos utilizar como punto de ruptura de las llamadas recursivas.

ejer047.html y ejer047.php
Se trata de hacer un script PHP que utilice una funcin recursiva para calcular el factorial de un nmero que recibe de un formulario. Para todo nmero natural n, se llama n factorial al producto de todos los naturales desde 1 hasta n: 5!= 1 x 2 x 3 x 4 x 5 = 120 Se define 0! = 1 Ejer047.html Ejer047.php

11. Funciones de fecha y hora


checkdate Validar una fecha gregoriana date_add Alias de DateTime::add date_create_from_format Alias de DateTime::createFromFormat date_create Alias de DateTime::__construct date_date_set Alias de DateTime::setDate date_default_timezone_get Obtiene la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script date_default_timezone_set Establece la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script date_diff Alias de DateTime::diff date_format Alias de DateTime::format date_get_last_errors Alias de DateTime::getLastErrors date_interval_create_from_date_string Alias de DateInterval::createFromDateString date_interval_format Alias de DateInterval::format date_isodate_set Alias de DateTime::setISODate date_modify Alias de DateTime::modify date_offset_get Alias de DateTime::getOffset date_parse_from_format Obtiene informacin de una fecha dada formateada de acuerdo al formato especificado

Pgina 49

PHP
time int time ( void ) Devuelve el momento actual medido como el nmero de segundos desde la poca Unix (1 de Enero de 1970 00:00:00 GMT). date_default_timezone_get Obtiene la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script date_default_timezone_set Establece la zona horaria predeterminada usada por todas las funciones de fecha/hora en un script. Para Espaa date_default_timezone_set('Europe/Paris'); date_parse Devuelve una matriz asociativa con informacin detallada acerca de una fecha dada date_sub Alias de DateTime::sub date_sun_info Devuelve una matriz con informacin sobre la puesta/salida del sol y el comienzo/final del crepsculo date_sunrise Devuelve la hora de la salida del sol de un da y ubicacin dados date_sunset Devuelve la hora de la puesta de sol de un da y ubicacin dados date_time_set Alias de DateTime::setTime date_timestamp_get Alias de DateTime::getTimestamp date_timestamp_set Alias de DateTime::setTimestamp date_timezone_get Alias de DateTime::getTimezone date_timezone_set Alias de DateTime::setTimezone date Dar formato a la fecha/hora local getdate Obtener informacin de la fecha/hora gettimeofday Obtener la hora actual gmdate Formatear una fecha/hora GMT/UTC gmmktime Obtener la marca de tiempo Unix para una fecha GMT gmstrftime Formatear una fecha/hora GMT/UTC segn la configuracin regional idate Formatea una fecha/hora local como un entero localtime Obtiene fecha y hora local microtime Devuelve la fecha Unix actual con microsegundos mktime Obtener la marca de tiempo Unix de una fecha strftime Formatea una fecha/hora local segn la configuracin regional strptime Analiza una fecha/hora generada con strftime strtotime Convierte una descripcin de fecha/hora textual en Ingls a una fecha Unix time Devuelve la fecha Unix actual timezone_abbreviations_list Alias de DateTimeZone::listAbbreviations timezone_identifiers_list Alias de DateTimeZone::listIdentifiers timezone_location_get Alias de DateTimeZone::getLocation timezone_name_from_abbr Devuelve el nombre de la zona horaria desde su abreviatura timezone_name_get Alias de DateTimeZone::getName timezone_offset_get Alias de DateTimeZone::getOffset timezone_open Alias de DateTimeZone::__construct timezone_transitions_get Alias de DateTimeZone::getTransitions timezone_version_get Obtiene la versin de la base de datos timezonedb

date Dar formato a la fecha/hora local string date ( string $format [, int $timestamp = time() ] ) format

Pgina 50

PHP
El formato de la fecha de salida tipo string. Vea las opciones de formato ms abajo. Tambin hay varias constantes de fecha predefinidas que pueden usarse en su lugar, as por ejemplo DATE_RSS contiene la cadena de formato 'D, d M Y H:i:s'. Los siguientes caracteres estn reconocidos en el parmetro de cadena format Ejemplo de valores Carcter format Descripcin devueltos Da ----d 01 a 31 Da del mes, 2 dgitos con ceros iniciales D Mon hasta Sun Una representacin textual de un da, tres letras j 1 a 31 Da del mes sin ceros iniciales l ('L' minscula) Sunday hasta Saturday Una representacin textual completa del da de la semana 1 (para lunes) hasta 7 Representacin numrica ISO-8601 del da de la semana N (aadido en PHP 5.1.0) (para domingo) st, nd, rd o th. Funciona S Sufijo ordinal ingls para el da del mes, 2 caracteres bien con j 0 (para domingo) hasta 6 w Representacin numrica del da de la semana (para sbado) z 0 hasta 365 El da del ao (comenzando por 0) Semana ----Nmero de la semana del ao ISO-8601, las semanas comienzan Ejemplo: 42 (la 42 W en lunes (aadido en PHP 4.1.0) semana del ao) Mes ----Una representacin textual completa de un mes, como January o F January hasta December March m 01 hasta 12 Representacin numrica de una mes, con ceros iniciales M Jan hasta Dec Una representacin textual corta de un mes, tres letras n 1 hasta 12 Representacin numrica de un mes, sin ceros iniciales t 28 hasta 31 Nmero de das del mes dado Ao ----L 1 si es bisiesto, 0 si no. Si es un ao bisiesto Nmero de ao ISO-8601. Esto tiene el mismo valor que Y, excepto que si el nmero de la semana ISO (W) pertenece al ao o Ejemplos: 1999 o 2003 anterior o siguiente, se usa ese ao en su lugar. (aadido en PHP 5.1.0) Y Ejemplos: 1999 o 2003 Una representacin numrica completa de un ao, 4 dgitos y Ejemplos: 99 o 03 Una representacin de dos dgitos de un ao Hora ----a am o pm Ante meridiem y Post meridiem en minsculas A AM o PM Ante meridiem y Post meridiem en maysculas B 000 hasta 999 Hora Internet g 1 hasta 12 Formato de 12 horas de una hora sin ceros iniciales G 0 hasta 23 Formato de 24 horas de una hora sin ceros iniciales h 01 hasta 12 Formato de 12 horas de una hora con ceros iniciales H 00 hasta 23 Formato de 24 horas de una hora con ceros iniciales i 00 hasta 59 Minutos, con ceros iniciales s 00 hasta 59 Segundos, con ceros iniciales u Ejemplo: 654321 Microsegundos (aadido en PHP 5.2.2) Zona Horaria ----Ejemplos: UTC, GMT, e Identificador de zona horaria (aadido en PHP 5.1.0) Atlantic/Azores

Pgina 51

PHP
Los siguientes caracteres estn reconocidos en el parmetro de cadena format Ejemplo de valores Carcter format Descripcin devueltos 1 si est en horario de I (i mayscula) Si la fecha est en horario de verano o no verano, 0 si no. O Ejemplo: +0200 Diferencia de la hora de Greenwich (GMT) en horas Diferencia con la hora de Greenwich (GMT) con dos puntos entre P Ejemplo: +02:00 horas y minutos (aadido en PHP 5.1.3) T Ejemplos: EST, MDT ... Abreviatura de la zona horaria ndice de la zona horaria en segundos. El ndice para zonas Z horarias al oeste de UTC siempre es negativo, y para aquellas al -43200 hasta 50400 este de UTC es siempre positivo. Fecha/Hora ----Completa 2004-02c Fecha ISO 8601 (aadido en PHP 5) 12T15:19:21+00:00 Ejemplo: Thu, 21 Dec r Fecha con formato RFC 2822 2000 16:01:07 +0200 Segundos desde la poca Unix (1 de Enero del 1970 00:00:00 U Vea tambin time() GMT)

ejer048.html

ejer048_1.php

ejer048_2.php

mktime Obtener la marca de tiempo Unix de una fecha


<?php // Establecer la zona horaria predeterminada a usar. Disponible desde PHP 5.1 date_default_timezone_set('UTC'); // Imprime: July 1, 2000 is on a Saturday echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000)); // Imprime algo como: 2006-04-05T01:02:03+00:00 echo date('c', mktime(1, 2, 3, 4, 5, 2006)); ?>

ejer049.html

ejer049.php

Pgina 52

PHP
12. Ficheros
Lo primero que vamos a hacer es escribir un sencillo fichero de texto. Lo abriremos, escribiremos un par de lneas dentro de l y luego lo cerraremos. El cdigo que realiza esto se puede ver a continuacin.
<? php //Abrimos el fichero en modo de escritura $fichero = fopen("fichero_prueba.txt","w"); //Escribimos la primera lnea dentro de l $string1 = "Esta es la primera lnea de texto".chr(13).chr(10); fputs($fichero,$string1); //Escribimos la segunda lnea de texto $string2 = "Y esta es la segunda lnea de texto".chr(13).chr(10); fputs($fichero,$string2); //Cerramos el fichero fclose($fichero); ?>

Fijmonos en la siguiente lnea:


$fichero = fopen("fichero_prueba.txt","w");

La funcin fopen sirve para abrir un fichero en un modo. Los modos pueden ser seis y son los siguientes. Adems de listarlos, explicar las diferencias (no siempre tan obvias), al respecto de ellos.
Modo de apertura r r+ w w+ a a+ Qu significa Modo de solo lectura. Se abre el fichero y el cursor se coloca al principio del mismo, permitiendo leerlo hasta el final. Modo de lectura/escritura. Se abre el fichero y el cursor se coloca al principio del mismo,permitiendo leer o escribir en el fichero. Modo de solo escritura. Se crea el fichero si no existiese, y, si existe, se borra todo su contenido, se sita el cursor al principio del fichero permitiendonos escribir. Modo de escritura/lectura. Si el fichero no existe, se crea, y, si existiese, se borra todo su contenido, se sita el cursor al principio del fichero permitindonos escribir y leer. Modo de aadido. Abre el fichero, sita el cursor al final del mismo y permite escribir. Si el fichero no existe, lo crea, pero, en caso de existir, no borra su contenido. Modo de aadido/lectura. Sita el cursor al final del fichero y permite escribir y leer. Si el fichero no existe, lo crea, pero, si existe, no borra su contenido.

As pues, estos son los seis modos de abrir un fichero. Vamos ahora a ver un ejemplo en cdigo del uso de los mismos. El siguiente script va a hacer las siguientes tareas: Crear un fichero y escribir en l dos lneas de texto. Abrir el fichero de nuevo, esta vez en modo aadido, y escribir otras dos lneas.

escribir2.php
<?php //Abrimos el fichero en modo de escritura $fichero = fopen("fichero_prueba.txt","w"); //Escribimos la primera lnea dentro de l $string1 = "Esta es la primera lnea de texto".chr(13).chr(10); fputs($fichero,$string1);

Pgina 53

PHP
//Escribimos la segunda lnea de texto $string2 = "Y esta es la segunda lnea de texto".chr(13).chr(10); fputs($fichero,$string2); //Cerramos el fichero fclose($fichero); //Volvemos a abrir el fichero, esta vez en modo de aadir $fichero = fopen("fichero_prueba.txt","a"); //Aadimos la tercera lnea de texto fputs($fichero,"Esta es la tercera lnea, aadida con modo \"a\"".chr(13).chr(10)); //Aadimos la cuarta lnea de texto fputs($fichero,"Esta es la cuarta lnea, aadida con modo \"a\"".chr(13).chr(10)); //Cerramos el fichero fclose($fichero); ?>

Como podis comprobar si abrs el fichero recin creado, ste contiene cuatro lneas, dos de ellas escritas con modo "w" y otras dos con modo "a". Vamos a ver dos funciones muy tiles para leer ficheros de texto: fgets() y feof(). fgets() lee una lnea del fichero de texto cada vez. feof() indica si se ha alcanzado el final del fichero.

Para ver como funcionan, crearemos un script que leer el fichero que hemos creado con los dos scripts anteriores.

leer.php
<?php //Abrimos el fichero en modo lectura $fichero = fopen("fichero_prueba.txt","r"); //Hasta que no lleguemos al final del fichero while(!feof($fichero)){ //Capturamos 4096 caracteres dentro de la lnea, //o menos si hay un retorno de carro antes $buffer = fgets($fichero,4096); //Escribimos el texto, aadiendo <br/> detrs echo $buffer."<br/>"; } //Cerramos el fichero fclose($fichero); ?>

Como vis, este script lee el fichero de texto lnea a lnea y lo va mostrando en el navegador. La funcin feof() devuelve TRUE cuando ha llegado al final del fichero. fgets(), va, pues, leyendo lnea a lnea y almacenndolo en una variable llamada $buffer. ejer050.html ejer050.php

Pgina 54

PHP
ejer051.html ejer051.php

ejer052.php
Un contador de visitas. Cada vez que se accede a la pgina se incrementa en 1.

ejer053.php
Un contador de visitas con imgenes de nmeros.

13. Bases de datos


Para ver este tema crearemos una base de datos que llamada demo. Dentro crearemos un tabla llamada empresa la cual tendr los siguientes campos: idemp, nombre, direccion, telefono, imagen. Seguidamente les dejo el script SQL para crear esta tabla.

use demo; #---------------------------# Table structure for empresa #---------------------------CREATE TABLE `empresa` ( `idemp` int(11) NOT NULL auto_increment, `nombre` varchar(180) NOT NULL default '', `direccion` varchar(180) NOT NULL default '', `telefono` int(8) NOT NULL default '0', `imagen` varchar(50) NOT NULL default '', PRIMARY KEY (`idemp`) ); #---------------------------# Records for table empresa #---------------------------insert into empresa values (4, 'Pesacon', 'Jr. Los Astrnomos Mz. C 11 Lt. 13', 3872056, 'b55dd5_001048 balanzas pesacon.jpg'), (46, 'Quipu Digital', 'Carret. Central Km. 21, 730', 3584531, '424cce_001040 internet quipu digital.jpg'), (13, 'Courier Cristiano Jeshua', 'Jr. Risso 538', 96464860, 'd621a7_001103 courier jeshua.jpg'), (17, 'Serv. Ledesma SAC', 'Prolg. Iquitos 2200', 2659006, 'ledesma.jpg'), (18, 'Sonido Profesional Arriola', 'Alicia Alarcn 400', 4820496, '7a88d4_001416 equipos de sonido arriola.jpg'),

Pgina 55

PHP
(25, 'Juegos Emperatriz', 'Teodoro Crdenas 790, Sta. Beatriz', 4714603, 'fc0c9b_002216 juego recreativos.jpg'), (27, 'Stockholm Hipermedia S.A.', 'Los Calderos 140, Urb. Vulcano', 3494222, '898810_001044 muebles stockhom.jpg'), (28, 'Notaria Beatriz Zevallos G.', 'Av. Tpac Amaru 782, 2 Piso', 4852526, 'd02fcf_001025 notaria giampietri.jpg'), (30, 'A & B Hidrosistemas SAC', 'Av. Toms Marsano 1265', 2710263, 'cb2dc7_002207 Hidrosistemas.jpg'), (33, 'Macro Work SAC', 'Calle La Habana 280', 4222122, 'a92b21_002003 macro word.jpg'), (36, 'Per Systems SA', 'Av. Arenales 2523', 4226322, '32f133_002086-perantivirus.jpg'), (37, 'Transporte Torre Fuerte', 'Calle Costa Azul Mz. B Lt. 16', 2511749, 'cdcd2d_002113 transporte torre fuerte 1.jpg'), (51, 'Global Medica', 'Jr. Pablo Bermudez 192', 4336470, '556cd1_001375 clinica global medica.jpg'), (39, 'Distribuidora Mesajil Hnos.', 'Jr. Caman 1163', 4239453, '9be658_002002 mesajil hnos s.a.c.jpg'), (55, 'Lima International School', 'Av. La Molina 1255, Sol de La Molina', 4790846, '2a5958_002213school tomorrow 3.jpg'), (59, 'Sandwiches Passatore', 'Jr. Toribio Seminario 696', 4508684, '46d48f_002208 sandwiches passatore.jpg'), (61, 'Publimedios', 'Av. Independencia 879, Huamanga', 312436, '9c6a82_002226 publicistas publimedios.jpg'), (63, 'AJEPER', 'Av. La Paz Lt.30, Sta. Mara de Huachipa', 3711812, 'a31ad0_gaseosas ajeper 001404.jpg');

Conectando PHP y MySQL


Para obtener los datos desde MySQL necesitamos una conexin (una forma de enlazar o comunicarse), la cual nos permitir extraer datos de la misma. Para ello PHP tiene una serie de funciones exclusivamente para interactuar con mysql. Entonces para la conexin utilizaremos la funcin mysql_connect y luego mysql_select_db el cual nos permite definir a que base de datos del servidor deseamos conectarnos. mysql_connect - Abre una conexin al servidor MySQL mysql_connect(servidor, usuario, clave) Devuelve un identificador de enlace a MySQL en caso de xito o FALSE en caso de error. mysql_select_db - Establece la base de datos activa en el servidor asociado con el identificador de enlace especificado. Cada llamada posterior a mysql_query() ser ejecutada en la base de datos activa. bool mysql_select_db ( string $database_name [, resource $link_identifier ] ) o $database_name es la base de datos seleccionada o $link_identifier - La conexin MySQL. Si el identificador de enlace no se especifica, el ltimo enlace abierto por mysql_connect() es asumido. Devuelve TRUE en caso de xito o FALSE en caso de error.

1. $conexion = mysql_connect("localhost", "root", ""); 2. mysql_select_db("demo", $conexion);

Obteniendo registros de la Base de Datos


Una vez que tenemos una conexin lo siguiente es extraer los datos, esto lo hacemos enviando consultas SQL mediante la funcin mysql_query. Tambin obtenemos el numero total de registros devueltos por nuestra consulta. mysql_query Enviar una consulta MySQL resource mysql_query ( string $query [, resource $link_identifier ] ) o string $query - una consulta SQL o $link_identifier la conexin MySQL Valores devueltos

Pgina 56

PHP
o o Para SELECT, SHOW, DESCRIBE, EXPLAIN y otras sentencias que retornan un recordset, mysql_query() retorna un resource en caso de xito, o FALSE en caso de error. Para otros tipos de sentencias SQL, tales como INSERT, UPDATE, DELETE, DROP, etc, mysql_query() retorna TRUE en caso de xito o FALSE en caso de error.

mysql_num_rows Obtener el nmero de filas de un resultset int mysql_num_rows ( resource $result ) o result - El resultado resource que est siendo evaluado. Este resultado proviene de una llamada a mysql_query(). Devuelve el nmero de filas de un resultset en caso de xito y FALSE en caso de error.

3. $consulta = "SELECT * FROM empresa ORDER BY nombre ASC"; 4. $resultado = mysql_query($consulta, $conexion); 5. $totEmp = mysql_num_rows($resultado);

Mostrando los resultados.


Finalmente mostramos los resultados obtenidos de nuestra consulta, para ello extraemos cada resultado utilizando la funcin mysql_fetch_assoc la cual devuelve una matriz asociativa utilizando los nombres de los campos de la tabla. mysql_fetch_assoc Recupera una fila de resultado como un array asociativo array mysql_fetch_assoc ( resource $result ) o result - El resultado resource que est siendo evaluado. Este resultado proviene de una llamada a mysql_query(). Devuelve un array asociativo de cadenas que corresponde a la fila recuperada, o FALSE si no hay ms filas disponibles.

6. if ($totEmp> 0) { 7. while ($rowEmp = mysql_fetch_assoc($resultado)) { 8. echo "<strong>".$rowEmp['nombre']."</strong><br>"; 9. echo "Direccion: ".$rowEmp['direccion']."<br>"; 10. echo "Telefono: ".$rowEmp['telefono']."<br><br>"; 11. } 12. }

ejer054.php
Una vez creada la base de de datos demo con el scipt SQL proporcionado ms arriba, copia las 12 lneas de cdigo vistas en el ejemplo en un script PHP y ejectalo para comprobar el resultado.

Pgina 57

PHP
ejer055.html ejer055.php

ejer056.html

ejer056_1.php

ejer056_2.php

ejer057.html

ejer057.php

ejer058.html

ejer058_1.php

ejer058_2.php El botn Continuar de todos los formularios del ejercicio dirige el control al formulario ejer058.html

Pgina 58

PHP
Crear la base de datos ASIR con estas tres tablas: Alumnos: nmatricula
1 2 3 4

Asignaturas: nombre
Pepe Garca Alicia Alarcn Rosa Domnguez Julio Olmedo

telefono
983111000 983222000 983333000 983444000

Cdigo
1 2 3 4 5

Nombre
Implantacin de sistemas operativos Planificacin y administracin de redes Fundamentos de hardware Implantacin de aplicaciones web Servicios de red e Internet

Curso
1 1 1 2 2

Notas: nmatricula
1 1 1 2

Notas: cdigo
1 2 3 1

nota
9 7 8 5

nmatricula
2 2 3 3

cdigo
2 3 4 5

nota
4 4 7 6

ejer059.php
Una vez creada la base de datos ASIR realizar un script PHP que muestre un listado como el que sigue donde se pueden ver las notas de todos los alumnos.

Pgina 59

PHP

14. Programacin orientada a objetos


La programacin orientada a objetos es una metodologa de programacin avanzada y bastante extendida, en la que los sistemas se modelan creando clases, que son un conjunto de datos y funcionalidades. Las clases son definiciones, a partir de las que se crean objetos. Los objetos son ejemplares de una clase determinada y como tal, disponen de los datos y funcionalidades definidos en la clase.

Clases
Una clase es un conjunto de variables, llamados atributos, y funciones, llamadas mtodos, que trabajan sobre esas variables. Las clases son, al fin y al cabo, una definicin: una especificacin de propiedades y funcionalidades de elementos que van a participar en nuestros programas. Por ejemplo, la clase "Caja" tendra como atributos caractersticas como las dimensiones, color, contenido y cosas semejantes. Las funciones o mtodos que podramos incorporar a la clase "caja" son las funcionalidades que deseamos que realice la caja, como introduce(), muestra_contenido(), comprueba_si_cabe(), vaciate()... Las clases en PHP se definen de la siguiente manera:
<? class Caja{ var $alto; var $ancho; var $largo; var $contenido; var $color; function introduce($cosa){ $this->contenido = $cosa; } function muestra_contenido(){ echo $this->contenido; } } //fin class ?>

En este ejemplo se ha creado la clase Caja, indicando como atributos el ancho, alto y largo de la caja, as como el color y el contenido. Se han creado, para empezar, un par de mtodos, uno para introducir un elemento en la caja y otro para mostrar el contenido. Si nos fijamos, los atributos se definen declarando unas variables al principio de la clase. Los mtodos se definen declarando funciones dentro de la clase. La variable $this, utilizada dentro de los mtodos la explicaremos un poco ms abajo.

Objetos
Las clases solamente son definiciones. Si queremos utilizar la clase tenemos que crear un ejemplar de dicha clase, lo que corrientemente se le llama instanciar un objeto de una clase. $micaja = new Caja; Con esto hemos creado, o mejor dicho, instanciado, un objeto de la clase Caja llamado $micaja. $micaja->introduce("algo"); $micaja->muestra_contenido(); Con estas dos sentencias estamos introduciendo "algo" en la caja y luego estamos mostrando ese contendido en el texto de la pgina. Nos fijamos que los mtodos de un objeto se llaman utilizando el cdigo "->". nombre_del_objeto->nombre_de_metodo() Para acceder a los atributos de una clase tambin se accede con el cdigo "->". De esta forma: nombre_del_objeto->nombre_del_atributo

Pgina 60

PHP

La variable $this
Dentro de un mtodo, la variable $this hace referencia al objeto sobre el que invocamos el mtodo. En la invocacin $micaja->introduce("algo") se est llamando al mtodo introduce sobre el objeto $micaja. Cuando se est ejecutando ese mtodo, se vuelca el valor que recibe por parmetro en el atributo contenido. En ese caso $this->contenido hace referencia al atributo contenido del objeto $micaja, que es sobre el que se invocaba el mtodo.

ejer068.html y ejer068.php
Se trata de hacer un script PHP que cree una clase celda con las siguientes propiedades: Alineacin vertical del contenido Alineacin horizontal del contenido Color de fondo Tipo de letra Tamao de la letra Color del texto Y con el siguiente mtodo: pinta_celda: que mandar a la pgina el cdigo HTML y CSS para dibujar la celda

Una vez creada la clase deber dibujar una tabla con cuatro objetos celdas que tendrn las propiedades que le indique el formulario.

Ejer068.html

Ejer068.php

Pgina 61