Está en la página 1de 59

IMPLANTACION

DE
APLICACIONES
WEB
(IAW)

Apuntes
y

Ejercicios
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 .php
http://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 ";
?>
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.
Ejemplo ajuste numero decimales: Ejemplo ancho mínimo:
<?php <?php
$precio=3.95; $dia=2;
$tasa=0.21; $mes=9;
$iva=$precio*$tasa; $anio=1987;
$total=$precio+$iva; printf ('Fecha: %02d/%02d/%d', $dia,$mes,$anio);
$nombre='Jon'; print "\n";
$dominio='@elorrieta,com'; ?>
$email=$nombre.$dominio;
print 'El iva asciende a '.$iva; /*print "El iva asciende a $iva \n";*/
Ejemplo poner signo:
print "<br> \n";
<?php
printf ('El total asciende a %.2f', $total);
$min=-30;
print "<br> \n";
$max=40;
printf ('Total %.2f iva %.2f', $total, $iva);
$anio=1987;
print "<br> \n";
printf ('El ordenador opera entre %+d y %+d grados
print $email; celsius', $min,$max);
print "\n"; print "\n";
?> ?>

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:

<?php
print <<<DATOS
aquí 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:dagaco91@gmail.com" 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>";
?>
<!-- forma bloque -->
<?php
print <<<DATOS
<form action="mailto:dagaco91@gmail.com" 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:

Inicio

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

Recibidos los valores


$primero y $segundo

NO SI
$primero
<
$segundo

“El orden correcto es “El orden correcto es


$segundo, $primero $primero, $segundo

FIN
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 esto
http://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>";
Tratamiento de un formulario con php y estructuras repetitivas con While
While (0 a n veces)

Ejemplo: Escribir los números del 1 al 10


Inicio
While (condición)
$cont ← 1 {
Sentencias;
}
$cont NO
<=
10

SI

“$cont”

$cont ++

FIN

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>
<?php
print"<pre>";;
$cont=1;
while($cont<=9)
{
print ("$cont"." - ");
$cont++;
}
print ("$cont");
print "<br>Se ha acabado";
print"</pre>";
?>
</body>
</html>
Ejemplo: Escribir los números del 1 hasta un numero aleatorio entre 1 y 100.

Inicio

$tope ← rand(1,100)

$cont ← 1

$cont NO
<=
$tope

SI

“$cont”

$cont ++

FIN

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>
<?php
print"<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>
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>
<?php
print"<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>
While (1 a n veces)

Mismo ejercicio que el anterior pero con do while


do
{
Contenido fichero 13_do_while1.php:
Sentencias;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"> }while (condición);
<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>
<?php
print"<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>
<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>
Funciones
Bá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 defecto


Podemos 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 nada


print_r escribe en pantalla pero no devuelve lo que esperábamos, que es una cadena con el array bien escrito.
Arrays
Un 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:

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

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:

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

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
[8] => 456
)
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:

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

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:

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

foreach se emplea sobre todo para arrays asociativos


<?php
$datos2=array(10,20,"pepe",70);
$datos2[8]=456;
$datos2=array_values($datos2);
print "<ul>";
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:

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

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 dimensiones


Un 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", …...)
$usuarios-email=array('IN2AR3_01' => "kepa@gamil.com", 'IN2AR3_02' => "pepe@gamil.com", …..)

usuarios nombre email


IN2AR3_01 Alberdi, Kepa kepa@gamil.com
IN2AR3_02 …............ …............

IN2AR3_25

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' => "kepa@gamil.com"),
'IN2AR3_02' => array ('nombre' => "Alori, Pepe", 'email' => "pepe@gamil.com"), …......)

Columnas ↓ ↓

usuarios nombre email


IN2AR3_01 Alberdi, Kepa kepa@gmail.com
IN2AR3_02 …............ …............

IN2AR3_25
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;
//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:


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


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>
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'
);
?>
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:

Andorra la
Paises_y_capitales Tirana Berlin Erevan Viena Values
Bella
Keys
Albania Alemania Andorra Armenia Austria

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

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

indice $i
0 1 2 3 4

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

Andorra la
array_values($paises_y_capitales) Tirana Berlin Erevan Viena $capitales[$i]
Bella
indice $i
0 1 2 3 4

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.

Andorra la
sort($capitales) Berlin Erevan Tirana Viena
Bella
Le asigna un
0 1 2 3 4 nuevo indice

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

Andorra la
asort($capitales) Berlin Erevan Tirana Viena
Bella
Mantiene el
2 1 3 0 4 mismo indice

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


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:
Inicio

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

$_GET

NO SI
$_GET['op']
==
“suma”
NO
$_GET['op'] $suma ← $primero + $segundo
==
“resta” SI
“$suma”

$resta ← $primero - $segundo

“$resta”

FIN

Visual (html y resultado php):


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.
Tratamiento de un formulario tipo 'checkbox' con php y print_r
Ejercicio (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:
Inicio

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

$_GET

NO SI
Isset
$_GET['op1']

$suma ← $primero + $segundo

“$suma”

NO SI
Isset
$_GET['op2']

$resta ← $primero - $segundo

“$resta”

FIN
Visual (html y resultado php):
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).
Tratamiento de un formulario tipo 'Select' con php y print_r
Ejercicio (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>
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>
Tratamiento de un formulario con php y estructuras repetitivas con While
While (0 a n veces)

Ejemplo: Escribir los números del 1 al 10


Inicio
While (condición)
$cont ← 1 {
Sentencias;
}
$cont NO
<=
10

SI

“$cont”

$cont ++

FIN

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>
<?php
print"<pre>";;
$cont=1;
while($cont<=9)
{
print ("$cont"." - ");
$cont++;
}
print ("$cont");
print "<br>Se ha acabado";
print"</pre>";
?>
</body>
</html>
Ejemplo: Escribir los números del 1 hasta un numero aleatorio entre 1 y 100.

Inicio

$tope ← rand(1,100)

$cont ← 1

$cont NO
<=
$tope

SI

“$cont”

$cont ++

FIN

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>
<?php
print"<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>
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>
<?php
print"<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>
While (1 a n veces)

Mismo ejercicio que el anterior pero con do while


do
Contenido fichero 13_do_while1.php: {
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
Sentencias;
"http://www.w3.org/TR/html4/strict.dtd">
<html> }while (condición);
<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>
<?php
print"<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>
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>
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);
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.

NO SI
$_GET['n1']
>
$_GET['n2']
$_num1 ← $_GET[n2]
$_num1 ← $_GET[n1] $_num2 ← $_GET[n1]
$_num2 ← $_GET[n2]

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:
<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>
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>
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>
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>
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:
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:
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>
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:
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:
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:
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>
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
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>
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):


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>
Ejercicio tabla alumnos
Dado 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";
$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[]="Nombre01.Apellido01@elorrieta-errekamari.com";
$email[]="Nombre02.Apellido02@elorrieta-errekamari.com";
$email[]="Nombre03.Apellido03@elorrieta-errekamari.com";
$email[]="Nombre04.Apellido04@elorrieta-errekamari.com";
$email[]="Nombre05.Apellido05@elorrieta-errekamari.com";
$email[]="Nombre26.Apellido26@elorrieta-errekamari.com";
$email[]="Nombre07.Apellido07@elorrieta-errekamari.com";
$email[]="Nombre08.Apellido08@elorrieta-errekamari.com";
$email[]="Nombre09.Apellido09@elorrieta-errekamari.com";
$email[]="Nombre10.Apellido10@elorrieta-errekamari.com";
$email[]="Nombre11.Apellido11@elorrieta-errekamari.com";
$email[]="Nombre12.Apellido12@elorrieta-errekamari.com";
$email[]="Nombre13.Apellido13@elorrieta-errekamari.com";
$email[]="Nombre14.Apellido14@elorrieta-errekamari.com";
$email[]="Nombre15.Apellido15@elorrieta-errekamari.com";
$email[]="Nombre16.Apellido16@elorrieta-errekamari.com";
$email[]="Nombre17.Apellido17@elorrieta-errekamari.com";
$email[]="Nombre18.Apellido18@elorrieta-errekamari.com";
$email[]="Nombre19.Apellido19@elorrieta-errekamari.com";
$email[]="Nombre20.Apellido20@elorrieta-errekamari.com";
$email[]="Nombre21.Apellido21@elorrieta-errekamari.com";
$email[]="Nombre22.Apellido22@elorrieta-errekamari.com";
$email[]="Nombre23.Apellido23@elorrieta-errekamari.com";
$email[]="Nombre24.Apellido24@elorrieta-errekamari.com";
$email[]="Nombre25.Apellido25@elorrieta-errekamari.com";
$email[]="Nombre06.Apellido06@elorrieta-errekamari.com";
?>

El resultado es el siguiente:
Ejercicio Menú selección
Continuando 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:
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>
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>
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>
Contenido del array bidimensional:
<?php
$alumnos=array(
'IN2AR3_01' => array('nombre'=> "Alberdi Arce, Kepa",'correo'=> "Kepa.Alberdi@elorrieta-
errekamari.com"),
'IN2AR3_02' => array('nombre'=> "Alonso Kortazar, Iban",'correo'=> "Iban.Alonso@elorrieta-
errekamari.com"),
'IN2AR3_03' => array('nombre'=> "AmÈzaga MuÒoz, Jon Ander",'correo'=>
"JonAnder.Amezaga@elorrieta-errekamari.com"),
'IN2AR3_04' => array('nombre'=> "Aramburu Torre, Mikel",'correo'=> "Mikel.Aramburu@elorrieta-
errekamari.com"),
'IN2AR3_05' => array('nombre'=> "Arevalo Garcia, Markel",'correo'=> "Markel.Arevalo@elorrieta-
errekamari.com"),
'IN2AR3_06' => array('nombre'=> "BolaÒos Teso, Joseba Andoni",'correo'=> "Joseba.Bolanos@elorrieta-
errekamari.com"),
'IN2AR3_07' => array('nombre'=> "Condori Bocanegra, Faviola",'correo'=> "Faviola.Condori@elorrieta-
errekamari.com"),
'IN2AR3_08' => array('nombre'=> "Echaburu Ruiz De Azua, Gonzalo",'correo'=>
"Gonzalo.Echaburu@elorrieta-errekamari.com"),
'IN2AR3_09' => array('nombre'=> "Fernandez Del Pozo, Jon Ander",'correo'=>
"JonAnder.Fernandez@elorrieta-errekamari.com"),
'IN2AR3_10' => array('nombre'=> "Fern·ndez Uribarren, Itziar",'correo'=> "Itziar.Fernandez@elorrieta-
errekamari.com"),
'IN2AR3_11' => array('nombre'=> "Fradejas Gordon, Diego",'correo'=> "Diego.Fradejas@elorrieta-
errekamari.com"),
'IN2AR3_12' => array('nombre'=> "GabiÒa Merino, Gorka",'correo'=> "Gorka.Gabina@elorrieta-
errekamari.com"),
'IN2AR3_13' => array('nombre'=> "Gonz·lez Larrazabal", Ander,'correo'=> "Ander.Gonzalez@elorrieta-
errekamari.com"),
'IN2AR3_14' => array('nombre'=> "Guardado De Las Moras", Andoni,'correo'=>
"Andoni.Guardado@elorrieta-errekamari.com"),
'IN2AR3_15' => array('nombre'=> "Hern·ez GarcÌa, Aritz",'correo'=> "Aritz.Hernaez@elorrieta-
errekamari.com"),
'IN2AR3_16' => array('nombre'=> "Isla Rodriguez, Xabier",'correo'=> "Xabier.Isla@elorrieta-
errekamari.com"),
'IN2AR3_17' => array('nombre'=> "Jimenez Marin, Maialen",'correo'=> "Maialen.Jimenez@elorrieta-
errekamari.com"),
'IN2AR3_18' => array('nombre'=> "MazÛn Garcia, Unai",'correo'=> "Unai.Mazon@elorrieta-
errekamari.com"),
'IN2AR3_19' => array('nombre'=> "Medrano Reguilon, Agustin",'correo'=> "Agustin.Medrano@elorrieta-
errekamari.com"),
'IN2AR3_20' => array('nombre'=> "Moreno GarcÌa, Juan Carlos",'correo'=> "JuanCarlos.Moreno@elorrieta-
errekamari.com"),
'IN2AR3_21' => array('nombre'=> "Navarro Garcia, Juan Alberto",'correo'=>
"JuanAlberto.Navarro@elorrieta-errekamari.com"),
'IN2AR3_22' => array('nombre'=> "NuÒo Veci, Unai Jesus",'correo'=> "Unai.Nuno@elorrieta-
errekamari.com"),
'IN2AR3_23' => array('nombre'=> "S·nchez Cristobal, Diego",'correo'=> "Diego.Sanchez@elorrieta-
errekamari.com"),
'IN2AR3_24' => array('nombre'=> "Valenciano Santa Cruz, Javier",'correo'=> "Javier.Valenciano@elorrieta-
errekamari.com"),
'IN2AR3_25' => array('nombre'=> "Freitas Carneiro Da Cunha, Kleber",'correo'=>
"Kleber.Freitas@elorrieta-errekamari.com"),
'IN2AR3_noexiste' => array('nombre'=> "¡lvarez noexiste,noexiste",'correo'=> "noexiste@elorrieta-
errekamari.com"), ); ?>
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>

También podría gustarte