Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Implantacion de Aplicaciones Web - Apuntes v1 5 PDF
Implantacion de Aplicaciones Web - Apuntes v1 5 PDF
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 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.
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";
?> ?>
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;
?>
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']
NO SI
$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>
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)
SI
“$cont”
$cont ++
FIN
Inicio
$tope ← rand(1,100)
$cont ← 1
$cont NO
<=
$tope
SI
“$cont”
$cont ++
FIN
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.
Funciones de cadenas
➢ number_format() Permite formatear un numero como nos convenga.
➢ strip_tags($_GET[]) elimina los tags (<,>) al recuperar un texto con GET o POST
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.
function saludo($mensaje=”Hola”,$color="teal")
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
)
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
)
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.
IN2AR3_25
Columnas ↓ ↓
IN2AR3_25
Ejemplo de PHP que contiene un poco de todo
<?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
//con asort ordeno las capitales dentro del array pero manteniendo el numero de indice que le corresponde
asort($capitales);
//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>¿Cuá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>
<?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>";
//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";
}
FORMULARIO;
?>
</body>
</html>
Y este el resultado:
En la parte final hay otro botón para volver de nuevo para adivinar otra 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);
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
Organigrama:
Inicio
$primero ← $_GET['n1']
$segundo ← $_GET['n2']
$_GET
NO SI
$_GET['op']
==
“suma”
NO
$_GET['op'] $suma ← $primero + $segundo
==
“resta” SI
“$suma”
“$resta”
FIN
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”
NO SI
Isset
$_GET['op2']
“$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>
url que aparece al devolver el resultado (se visualiza el contenido de las variables, los datos):
SI
“$cont”
$cont ++
FIN
Inicio
$tope ← rand(1,100)
$cont ← 1
$cont NO
<=
$tope
SI
“$cont”
$cont ++
FIN
NO SI
$_GET['n1']
>
$_GET['n2']
$_num1 ← $_GET[n2]
$_num1 ← $_GET[n1] $_num2 ← $_GET[n1]
$_num2 ← $_GET[n2]
function saludo()//Esta funcion se define aqui y lo que hace es imprimir Hola en color azul
{
print "<p style=\"color:blue\"> Hola </p>";
}
/*
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).
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
<?php
pie();
?>
</body>
</html>
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)."€</p>";
/*OJO: Error comun*/
print "<p>Hay que pagar number_format($cantidad,2)€</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";
print "<ul>";
for($i=0;$i<count($datos2);$i++)
{
print "<li>$i->$datos2[$i]</li>";
}
print "</ul>\n";
?>
</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)
</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;
?>
</body>
</html>
El resultado es:
</head>
<body>
<h3>Listado alumnos de 2º 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º</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>
$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 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º 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º 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