59
IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes y Ejercicios

IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

  • Upload
    dangnga

  • View
    219

  • Download
    1

Embed Size (px)

Citation preview

Page 1: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

IMPLANTACION

DE

APLICACIONES

WEB

(IAW)

Apuntesy

Ejercicios

Page 2: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Implantación de aplicaciones Web

PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador para pruebas), para ejecutar php se usa el programa XAMPP, XAMPP viene de LAMP y WAMP.

• LAMP: Linux – Apache- MySql – PHP• WAMP: Windows – Apache- MySql – PHP• XAMPP: Windows/Linux – Apache – MySql – PHP – Pearl

php se ejecuta dentro del servidor y cuando un ordenador hace petición de una pagina web que contiene php, este se ejecuta en el propio servidor y se envía como resultado dentro de las sentencias html que si interpreta el navegador del ordenador que ha solicitado la pagina web.

Tras instalar XAMPP hay que activar Apache (xampp-control.exe) y se guardan los archivos php dentro de una carpeta dentro de la carpeta \xampplite\htdosc\php_juan

En el navegador web se pondrá la ruta de la carpeta que contiene los archivos .phphttp://localhost/php_juan/

Si no se Activa el Apache puede ser por culpa de algún servicio, en caso de tener Vmware instalado, en este hay que desactivar en Edit – Preferences la opción Virtual machine sharing en 'disable'.

Para implementar php dentro de un html, se indica <?php al principio y una vez finalizadas las sentencias se finaliza con ?>, seria algo asi <?php ...sentencias.... php ?>, cada sentencia se termina con un ; , el siguiente es un ejemplo que escribe en pantalla "Mi primer programa php \n", el añadido \n es un salto de linea.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> </title> </head> <body> <p>Ejercicio 1 PHP</p>

<?php print "Mi primer programa php \n"; ?>

</body> </html>

Para imprimir un texto en pantalla se puede utilizar print o echo.

Para definir variables en php, se indica con $ seguido del nombre de la variable y con un = tras el cual se pone a que equivale esa variable, puede ser un numero entero, una cadena o string, etc., un ejemplo de diferentes variables:<?php

$var_ent = 1927; $var_real = 3.14159; $var_string = 'Juan'; $var_bool1 = true; $var_bool2 = false; print "Variable entera $var_ent <br>"; print "Variable real $var_real <br>"; print "Variable de cadena $var_string <br>"; print "Variable booleana verdadero $var_bool1 <br>"; print "Variable booleana falso $var_bool2 ";

?>

Page 3: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

La salida formateada concatena un texto con una variable.<?php

$pi = 3.14159265; $lc = 2*3*$pi; print "La longitud de la circunferencia de radio 3 es: 2*3*$pi que es"; print 2*3*$pi; print "<br> La longitud de la circunferencia de radio 3 es: $lc";

?>

Si la variable va entre “ ” (comillas dobles) junto con un texto, lo que se presenta es el contenido de la variable, pero si va entre ' ' (Comillas simples) entonces se presenta como variable, si la variable se llama $pi aparecerá $pi y no el contenido de la variable.

Concatenación de texto y variables.<?php

$precio=3.95;$tasa=0.21;$iva=$precio*$tasa;$total=$precio+$iva;$nombre='Jon';$dominio='@elorrieta,com';$email=$nombre.$dominio;print 'El iva asciende a '.$iva; /*print "El iva asciende a $iva \n";*/print "<br> \n";print 'El total asciende a '.$total;print "<br> \n";print $email;print "\n";

?>La concatenación es con un . (punto) entre un texto y la variable.

Concatenación con mascaras de Edición.• Ajustar el numero de decimales con %.xf donde en lugar de x se pone el numero de decimales, por

ejemplo para 2 decimales seria %.2f y un ejemplo seria:• printf ('El total asciende a %.2f', $total); /*Salida formateada con una mascara de edicion a 2

decimales de 1 variable*/• printf ('Total %.2f iva %.2f', $total, $iva); /*Salida formateada con una mascara de edicion a 2

decimales de 2 variable*/• Para un ancho mínimo y carácter de relleno %xyd donde x es el carácter de relleno, y es el ancho o el

numero de caracteres mínimo que ocupa, así si ponemos %02d y el dato que va es 2, le colocara un 0 delante, si el dato es 12 como ocupa el mínimo indicado lo presenta tal cual y si fuera mayor lo presenta tal cual, un ejemplo seria:• printf ('Fecha: %02d/%02d/%d', $dia,$mes,$anio); /*quiero que me aparezca 02/09/1987*/

• Para forzar a poner un entero con el signo se usa %+d, un ejemplo seria:• printf ('El ordenador opera entre %+d y %+d grados celsius', $min,$max); /*quiero que aparezca

el simbolo +*/

Con printf hacemos una salida formateada, se pueden concatenar varias variables, como se muestra en el ejemplo, en el caso de 2 variables el primer texto junto con %.2f (%.2f es una mascara de edición que esta indicada por el símbolo % y .2f indica que el numero decimal al que se haga referencia salga con solo 2 decimales) hace referencia a la primera variable $total.

Page 4: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Método de envió de datos, modo POST y GET.➢ POST Para recoger muchos datos de un formulario (por ejemplo una casilla de comentarios).➢ GET Para recoger pocos datos de un formulario (por ejemplo valores numéricos, palabras, etc.)

Para introducir texto, un formulario, etc. sin tener que meter continuamente print por cada linea dentro del php, se utiliza el modo bloque con print <<<DATOS contenido DATOS; , de la siguiente manera:

<?phpprint <<<DATOSaquí el contenido (una tabla, un formulario, etc., sin tener que estar continuamente usando print)

DATOS;?>

Nota: DATOS: debe ir colocado completamente al lado izquierdo, si no falla el programa.

Comparación de las dos formas de hacerlo, para ver la diferencia:<!-- forma estandar -->

<?php print '<form action="mailto:[email protected]" method="post">'; print "<p>Ordenando numeros</p>"; print "<p>Teclea un numero:"; print '<input type="text" name="numero1" size="4">'; print "Teclea otro numero:"; print '<input type="text" name="numero2" size="4"> </p>'; print '<input type="submit" value="Enviar numeros">'; print "</form>"; ?>

Ejemplo ajuste numero decimales:

<?php

$precio=3.95;

$tasa=0.21;

$iva=$precio*$tasa;

$total=$precio+$iva;

$nombre='Jon';

$dominio='@elorrieta,com';

$email=$nombre.$dominio;

print 'El iva asciende a '.$iva; /*print "El iva asciende a $iva \n";*/

print "<br> \n";

printf ('El total asciende a %.2f', $total);

print "<br> \n";

printf ('Total %.2f iva %.2f', $total, $iva);

print "<br> \n";

print $email;

print "\n";

?>

Ejemplo ancho mínimo:

<?php

$dia=2;

$mes=9;

$anio=1987;

printf ('Fecha: %02d/%02d/%d', $dia,$mes,$anio);

print "\n";

?>

Ejemplo poner signo:

<?php

$min=-30;

$max=40;

$anio=1987;

printf ('El ordenador opera entre %+d y %+d grados celsius', $min,$max);

print "\n";

?>

Page 5: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

<!-- forma bloque --> <?php print <<<DATOS <form action="mailto:[email protected]" method="post">

<p>Ordenando numeros</p> <p>Teclea un numero: <input type="text" name="numero1" size="4"> Teclea otro numero: <input type="text" name="numero2" size="4"> </p> <input type="submit" value="Enviar numeros">

</form> DATOS;

?>

Tratamiento de un formulario con php y estructuras alternativas con IF

Ejercicio de muestra en el que se reciben 2 números y se entrega una respuesta con ellos ordenados.

Organigrama:

“El orden correcto es$segundo, $primero

“El orden correcto es$primero, $segundo

$primero<

$segundo

Recibidos los valores$primero y $segundo

$primero ← $_GET['n1']$segundo ← $_GET['n2']

Inicio

FIN

NO SI

Page 6: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

HTML, Contenido del fichero: 10_ordenar1.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Ordenando numeros </title> </head> <body>

<form action="10_ordenar1.php" method="GET"> <p>Ordenando numeros</p>

<p>Teclea un numero: <input type="text" name="n1" size="4"> Teclea otro numero: <input type="text" name="n2" size="4"> </p> <input type="submit" value="Enviar numeros">

</form> </body> </html>

PHP, Contenido fichero: 10_ordenar1.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Ordenando numeros </title> </head> <body>

<?php $primero=$_GET['n1']; $segundo=$_GET['n2']; print "<p>Recibidos los valores $primero y $segundo </p>"; if($primero < $segundo) { print "<p>El orden correcto es $primero, $segundo</p>"; }

else { print "<p>El orden correcto es $segundo, $primero</p>"; }

?> </body> </html>

El mismo ejercicio utilizando POST es igual con la salvedad que donde pone GET se pone POST.

Ademas en la ventana del navegador aparecen cosas diferentes en la ventanita del navegador al devolver la respuesta según se envié con POST o GET:http://localhost/php_juan/10_ordenar1.php?n1=45&n2=35 con GET sale arriba estohttp://localhost/php_juan/10_ordenar2.php con POST ya no sale lo que se envía

print_r() muestra información sobre una variable en una forma que es legible por humanos.print "<pre>".print_r($_GET,true)."</pre>";

Page 7: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Tratamiento de un formulario con php y estructuras repetitivas con WhileWhile (0 a n veces)

Ejemplo: Escribir los números del 1 al 10

Contenido fichero 12_while1.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura while </title> </head> <body>

<h2> Estructura While </h2><?phpprint"<pre>";; $cont=1; while($cont<=9)

{print ("$cont"." - ");$cont++;}

print ("$cont"); print "<br>Se ha acabado";print"</pre>";?>

</body></html>

“$cont”

$cont<=10

$cont ← 1

Inicio

FIN

NO

SI

$cont ++

While (condición)

{

Sentencias;

}

Page 8: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejemplo: Escribir los números del 1 hasta un numero aleatorio entre 1 y 100.

Contenido fichero 12_while2.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura while </title> </head> <body>

<h2> Estructura While </h2><?phpprint"<pre>"; $tope=rand(1,100); $cont=1; while($cont<$tope)

{print ("$cont"." - ");$cont++;}print "$cont";

print "<br><br>Se ha acabado";print"</pre>";?>

</body></html>

“$cont”

$cont<=

$tope

$cont ← 1

Inicio

FIN

NO

SI

$cont ++

$tope ← rand(1,100)

Page 9: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

El mismo que el anterior pero que los presente de 10 en 10.

Contenido fichero 12_while3.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura while </title> </head> <body>

<h2> Estructura While </h2><?phpprint"<pre>"; $tope=rand(1,100); $ini=1; print "El numero aleatorio es : $tope\n"; while($ini<$tope)

{printf ("%02d","$ini");if ($ini%10==0) { print ("\n"); } else

{print (" - "); }

$ini++; }printf ("%02d","$ini");

print "\n Se acabo";print"</pre>";?>

</body></html>

Page 10: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

While (1 a n veces)

Mismo ejercicio que el anterior pero con do while

Contenido fichero 13_do_while1.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura do while </title> </head> <body>

<h2> Estructura do while </h2><?phpprint"<pre>"; $tope=rand(1,100); $ini=1; print "El numero aleatorio es : $tope\n"; do { printf ("%02d","$ini"); if ($ini%10==0)

{print ("\n");}else { print (" - "); }

$ini++; }while($ini<$tope);

printf ("%02d","$ini"); print "\n Se acabo";print"</pre>";?>

</body></html>

For estructura de un bucle for es: for (expr1; expr2; expr3) sentencia

La primera expresión se ejecuta al principio del bucle, la expresión 2 se evalúa en cada pasada, si es verdadera el bucle continua si es falsa finaliza la ejecución del bucle, por cada pasada se ejecuta la expresión 3.

Ejemplo de uso del for.Empezando por 1 mostrar en pantalla todos los números hasta uno definido aleatoriamente.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura for </title> </head>

do

{

Sentencias;

}while (condición);

Page 11: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

<body> <?php $num=rand(1,100); print "<pre>\n"; print "El numero aleatorio es $num\n"; for($ini=1;$ini<=$num-1;$ini++) { printf("%02d",$ini); if ($ini%10==0)

print("\n"); else

print(" - "); } printf("%02d",$num); print ("\nSe acab&oacute;"); print "\n\t</pre>"; ?>

</body> </html>

Funciones de cadenas➢ number_format() Permite formatear un numero como nos convenga.

➢ Chr() Recibe un numero entero y devuelve el carácter correspondiente.

➢ str_rot13() Encriptacion sencilla de lo contenido entre ().

➢ md5() Encriptar en md5

➢ usort() Ordena el contenido de un array

➢ htmlentities($_GET[]) convierte todo a entidades al recuperar un texto con GET o POST

➢ strip_tags($_GET[]) elimina los tags (<,>) al recuperar un texto con GET o POST

Ejemplos de uso de las funciones de cadena:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Funciones de cadenas (string) </title> </head> <body>

<?php $valor1=123456567884567.3456; $valor2=200; $arr1=array("img1.png","img2.png","img10.png"); print "<b>Funciones de cadenas (String):</b>"; print "<br>".number_format($valor1,2,"'",".");/* formateo de numeros */ print "<br>Decimal = ".$valor2." ASCI = ".chr($valor2);/*devuelve el valor asci de un decimal entre 0 y 255*/ print "<br>La encriptacion str_rot13 de 'Juan' = ".str_rot13("Juan");/* Encriptacion sencilla */ print "<br>La encriptacion md5 de 'Juan' = ".md5("Juan");/* Encripta en formato md5*/ print "<br>funcion usort: ";usort($arr1,"strcmp");print_r($arr1);/* ordena contenido array*/ print "<br>funcion usort: ";usort($arr1,"strnatcmp");print_r($arr1);/* ordena contenido array natural*/ ?>

</body> </html>

Page 12: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

FuncionesBásicamente la idea de las funciones es definir una porción de código que utilizaremos mas de una vez en el programa. -> Si en vez de funciones usamos copy-paste y hay que cambiar algo, se nos puede olvidar una de las copias. -> Una ventaja adicional es que puedes usar la misma función en varios programas. -> Lo razonable es guardar las funciones en ficheros aparte y cargarlas en distintos documentos que las vayan a usar. En PHP definimos funciones con la palabra clave function.Ejemplo:function saludo()//Esta funcion se define aqui y lo que hace es imprimir Hola en color azul { print "<p style=\"color:blue\"> Hola </p>"; }

saludo(); // aqui se ejecuta la funcion invocandola

En PHP podemos cambiar la definición de una variable. incluso su "tipo". Sin embargo, si cambiamos la definición de la función y repetimos el nombre da error, solo se puede definir la función una vez con un único nombre.

Paso de parámetros a una función.<?php function cabecera($seccion) { print<<<CABECERA

<div id="cabecera"> <h1> Mi Empresa </h1> <h2> $seccion </h2> </div>

CABECERA; } cabecera("seccion"); //paso 'seccion' como parametro a la funcion y lo escribira en lugar de $seccion print "\t<p> Contenido pagina </p>\n"; pie(); ?>

Valores por defectoPodemos hacer que los parámetros tomen valores por defecto simplemente poniendo detrás del parámetro un igual y el valor por defecto.

function saludo($mensaje=”Hola”,$color="teal")

Llamada a la función indicando los valores• saludo ("Hola","#00ff00");//aqui usa los valores que hemos puesto • saludo ("Hola");//aqui como no se define color usa el puesto por defecto• saludo2 ("","blue");//Como $mensaje esta vacio no lo muestra • saludo2 ();//aqui usa los dos valores por defecto

Función que no devuelve nadaprint_r escribe en pantalla pero no devuelve lo que esperábamos, que es una cadena con el array bien escrito.

Page 13: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

ArraysUn array almacena valores a partir de la posición 0 en adelante.El formato es: $nombrearray=array(10,20,30,70); que guardaría los valores 10 para la posición 0, 20 para la posición 1, 30 para la posición 2 y 70 para la posición 3, un ejemplo gráfico:<?php $nombrearray=array(10,20,30,70);//array que contiene los valores 10, 20, 30 y 70 print "<pre>".print_r($nombrearray,true)."<pre>";?>El resultado es:

Se pueden añadir valores al array con $nombrearray[]=123 y añade a la siguiente posicion vacia (en este caso posición 4) el valor 123.<?php $nombrearray=array(10,20,30,70);//array que contiene los valores 10, 20, 30 y 70 $nombrearray[]=123; print "<pre>".print_r($nombrearray ,true)."<pre>";?>El resultado es:

Se pueden sustituir valores de un array con $nombrearray[8]=456 y sobrescribe el contenido de la posición 8 (en este caso vacia) con el valor 456.<?php $nombrearray=array(10,20,30,70);//array que contiene los valores 10, 20, 30 y 70 $nombrearray[8]=456; print "<pre>".print_r($nombrearray,true)."<pre>";?>

El resultado es:

Array(

[0] => 10[1] => 20[2] => 30[3] => 70

)

Array(

[0] => 10[1] => 20[2] => 30[3] => 70[4] => 123

)

Array(

[0] => 10[1] => 20[2] => 30[3] => 70[8] => 456

)

Page 14: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Los arrays se recorren con for, el siguiente ejemplo mostrara el contenido de $datos1 <?php $datos1=array(10,20,30,70,123); print "<ul>"; for($i=0;$i<count($datos1);$i++) {

print "<li>$i->$datos1[$i]</li>"; } print "</ul>"; ?>

El resultado es:

array_values devuelve todos los valores no vacíos de un array compactándolo e indexandolo numéricamente <?php $datos2=array(10,20,"pepe",70); $datos2[8]=456; $datos2=array_values($datos2); print "<pre>".print_r($datos2,true)."</pre>"; ?>

El resultado es:

foreach se emplea sobre todo para arrays asociativos<?php $datos2=array(10,20,"pepe",70); $datos2[8]=456; $datos2=array_values($datos2); print "<ul>";

• 0 => 10• 1 => 20• 2 => 30• 3 => 70• 4 => 123

Array(

[0] => 10[1] => 20[2] => pepe[3] => 70[8] => 456

)

Page 15: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

foreach($datos2 as $clave => $valor) /* $clave es lo que esta entre [] y $valor es lo que contiene o su valor */ {

print "<li>$clave->$valor</li>"; } print "</ul>"; ?>

El resultado es:

Ordenar arrays por sus valores (cuando son numéricos) con sort ($num)

Ordenar arrays por sus valores con asort ($mes) o sus claves con ksort ($mes)A la izquierda el resultado de un programa php con foreach que en base a un array crea una tabla con los meses y días de cada mes, en el centro con el uso de asort se ordenan los meses por cantidad de idas y a la izquierda con el uso de ksort de ordenan por nombre de mes.

Ver ejercicio 18_3Array_asociativo.php y 18_4Array_asociativo_ordenado.php

Arrays de dos dimensionesUn array de dos dimensiones tiene filas y columnas.

Según el ejemplo siguiente, cada columna es un array independiente.Ejemplo array asociativo de 1 dimensión, ponemos:$usuarios-nombre=array('IN2AR3_01' => "Alberdi, Kepa", 'IN2AR3_02' => "Alori, Pepe", …...)

• 0 => 10• 1 => 20• 2 => pepe• 3 => 70• 4 => 456

Page 16: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

$usuarios-email=array('IN2AR3_01' => "[email protected]", 'IN2AR3_02' => "[email protected]", …..)

De lo que se trata, es de relacionar varios arrays entre si

Ejemplo array asociativo de 2 dimensión, ponemos:$usuarios=array('IN2AR3_01' => array ('nombre' => "Alberdi, Kepa", 'email' => "[email protected]"), 'IN2AR3_02' => array ('nombre' => "Alori, Pepe", 'email' => "[email protected]"), …......)

usuarios nombreIN2AR3_01IN2AR3_02

IN2AR3_25

Columnas ↓ ↓

emailAlberdi, Kepa [email protected]…............ …............

usuarios nombreIN2AR3_01IN2AR3_02

IN2AR3_25

emailAlberdi, Kepa [email protected]…............ …............

Page 17: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejemplo de PHP que contiene un poco de todo

Contenido del fichero 21_1Ejercicio_tipo_examen.php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Adivina adivinanza</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > </head> <body>

<?php //llamo al fichero que contiene el array asociativo require_once("21_1paises_capitales.php");

//con array_keys asigno a $paises los paises con un indice, [0]='Albania' , [1]='Alemania' ..... $paises=array_keys($paises_y_capitales);

//con array_values asigno a $capitales las capitales con un indice, [0]='Tirana' , [1]='Berlin' ..... $capitales=array_values($paises_y_capitales); //ahora tengo un mismo numero de indice para el pais y su capital en cada array de claves numericas //la siguiente linea si la descomento me muestra como es el array antes de ordenarlo //print "<pre>".print_r($capitales,true)."</pre>"; //con asort ordeno las capitales dentro del array pero manteniendo el numero de indice que le corresponde asort($capitales); //la siguiente linea si la descomento me muestra como queda el array //print "<pre>".print_r($capitales,true)."</pre>"; //Genero un numero aleatorio para $pais que correspondera un numero de indice del array $paises $pais=rand(0,count($paises)-1); //Creo el formulario que me pregunta por la capital de un pais y debo escoger de un desplegable /* <input type="hidden" value="$pais" name="pais"> es una caja oculta que esta en el formulario, pero que no se ve, donde queda registrado el numero calculado para $pais y que se enviara como dato tambien */ //Hago el formulario y creo un bloque para poder escribir esta parte del programa tal cual se haria en html //aqui tambien hago la llamada al programa php que comprobara si se ha acertado la pregunta al pulsar el boton de comprobar print <<<FORMULARIO <form action="21_1procesar.php" method="POST"> <fieldset> <legend>Adivina adivinanza</legend> <input type="hidden" value="$pais" name="pais"> FORMULARIO;

Page 18: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

//sigo componiendo el formulario con la pregunta, el desplegable y el boton de enviar //Hago la pregunta y selecciono del array el pais al que hace referencia el numero de indice generado print "<p>&iquest;Cu&aacute;l es la capital de ".htmlentities($paises[$pais])."?</p>\n"; //Creo la casilla de seleccion y el contenido lo genero recorriendo el array de capitales con un foreach print "\t\t<select name=\"capital\">\n"; foreach($capitales as $indice => $ciudad) { print "\t\t\t<option value=\"$indice\">".htmlentities($ciudad)."</option>\n"; } print "\t\t</select>\n"; //pongo boton de comprobar que al pulsarlo realizara la llamada al programa que determina si se ha acertado <form action=....... print "<input type=\"submit\" value=\"Comprobar\">\n"; print "</fieldset>\t</form>\n"; ?> </body> </html>

Y así es como se muestra:

Page 19: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

El programa que procesa los datos y da el resultado es este 21_1procesar.php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Adivina adivinanza</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <style type="text/css"> .bien { color: ##0066CC; font-weight: bold; } .mal { color: #CC6600; font-weight: bold; } .resaltado { font-size: 20px; font-weight: bold; } .resalte2 { color: #CC6600; background-color: #FFFFCC; font-weight: bold; } .resalte1 { background-color: #CCCCFF; font-weight: bold; } </style> </head> <body>

<?php

//cargo el array que relaciona paises y capitales require_once("21_1paises_capitales.php");

//con array_keys asigno a $paises los paises con un indice, [0]='Albania' , [1]='Alemania' ..... $paises=array_keys($paises_y_capitales);

//con array_values asigno a $capitales las capitales con un indice, [0]='Tirana' , [1]='Berlin' ..... $capitales=array_values($paises_y_capitales);

//recupero del formulario con POST el numero de indice del pais y de la capital $pais=$_POST[pais]; $capital=$_POST[capital]; //print "<pre>".print_r($capitales,true)."</pre>";

//con un if comparo si los indices de los arrays coinciden

Page 20: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

if($_POST['pais']==$_POST['capital']) { //si coinciden que quiere decir que es la capital del pais por el que se pregunta, comfirmo el acierto print "\t<p class=\"bien\">Muy bien, la capital de $paises[$pais] es $capitales[$capital]</p>\n"; } else { //si no coincide indico que se ha fallado print "\t\t<p class=\"mal\"> Lo siento, has fallado, la capital de $paises[$pais] <span class=\"resaltado\">no es $capitales[$capital] </span>es $capitales[$pais]</p>\n"; //Escribo la tabla con todos los paises y capitales a 4 columnas print "\t\t<table border=\"2\">\n"; print "\t\t<caption class=\"resaltado\">Relaci&oacute;n de Paises y Capitales de Europa</caption>\n"; //genero las cabeceras y aplico estilos print "\t\t<tr class=\"resalte1\" > <th>Pais</th><th>Capital</th> </tr>\n"; //Recorremos la tabla de 1 en 1 for($i=0;$i<count($paises);$i++) { print "\t\t\t<tr>\n"; if($i+$j==$_POST[pais]) { //Resalto el pais preguntado y fallado print "\t\t\t\t<td class=\"resalte2\">".$paises[$i+$j]."</td>\n"; } else { print "\t\t\t\t<td>".$paises[$i+$j]."</td>\n"; } if($i+$j==$_POST[capital]) { //Resalto la capital fallada print "\t\t\t\t<td class=\"resalte2\">".$capitales[$i+$j]."</td>\n"; } else { print "\t\t\t\t<td>".$capitales[$i+$j]."</td>\n"; } print "\t\t\t</tr>\n"; } print "\t\t</table>\n"; } //Para volver de nuevo al formulario que pregunta por la capital de un pais print <<<FORMULARIO <form action="21_1Ejercicio_tipo_examen.php" method="POST"> <p><input type="submit" value="M&aacute;s adivinanzas"></p> </form> FORMULARIO; ?> </body> </html>

Page 21: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Y este el resultado:

En la parte final hay otro botón para volver de nuevo para adivinar otra capital:

Extracto del contenido del archivo 21_1paises_capitales.php<?php //array asociativo con los paises y capitales $paises_y_capitales=array( 'Albania' => 'Tirana', 'Alemania' => 'Berlin', 'Andorra' => 'Andorra la Vella', 'Armenia' => 'Erevan', 'Austria' => 'Viena', 'Azerbaiyan' => 'Baku', 'Belgica' => 'Bruselas', 'Bielorrusia' => 'Minsk', 'Bosnia-Herzegovina' => 'Sarajevo',

….................. 'Uzbekistan' => 'Tashkent' ); ?>

Page 22: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Finalmente una representación gráfica de los arrays para que se entienda un poco mejor el ejercicio. Inicialmente el array $paises_y_capitales tiene como Key el Pais y como value la Capital:

con array_keys asigno a $paises los países con un indice, [0]='Albania' , [1]='Alemania' ..... $paises=array_keys($paises_y_capitales);

con array_values asigno a $capitales las capitales con un indice, [0]='Tirana' , [1]='Berlin' ..... $capitales=array_values($paises_y_capitales);

De tal manera que ahora tengo dos arrays, uno que contiene por un lado los países y por otro las capitales y tienen el mismo numero de indice que los relaciona, así para un indice 1 tenemos Alemania y Berlin.

En el desplegable donde se escoge la capital que corresponda con el Pais preguntado, queremos que estén ordenadas alfabéticamente, podemos hacerlo con sort (sort($capitales), pero si nos fijamos como queda el array podemos ver que se ha cambiado el numero de indice ya que ordena el contenido pero también le asigna el valor de indice a partir del 0, Tirana tiene un indice de 0 y Albania un indice de 0, ya no coincide.

Pero para solucionar el problema tenemos asort (asort($capitales)) que ordena el contenido pero manteniendo su indice.

Paises_y_capitales Tirana Berlin Erevan Viena Values

Albania Alemania Andorra Armenia Austria Keys

Andorra la Bella

array_keys($paises_y_capitales) Albania Alemania Andorra Armenia Austria $paises[$i]

0 1 2 3 4 indice $i

array_values($paises_y_capitales) Tirana Berlin Erevan Viena $capitales[$i]

0 1 2 3 4 indice $i

Andorra la Bella

sort($capitales) Berlin Erevan Tirana Viena

0 1 2 3 4

Andorra la Bella

Le asigna un nuevo indice

asort($capitales) Berlin Erevan Tirana Viena

2 1 3 0 4

$pais[0]=Albania => $capital[0]= Tirana

Andorra la Bella

Mantiene el mismo indice

Page 23: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Implantación de aplicaciones Web (Ejercicios)

Tratamiento de un formulario tipo 'radio' con php y print_r

Ejercicio (11_formulario1.html y 11_operaciones1.php):Teclea dos números y realiza operaciones con ellos (suma y resta).

Organigrama:

Visual (html y resultado php):

$resta ← $primero - $segundo

$_GET['op']==

“suma”

$_GET

$primero ← $_GET['n1']$segundo ← $_GET['n2']

Inicio

FIN

NO SI

$_GET['op']==

“resta”

$suma ← $primero + $segundo

“$suma”

“$resta”

NO

SI

Page 24: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

HTML, Contenido del fichero: 11_operacioes1.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Operaciones con numeros </title> </head> <body>

<form action="11_operacion1.php" method="GET"> <p>Operaciones con numeros</p>

<p>Teclea dos numeros:</p> <p>Numero <input type="text" name="n1" size="4"></p> <p>Numero <input type="text" name="n2" size="4"> </p> <p>Elije operacion:</p> <input type="radio" name="op" value="suma"> Sumar <br> <input type="radio" name="op" value="resta"> Restar </p> <p> <input type="submit" value="Operar"> </p>

</form> </body> </html> PHP, Contenido fichero: 11_operacioes1.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Operaciones con numeros </title> </head> <body>

<h1> Formulario radio </h1> <?php $primero=$_GET['n1']; $segundo=$_GET['n2']; print "<pre>".print_r($_GET,true)."</pre>"; if ($_GET['op']=="suma") {

$suma=$primero + $segundo; print "<p>La suma es: $suma</p>";

} else

if ($_GET['op']=="resta") {

$resta=$primero - $segundo; print "<p>La resta es: $resta</p>";

} ?>

</body> </html>

Al usar GET en la URL que devuelve php van los datos enviados, si no queremos que aparezcan o se envían muchos datos lo mejor es usar POST.

Page 25: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Tratamiento de un formulario tipo 'checkbox' con php y print_rEjercicio (11_formulario2.html y 11_operaciones2.php):Teclea dos números y realiza operaciones con ellos (suma y resta), en este caso se pueden realizar las dos operaciones.

Organigrama:

Visual (html y resultado php):

$resta ← $primero - $segundo

Isset$_GET['op1']

$_GET

$primero ← $_GET['n1']$segundo ← $_GET['n2']

Inicio

FIN

NO SI

$suma ← $primero + $segundo

“$suma”

“$resta”

NO SIIsset

$_GET['op2']

Page 26: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

HTML, Contenido del fichero: 11_formulario2.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Operaciones con numeros </title> </head> <body>

<form action="11_operacion2.php" method="GET"> <p>Operaciones con numeros</p>

<p>Teclea dos numeros:</p><p>Numero<input type="text" name="n1" size="4"></p><p>Numero<input type="text" name="n2" size="4"> </p><p>Elije operacion:</p><input type="checkbox" name="op1"> Sumar <br><input type="checkbox" name="op2"> Restar </p><p> <input type="submit" value="Operar"> </p>

</form> </body></html> PHP, Contenido fichero: 11_operacioes2.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Operaciones con numeros </title> </head> <body>

<h1> Formulario radio </h1><?php$primero=$_GET['n1'];$segundo=$_GET['n2'];print "<pre>".print_r($_GET,true)."</pre>";if (isset($_GET['op1'])) { $suma=$primero + $segundo; print "<p>La suma es: $suma</p>"; }if (isset($_GET['op2'])) { $resta=$primero - $segundo; print "<p>La resta es: $resta</p>"; }?>

</body></html>

se puede usar 'isset' o no funciona de las dos maneras:• if (isset($_GET['op1']))• if ($_GET['op1'])

Al utilizar checbox puedo marcar las dos opciones de operación (suma y resta).

Page 27: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Tratamiento de un formulario tipo 'Select' con php y print_rEjercicio (11_formulario3.html y 11_operaciones3.php):Teclea dos números y realiza operaciones con ellos (suma y resta), en este caso se selecciona la operación de un listado.

Visual (html y resultado php):

url que aparece al devolver el resultado (se visualiza el contenido de las variables, los datos):

HTML, Contenido del fichero: 11_formulario3.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Operaciones con numeros </title> </head> <body>

<form action="11_operacion3.php" method="GET"> <p>Operaciones con numeros</p>

<p>Teclea primer numero:<input type="text" name="n1" size="4"></p><p>Teclea segundo numero:<input type="text" name="n2" size="4"> </p><p>Elije operacion:</p><select name="operacion"><option value="sumar"> Sumar </option><option value="restar"> Restar </option></select><br><br><p> <input type="submit" value="Operar"> </p>

</form> </body></html>

Page 28: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

PHP, Contenido fichero: 11_operacioes3.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Operaciones con numeros </title> </head> <body>

<h2> Formulario Select </h2><?php$primero=$_GET['n1'];$segundo=$_GET['n2'];print "<pre>".print_r($_GET,true)."</pre>";if ($_GET['operacion']=="sumar") { $suma=$primero + $segundo; print "<p>La suma es: $suma</p>"; }else if ($_GET['operacion']=="restar") { $resta=$primero - $segundo; print "<p>La resta es: $resta</p>"; }?>

</body></html>

Page 29: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Tratamiento de un formulario con php y estructuras repetitivas con WhileWhile (0 a n veces)

Ejemplo: Escribir los números del 1 al 10

Contenido fichero 12_while1.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura while </title> </head> <body>

<h2> Estructura While </h2><?phpprint"<pre>";; $cont=1; while($cont<=9)

{print ("$cont"." - ");$cont++;}

print ("$cont"); print "<br>Se ha acabado";print"</pre>";?>

</body></html>

“$cont”

$cont<=10

$cont ← 1

Inicio

FIN

NO

SI

$cont ++

While (condición)

{

Sentencias;

}

Page 30: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejemplo: Escribir los números del 1 hasta un numero aleatorio entre 1 y 100.

Contenido fichero 12_while2.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura while </title> </head> <body>

<h2> Estructura While </h2><?phpprint"<pre>"; $tope=rand(1,100); $cont=1; while($cont<$tope)

{print ("$cont"." - ");$cont++;}print "$cont";

print "<br><br>Se ha acabado";print"</pre>";?>

</body></html>

“$cont”

$cont<=

$tope

$cont ← 1

Inicio

FIN

NO

SI

$cont ++

$tope ← rand(1,100)

Page 31: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

El mismo que el anterior pero que los presente de 10 en 10.

Contenido fichero 12_while3.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura while </title> </head> <body>

<h2> Estructura While </h2><?phpprint"<pre>"; $tope=rand(1,100); $ini=1; print "El numero aleatorio es : $tope\n"; while($ini<$tope)

{printf ("%02d","$ini");if ($ini%10==0) { print ("\n"); } else

{print (" - "); }

$ini++; }printf ("%02d","$ini");

print "\n Se acabo";print"</pre>";?>

</body></html>

Page 32: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

While (1 a n veces)

Mismo ejercicio que el anterior pero con do while

Contenido fichero 13_do_while1.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura do while </title> </head> <body>

<h2> Estructura do while </h2><?phpprint"<pre>"; $tope=rand(1,100); $ini=1; print "El numero aleatorio es : $tope\n"; do { printf ("%02d","$ini"); if ($ini%10==0)

{print ("\n");}else { print (" - "); }

$ini++; }while($ini<$tope);

printf ("%02d","$ini"); print "\n Se acabo";print"</pre>";?>

</body></html>

do

{

Sentencias;

}while (condición);

Page 33: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejemplo. Listado de números de 10 en 10, indicando el primer y ultimo numero.Contenido fichero 13_listar1.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Listado numeros con do while </title> </head> <body>

<h2> Listado de Numeros </h2> <form action="13_listar1.php" method="GET">

<p>Teclea numero de inicio: <input type="text" name="n1" size="4"></p> <p>Teclea numero final: <input type="text" name="n2" size="4"></p> <p><input type="submit" value="Listar"></p>

</form> </body> </html>

Contenido fichero 13_listar1.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Listado de Numeros con do while </title> </head> <body>

<h2> Listado de Numeros </h2> <?php print"<pre>"; $primero=$_GET['n1']; $ultimo=$_GET['n2']; $tope=rand(1,100); $ini=1; print "El numero inicial es : $primero\n"; print "El numero final es : $ultimo\n"; do { printf ("%02d","$primero"); if ($primero%10==0)

{ print ("\n"); } else { print (" - "); }

$primero++; }while($primero<$ultimo);

printf ("%02d","$ultimo"); print "\n Se acabo"; print"\n</pre>\n"; ?>

</body> </html>

Page 34: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejemplo. Listado de números de 10 en 10, indicando el primer y ultimo numero, pero empezando por el mas bajo independientemente de cual se ponga primero.

Contenido fichero 13_listar2.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Listado numeros con do while </title> </head> <body>

<h2> Listado de Numeros </h2> <form action="13_listar2.php" method="GET">

<p>Teclea numero de inicio: <input type="text" name="n1" size="4"></p> <p>Teclea numero final: <input type="text" name="n2" size="4"></p> <p><input type="submit" value="Listar"></p>

</form> </body> </html>

Contenido fichero 13_listar2.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Listado de Numeros con do while </title> </head> <body>

<h2> Listado de Numeros </h2> <?php print"<pre>"; $primero=$_GET['n1']; $ultimo=$_GET['n2']; $tope=rand(1,100); $ini=1; print "El numero inicial es : $primero\n"; print "El numero final es : $ultimo\n"; print "\n"; if ($primero<$ultimo) {

do { printf ("%03d","$primero"); if ($primero%10==0) { print ("\n"); } else

{ print (" - "); }

$primero++; }while($primero<$ultimo);

Page 35: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

printf ("%03d","$ultimo"); } else

{ do { printf ("%03d","$primero"); if ($primero%10==0)

{ print ("\n"); } else { print (" - "); }

$primero--; }while($primero>$ultimo); printf ("%03d","$primero"); }

print "\n"; print "\n Se acabo"; print"\n</pre>\n"; ?>

</body> </html>

Mismo que el anterior pero con otra forma de hacer la comparación.

Contenido fichero 13_listar2.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Listado numeros con do while </title> </head> <body>

<h2> Listado de Numeros </h2> <form action="13_listar3.php" method="GET">

<p>Teclea numero de inicio: <input type="text" name="n1" size="4"></p> <p>Teclea numero final:

$_GET['n1']>

$_GET['n2']

NO SI

$_num1 ← $_GET[n2]$_num2 ← $_GET[n1]$_num1 ← $_GET[n1]

$_num2 ← $_GET[n2]

Page 36: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

<input type="text" name="n2" size="4"></p> <p><input type="submit" value="Listar"></p>

</form> </body> </html>

Contenido fichero 13_listar2.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Listado de Numeros con do while </title> </head> <body>

<h2> Listado de Numeros </h2> <?php print"<pre>"; if ($_GET['n1']>$_GET['n2'])

{ $primero=$_GET['n2']; $ultimo=$_GET['n1']; }

else { $primero=$_GET['n1']; $ultimo=$_GET['n2']; }

$tope=rand(1,100); $ini=1; print "El numero inicial es : $primero\n"; print "El numero final es : $ultimo\n"; print "\n";

do { printf ("%03d","$primero"); if ($primero%10==0) { print ("\n"); } else

{ print (" - "); }

$primero++; }while($primero<$ultimo); printf ("%03d","$ultimo");

print "\n"; print "\n Se acabo"; print"\n</pre>\n"; ?>

</body> </html>

Page 37: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Comando for.Listado de numeros desde 1 hasta un numero aleatorio, presentados de 10 en 10.Contenido fichero 14_for1.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura for </title> </head> <body>

<?php $num=rand(1,100); print "<pre>\n"; print "El numero aleatorio es $num\n"; for($ini=1;$ini<=$num-1;$ini++) { printf("%02d",$ini); if ($ini%10==0)

print("\n"); else

print(" - "); } printf("%02d",$num); print ("\nSe acab&oacute;"); print "\n\t</pre>"; ?>

</body> </html>

Ejemplo de uso del for, construcción de tablas, indicando el nº de filas y el nº de columnas:

Contenido fichero 14_for2.html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Constructor de tablas </title> </head> <body>

<h2> Constructor de tablas </h2> <form action="14_for2.php" method="GET">

<p>Numero de filas: <input type="text" name="n1" size="4"></p> <p>Numero de columnas: <input type="text" name="n2" size="4"></p> <p><input type="submit" value="Hacer tabla"></p>

</form> </body> </html>

Page 38: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Contenido fichero 14_for2.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Estructura for </title> </head> <body>

<?php $fil=$_GET['n1']; $col=$_GET['n2']; print "\n<table border='1'>\n"; print "La tabla tendra $fil filas\n"; print "La tabla tendra $col columnas\n"; for($contf=1;$contf<=$fil;$contf++) { print "<tr>\n"; for($contc=1;$contc<=$col;$contc++)

{ print "<td>\n"; print "$contf-$contc"; print "</td>\n"; }

print "/tr>\n"; } print "</table>\n"; ?>

</body> </html>

Ejemplos de funciones de cadenas:Contenido fichero 15_cadenas1.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Funciones de cadenas (string) </title> </head> <body>

<?php $valor1=123456567884567.3456; $valor2=200; $arr1=array("img1.png","img2.png","img10.png"); print "<b>Funciones de cadenas (String):</b>"; print "<br>".number_format($valor1,2,"'",".");/* formateo de numeros */ print "<br>Decimal = ".$valor2." ASCI = ".chr($valor2);/* devuelve el valor asci de un decimal entre

0 y 255 */ print "<br>La encriptacion str_rot13 de 'Juan' = ".str_rot13("Juan");/* Encriptacion sencilla */ print "<br>La encriptacion md5 de 'Juan' = ".md5("Juan");/* Encripta en formato md5*/ print "<br>funcion usort: ";usort($arr1,"strcmp");print_r($arr1);/* ordena contenido array*/ print "<br>funcion usort: ";usort($arr1,"strnatcmp");print_r($arr1);/* ordena contenido array natural*/ ?>

</body> </html>

Page 39: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Contenido fichero 15_cadenas2.php:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Cadenas con php </title> </head> <body>

<?php $valor1=0; $valor2=255; print "Codigo decimal y su correspondiente en ASCI"; for($valor1;$valor1<=$valor2;$valor1++) { print "<br>\n"; print ("$valor1 es:".chr($valor1));/* formateo de numeros*/ } ?>

</body> </html>

Page 40: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejemplo de introducción a las funciones en php (17_1Intro_funcion.php).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Introduccion funciones </title> </head> <body>

<?php /*

Basicamente la idea de las funciones es definir una porcion de codigo que utilizaremos mas de una vez en el programa. -> Si en vez de funciones usamos copy-paste y hay que cambiar algo, se nos puede olvidar una de las copias. -> Una ventaja adicional es que puedes usar la misma funcion en varios programas. -> Lo razonable es guardar las funciones en ficheros aparte y cargarlas en distintos documentos que las vayan a usar. En PHP definimos funciones con la palabra clave function. */ saludo(); // puedo llamar a la funcion antes de definirla function saludo()//Esta funcion se define aqui y lo que hace es imprimir Hola en color azul { print "<p style=\"color:blue\"> Hola </p>"; } saludo(); // aqui se ejecuta la funcion invocandola /* En PHP podemos cambiar la definicion de una variable. incluso su "tipo". Sin embargo, si cambiamos la definicion de la funcion y repetimos el nombre casca */ $alumno="pepito"; print "<p>El alumno es $alumno</p>"; $alumno="luisito"; print "<p>El alumno es $alumno</p>";

?> </body> </html>

Resultado de la ejecución:

Page 41: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejemplo de paso de parámetros en funciones (17_2funcion_con_parametros.php).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Ejemplo uso funcion </title> </head> <body>

<?php function cabecera($seccion) { print<<<CABECERA

<div id="cabecera"> <h1> Mi Empresa </h1> <h2> $seccion </h2> </div>

CABECERA; }

function pie()

{ print<<<PIE

<div id="pie"> <h3> Telefono: 944321287 </h3> <h3> Direccion: bala bla bla </h3> </div>

PIE; }

cabecera("seccion"); print "\t<p> Contenido pagina </p>\n"; pie(); ?> </body> </html>

Resultado de la ejecución:

Page 42: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejemplo del uso de funciones, para construir el encabezado y pie de una pagina web, paso de parámetros, estilos y ubicación de funciones en fichero aparte.

Se trata de que cargar automáticamente el encabezado y el pie de una pagina web haciendo la llamada a las funciones correspondientes, ademas el nombre de la sección que varia de una pagina a otra se pasa como parámetro y se ha incluido algo de estilo css

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Cabecera y pie mediante funcion </title>

<style type="text/css"> <?php @require("17_3cabecera_y_pie.php"); estilo(); ?> </style>

</head> <body>

<?php //Cargar las funciones //@include("17_3cabecera_y_pie.php"); print "<p>Funciones cargadas</p>"; cabecera("Esta es la Seccion"); ?> <!-- Aqui va el contenido que podria ser html--> <?php pie(); ?>

</body> </html>

Fichero con las funciones:<?php function cabecera($seccion) { print<<<CABECERA

<div id="cabecera"> <h1> Mi Empresa </h1> <h2> $seccion </h2> </div>

CABECERA; }

function pie() {

print<<<PIE <div id="pie">

<p> Telefono: 944321287 </p> <p> Direccion: bala bla bla </p> </div>

Page 43: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

PIE; }

function estilo() { print<<<ESTILO #cabecera

{ background-color: #E69D9D; }

#cabecera h1 { text-transform: capitalize; font-size: 120%; font-family: Comic Sans MS; }

ESTILO; }

?>

Resultado de la ejecución:

Page 44: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejemplo valores por defecto.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Valores por defecto </title> </head> <body>

<?php /*

Podemos hacer que los parametros tomen valores por defecto simplemente poniendio detras del parametro un igual y el valor por defecto */ function saludo($mensaje,$color="teal") { print "\t<p style=\"color:$color\">

$mensaje </p>\n"; } saludo ("Hola","#00ff00");//aqui usa los valores que hemos puesto

saludo ("Hola");//aqui como no se define color usa el puesto por defecto function saludo2($mensaje="Hola",$color="green")

{ print "\t<p style=\"color:$color\">

$mensaje </p>\n"; }

saludo2 ("","blue");//Como $mensaje esta vacio no lo muestra saludo2 ();//aqui usa los dos valores por defecto ?>

</body> </html>

Resultado de la ejecución:

Page 45: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejemplo de función que no devuelve nada y valor de retorno.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Funcion que no devuelve nada </title> </head> <body>

<?php /*

Ejemplo de funcion que "no devuelve nada" print_r escribe en pantalla pero no devuelve lo que esperabamos, que es una cadena con el array bien escrito */

$valores['nombre']='Pepito'; $valores['apellido']='Perez'; print '<pre>'.print_r($valores, true).'</pre>'; $cantidad=8; print "<p>Hay que pagar ".number_format($cantidad,2)."&euro;</p>"; /*OJO: Error comun*/ print "<p>Hay que pagar number_format($cantidad,2)&euro;</p>"; print "<p>El resultado de number_format($cantidad,2) es ".number_format($cantidad,2)."</p>"; function multiplicar($n1,$n2) { $resultado=$n1*$n2; return $resultado;//valor de retorno } $primero=12; $segundo=7; print "<p>Al multiplicar $primero y $segundo obtengo ".multiplicar($primero,$segundo)."</p>"; ?>

</body> </html>

Resultado de la ejecución:

Page 46: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

El uso de arrays en php:

<html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Arrays en PHP </title>

</head> <body> <h3>Arrays</h3> <?php /* un array almacena los valores a partir de la posicion 0 en adelante */ $datos1=array(10,20,30,70);//array que contiene los valores 10, 20, 30 y 70 $datos2=array(10,20,"pepe",70);//array que contiene los valores 10, 20, pepe y 70 $datos1[]=123;//pone un valor mas al array $datos2[8]=456;//cambia la posicion 8 (en este caso esta vacio) del array por 456 print "\t<pre>".print_r($datos1,true)."<pre>\n"; print "\t<pre>".print_r($datos2,true)."<pre>\n"; /* un array se recorre con un for , el siguiente ejemplo mostrara el contenido de $datos1 (10 20 30 70 123) */ print "<ul>"; for($i=0;$i<count($datos1);$i++) {

print "<li>$i->$datos1[$i]</li>"; } print "</ul>\n"; /* array_values devuelve todos los valores no vacios de un array compactandolo e indexandolo numericamente */ $datos2=array_values($datos2); print "<pre>".print_r($datos2,true)."</pre>"; print "<ul>"; for($i=0;$i<count($datos2);$i++) {

print "<li>$i->$datos2[$i]</li>"; } print "</ul>\n"; /* foreach se emplea sobre todo para arrays asociativos */ print "<ul>"; foreach($datos2 as $clave => $valor) {

print "<li>$clave->$valor</li>"; } print "</ul>"; ?> </body> </html>

Page 47: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

El resultado de la ejecución es:

Arrays

Array(

[0] => 10[1] => 20[2] => 30[3] => 70[4] => 123

)Array(

[0] => 10[1] => 20[2] => pepe[3] => 70[8] => 456

)

• 0 => 10• 1 => 20• 2 => 30• 3 => 70• 4 => 123

Array(

[0] => 10[1] => 20[2] => pepe[3] => 70[4] => 456

)

• 0 => 10• 1 => 20• 2 => pepe• 3 => 70• 4 => 456

• 0 => 10• 1 => 20• 2 => pepe• 3 => 70• 4 => 456

Page 48: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejercicio tabla mes (Ejercicio 18_3Array_asociativo.php)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Arrays asociativo </title>

</head> <body> <h3>Meses del aÒo</h3> <?php $mes['enero']=31; $mes['febrero']=29; $mes['marzo']=31; $mes['abril']=30; $mes['mayo']=31; $mes['junio']=30; $mes['julio']=31; $mes['agosto']=31; $mes['septiembre']=30; $mes['octubre']=31; $mes['noviembre']=30; $mes['diciembre']=31; print "<table border=\"2\">";//le damos un grosor a las lineas de la tabla de 2 pixel /* Ponemos primero las cabaceras de la tabla */ print "<tr>

<th>Mes</th> <th>Dias</th> </tr>";

/* con una funcion foreach recorremos los arrays escogiendo para cada uno la clave y valor asignado */ foreach($mes as $clave => $valor) /* $clave es lo que esta entre [] (enero, febrero, etc.) y $valor es lo que contiene o su valor (31, 30, etc.)*/ /* se les has llamado $clave y $valor pero se le puede dar otro nombre */ {

/* imprimo las columnas con los datos */ print "<tr>

<td>$clave</td> <td>$valor</td>

</tr>"; } print "</table>\n"; ?> </body> </html>

Page 49: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

El resultado es:

Ejercicio tabla mes ordenado con asort y ksort (Ejercicio 18_4Array_asociativo_ordenado.php)

El resultado es el siguiente (a la izquierda usando asort y a la derecha usando ksort):

Page 50: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

El programa es:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Arrays asociativo </title> </head> <body> <?php $mes['enero']=31; $mes['febrero']=29; $mes['marzo']=31; $mes['abril']=30; $mes['mayo']=31; $mes['junio']=30; $mes['julio']=31; $mes['agosto']=31; $mes['septiembre']=30; $mes['octubre']=31; $mes['noviembre']=30; $mes['diciembre']=31; print "<h3>Meses ordenados por dias</h3>"; print "<table border=\"2\">";//le damos un grosor a las lineas de la tabla de 2 pixel /* Ponemos primero las cabeceras de la tabla */ print "<tr>

<th>Mes</th> <th>Dias</th> </tr>";

/* con una funcion foreach recorremos los arrays escogiendo para cada uno la clave y valor asignado */ asort($mes);//con asort se ordena por valores foreach($mes as $clave => $valor) /* $clave es lo que esta entre [] (enero, febrero, etc.) y $valor es lo que contiene o su valor (31, 30, etc.)*/ /* se les has llamado $clave y $valor pero se le puede dar otro nombre */ {

/* imprimo las columnas con los datos */ print "<tr>

<td>$clave</td> <td>$valor</td>

</tr>"; } print "</table>\n"; print "<h3>Meses ordenados por mes</h3>"; print "<table border=\"2\">";//le damos un grosor a las lineas de la tabla de 2 pixel /* Ponemos primero las cabaceras de la tabla */ print "<tr>

<th>Mes</th> <th>Dias</th> </tr>";

/* con una funcion foreach recorremos los arrays escogiendo para cada uno la clave y valor asignado */ ksort($mes);//con ksort se ordena por claves foreach($mes as $clave => $valor) /* $clave es lo que esta entre [] (enero, febrero, etc.) y $valor es lo que contiene o su valor (31, 30, etc.)*/ /* se les has llamado $clave y $valor pero se le puede dar otro nombre */ {

/* imprimo las columnas con los datos */ print "<tr>

<td>$clave</td> <td>$valor</td>

</tr>"; } print "</table>\n"; ?> </body> </html>

Page 51: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejercicio tabla alumnosDado un array darle formato en una tabla.

Contenido fichero 19_5Tabla_alumnos.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Tabla Arrays </title>

</head> <body> <h3>Listado alumnos de 2&ordm; ASIR</h3> <?php /*Carga una vez los arrays especificados en el archivo 19_5Array_alumnos.php*/ require_once("19_5Array_alumnos.php"); print "<table border=\"2\">";//le damos un grosor a las lineas de la tabla de 2 pixel /* Ponemos primero las cabaceras de la tabla */ print "<tr>

<th>N&ordm;</th> <th>Estudiante</th> <th>Usuario</th> <th>Email</th> </tr>";

/* con una funcion for recorremos uno de los arrays que es igual en tamaÒo al resto */ for($i=0;$i<count($students);$i++) {

$num=$i+1;//para evitar el 0 en la primera posicion le sumo 1 /* imprimo las columnas con los datos */ print "<tr>

<td>$num</td> <td>$students[$i]</td> <td>$user[$i]</td> <td>$email[$i]</td>

</tr>"; } print "</table>\n"; ?> </body> </html>

Contenido fichero 19_5Array_alumnos.php<?php $students[]="Apellido01, Nombre01"; $students[]="Apellido02, Nombre02"; $students[]="Apellido03, Nombre03"; $students[]="Apellido04, Nombre04"; $students[]="Apellido05, Nombre05"; $students[]="Apellido26, Nombre26"; $students[]="Apellido07, Nombre07"; $students[]="Apellido08, Nombre08"; $students[]="Apellido09, Nombre09"; $students[]="Apellido10, Nombre10"; $students[]="Apellido11, Nombre11"; $students[]="Apellido12, Nombre12";

Page 52: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

$students[]="Apellido13, Nombre13"; $students[]="Apellido14, Nombre14"; $students[]="Apellido15, Nombre15"; $students[]="Apellido16, Nombre16"; $students[]="Apellido17, Nombre17"; $students[]="Apellido18, Nombre18"; $students[]="Apellido19, Nombre19"; $students[]="Apellido20, Nombre20"; $students[]="Apellido21, Nombre21"; $students[]="Apellido22, Nombre22"; $students[]="Apellido23, Nombre23"; $students[]="Apellido24, Nombre24"; $students[]="Apellido25, Nombre25"; $students[]="Apellido06, Nombre06";

$user[]="IN2AR3_01"; $user[]="IN2AR3_02"; $user[]="IN2AR3_03"; $user[]="IN2AR3_04"; $user[]="IN2AR3_05"; $user[]="IN2AR3_26"; $user[]="IN2AR3_07"; $user[]="IN2AR3_08"; $user[]="IN2AR3_09"; $user[]="IN2AR3_10"; $user[]="IN2AR3_11"; $user[]="IN2AR3_12"; $user[]="IN2AR3_13"; $user[]="IN2AR3_14"; $user[]="IN2AR3_15"; $user[]="IN2AR3_16"; $user[]="IN2AR3_17"; $user[]="IN2AR3_18"; $user[]="IN2AR3_19"; $user[]="IN2AR3_20"; $user[]="IN2AR3_21"; $user[]="IN2AR3_22"; $user[]="IN2AR3_23"; $user[]="IN2AR3_24"; $user[]="IN2AR3_25"; $user[]="IN2AR3_06";

$email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]";

Page 53: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

$email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; $email[]="[email protected]"; ?>

El resultado es el siguiente:

Page 54: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejercicio Menú selecciónContinuando con el array que contiene el listado de alumnos, realizar un menú de selección y una vez elegido un alumno que presente sus datos.

El array a usar es el fichero 19_5Array_alumnos.php anteriormente expuesto

Contenido fichero 19_5Menu_alumnos1.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Menu desplegable Arrays </title> </head> <body> <h3>Seleccion alumno de 2&ordm; ASIR de un desplegable</h3> <?php /*llamo al otro php para que me presente los datos del alumno seleccioando*/ print '<form action="19_5Info_alumnos.php"> <p><select name="codigo">'; /*Carga una vez los arrays especificados en el archivo 19_5Array_alumnos.php*/ require_once("19_5Array_alumnos.php"); /*funcion que me presenta todos los estudiantes en el menu desplegable*/ for($i=0;$i<count($students);$i++)

{ print "\n\t<option value=\"$i\">".htmlentities($students[$i])."</option>"; }

print "\n".'</select> <input type="submit" value="Info"></p> </form>'; ?> </body> </html>

El resultado del programa es el siguiente:

El resultado del subprograma al que llama el programa principal a pinchar en Info es el siguiente:

Page 55: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Contenido fichero 19_5Info_alumnos.php (Subprograma que presenta los datos del usuario seleccionado).<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title>

<?php /*Pongo en el titulo el nombre del estudiante del que pido informacion*/ /*para ello cargo en fichero 19_5Array_alumnos.php del que saco los datos*/ require_once("19_5Array_alumnos.php"); $cod=$_GET['codigo']; print "Informacion sobre: ".htmlentities($students[$cod]); ?> </title>

</head> <body> <?php /*imprimo en pantalla la informacion del estudiante seleccionado en el menu*/ /*Aqui no pongo un require para cargar 19_5Array_alumnos.php porque ya esta puesto arriba*/ print "<p>Alumno: $students[$cod]</p>"; print "<p>Usuario: $user[$cod]</p>"; print "<p>Email: $email[$cod]</p>"; ?> </body> </html>

Tenemos un alumno que no esta en orden, asi que con ayuda de asort lo presento en orden.Contenido fichero 19_5Menu_alumnos2.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Menu desplegable Arrays </title> </head> <body> <h3>Seleccion alumno de 2&ordm; ASIR de un desplegable</h3> <?php /*llamo al otro php para que me presente los datos del alumno seleccioando*/ print '<form action="19_5Info_alumnos.php"><p> <select name="codigo">'; /*Carga una vez los arrays especificados en el archivo 19_5Array_alumnos.php*/ require_once("19_5Array_alumnos.php"); /*ordeno el array por nombtre porque hay un sudiante que esta al final pero que es el numero 06*/ asort($students); /*funcion que me presenta todos los estudiantes en el menu desplegable, en este caso con foreach para que el alumno que estaba al final de la lista salga en su posicion por orden*/ foreach($students as $indice => $nombre)

{ print "\n\t<option value=\"$indice\">".htmlentities($nombre)."</option>"; }

print "\n".'</select> <input type="submit" value="Info"></p> </form>'; ?> </body> </html>

Page 56: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Y este es el resultado del desplegable (ahora el alumno06 que estaba al final se ha ordenado debajo del alumno05):

Si tenemos un alumno que ademas esta acentuado y queremos ordenarlo utilizamos otro parametro, setlocale y SORT_LOCALE_STRING.Contenido fichero 19_5Menu_alumnos3.php<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Menu desplegable Arrays </title> </head> <body> <h3>Seleccion alumno de 2&ordm; ASIR de un desplegable</h3> <?php /*llamo al otro php para que me presente los datos del alumno seleccioando*/ print '<form action="19_5Info_alumnos.php"><p> <select name="codigo">'; /*Carga una vez los arrays especificados en el archivo 19_5Array_alumnos.php*/ require_once("19_5Array_alumnos.php"); /*setlocale establece la informacion de la configuracion regional*/ setlocale(LC_ALL, "sp-SP"/*Windows*/,"es_ES"/*Todos los demas*/); /*asort ordena el array por nombtre porque hay un sudiante que esta al final pero es el numero 06 ademas con SORT_LOCALE_STRING le estoy diciendo que no tenga en cuenta acentuaciones y caracteres especiales sobre las letras para que tambien ordene un mombre que estuviera acentuado*/ asort($students, SORT_LOCALE_STRING); /*funcion que me presenta todos los estudiantes en el menu desplegable, en este caso con foreach para que el alumno que estaba al final de la lista salga en su posicion por orden*/ foreach($students as $indice => $nombre)

{ print "\n\t<option value=\"$indice\">".htmlentities($nombre)."</option>"; }

print "\n".'</select> <input type="submit" value="Info"></p> </form>'; ?> </body> </html>

Page 57: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Array asociativo bidimensional:

<html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" > <title> Array asociativo bidimensional </title> </head> <body> <h3> Formas de mostrar contenido de un array asociativo bidimensional </h3> <?php // 0) llamo al archivo php que contiene el array require_once("20_1array_asociativo_bidimensional.php"); // 1) muestro el array completo con print_r print "<p><b> 1) Muestro contenido completo del array con 'print_r': </b></p>\n"; print "<pre>".print_r($alumnos, true). "</pre>\n"; // 2) otra forma de acceder a un elemento del array print "<p><b> 2) Muestro contenido de un elemento del array: </b></p>\n"; print "<p>". $alumnos['IN2AR3_17']['nombre']. " tiene correo: ".$alumnos['IN2AR3_17']['correo']. "</p>\n"; // 3) con esta funcion (array_keys) obtenemos un array de las claves y lo imprimo print "<p><b> 3) Muestro un array de las claves con 'print_r' y la funcion 'array_keys': </b></p>\n"; $claves=array_keys($alumnos); print "<pre>".print_r($claves,true)."</pre>\n"; // 4) Recorro con un for el array con las claves para mostrar todos los elementos, el paso 2) pero para todos print "<p><b> 4) Muestro uno a uno el contenido del array y le doy forma: </b></p>\n"; for ($i=0;$i<count($alumnos);$i++)

{ print "<p>".$alumnos[$claves[$i]]['nombre']. " tiene correo: ".$alumnos[$claves[$i]]

['correo']."</p>\n"; //print "<p>".$alumnos["$claves[$i]"]['nombre']. " tiene correo: ".$alumnos["$claves[$i]"]

['correo']."</p>"; }

// 5) Recorrer el array directamente print "<p><b> 5) Recorro el array directamente con un foreach: </b></p>\n"; foreach ($alumnos as $usuario => $info)

{ print "<p>El usuario $usuario se llama ".$alumnos[$usuario]['nombre']; print " y su correo es: ".$alumnos[$usuario]['correo']."</p>\n"; }

// 6) Recorrer el array directamente print "<p><b> 6) Otra forma de recorrer el array directamente con un foreach: </b></p>\n"; foreach ($alumnos as $usuario => $info)

{ print "<p>Usuario: $usuario "; foreach ($info as $clave => $valor) {

print " $clave: $valor"; } print "</p>\n"; }

?> </body> </html>

Page 58: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Contenido del array bidimensional:<?php $alumnos=array( 'IN2AR3_01' => array('nombre'=> "Alberdi Arce, Kepa",'correo'=> "[email protected]"), 'IN2AR3_02' => array('nombre'=> "Alonso Kortazar, Iban",'correo'=> "[email protected]"), 'IN2AR3_03' => array('nombre'=> "AmÈzaga MuÒoz, Jon Ander",'correo'=> "[email protected]"), 'IN2AR3_04' => array('nombre'=> "Aramburu Torre, Mikel",'correo'=> "[email protected]"), 'IN2AR3_05' => array('nombre'=> "Arevalo Garcia, Markel",'correo'=> "[email protected]"), 'IN2AR3_06' => array('nombre'=> "BolaÒos Teso, Joseba Andoni",'correo'=> "[email protected]"), 'IN2AR3_07' => array('nombre'=> "Condori Bocanegra, Faviola",'correo'=> "[email protected]"), 'IN2AR3_08' => array('nombre'=> "Echaburu Ruiz De Azua, Gonzalo",'correo'=> "[email protected]"), 'IN2AR3_09' => array('nombre'=> "Fernandez Del Pozo, Jon Ander",'correo'=> "[email protected]"), 'IN2AR3_10' => array('nombre'=> "Fern·ndez Uribarren, Itziar",'correo'=> "[email protected]"), 'IN2AR3_11' => array('nombre'=> "Fradejas Gordon, Diego",'correo'=> "[email protected]"), 'IN2AR3_12' => array('nombre'=> "GabiÒa Merino, Gorka",'correo'=> "[email protected]"), 'IN2AR3_13' => array('nombre'=> "Gonz·lez Larrazabal", Ander,'correo'=> "[email protected]"), 'IN2AR3_14' => array('nombre'=> "Guardado De Las Moras", Andoni,'correo'=> "[email protected]"), 'IN2AR3_15' => array('nombre'=> "Hern·ez GarcÌa, Aritz",'correo'=> "[email protected]"), 'IN2AR3_16' => array('nombre'=> "Isla Rodriguez, Xabier",'correo'=> "[email protected]"), 'IN2AR3_17' => array('nombre'=> "Jimenez Marin, Maialen",'correo'=> "[email protected]"), 'IN2AR3_18' => array('nombre'=> "MazÛn Garcia, Unai",'correo'=> "[email protected]"), 'IN2AR3_19' => array('nombre'=> "Medrano Reguilon, Agustin",'correo'=> "[email protected]"), 'IN2AR3_20' => array('nombre'=> "Moreno GarcÌa, Juan Carlos",'correo'=> "[email protected]"), 'IN2AR3_21' => array('nombre'=> "Navarro Garcia, Juan Alberto",'correo'=> "[email protected]"), 'IN2AR3_22' => array('nombre'=> "NuÒo Veci, Unai Jesus",'correo'=> "[email protected]"), 'IN2AR3_23' => array('nombre'=> "S·nchez Cristobal, Diego",'correo'=> "[email protected]"), 'IN2AR3_24' => array('nombre'=> "Valenciano Santa Cruz, Javier",'correo'=> "[email protected]"), 'IN2AR3_25' => array('nombre'=> "Freitas Carneiro Da Cunha, Kleber",'correo'=> "[email protected]"), 'IN2AR3_noexiste' => array('nombre'=> "¡lvarez noexiste,noexiste",'correo'=> "[email protected]"), ); ?>

Page 59: IMPLANTACION DE APLICACIONES WEB (IAW) Apuntes · PDF fileImplantación de aplicaciones Web PHP se ejecuta en el servidor (en clase nuestro ordenador sera como si fuera el ordenador

Ejercicio array asociativo 1 dimensión

<title> Ejercicio Array asociativo de 1 dimension </title> </head> <body> <h3> Ejercicio Array asociativo de 1 dimension </h3> <?php //Defino Array asociativo de 1 dimension de agentes de la TIA $agentes=array('Chotacabras gris' => 'Pepe Delgado',

'Buscarla pintoja' => 'Juan Ruiz', 'Sello Caludio' => 'Jose Luis Atxa', 'Pollizo Pito' => 'Enrique Arenas');

//Creamos la tabla con la relacion de agentes print "<p><b> Relacion agentes de la TIA </b></p>"; print "<table border=\"2\">";//le damos un grosor a las lineas de la tabla de 2 pixel //Ponemos primero las cabaceras de la tabla print "<tr>

<th>Nombre_clave</th> <th>Nombre_usual</th> </tr>";

//con una funcion foreach recorro el array y lo imprimo foreach ($agentes as $clave => $usual)

{ print "<tr> <td>$clave</td> <td>$usual</td> </tr>"; }

print "</table>"; ?> </body> </html>