alberto.zip | basilio.zip |
carlos.zip | david.zip |
fernando.zip | francisc.zip |
guisela.zip | javier.zip |
juan.zip | julian.zip |
manuel.zip | marcelo.zip |
saulo.zip | vicente.zip |
Pueden copiarselos en fauna.master.etsit.upm.es para proseguir con sus prácticas. Esta máquina esta configurada para dejar los ficheros en el subdirectorio public_html.
Ejecute su navegador y visualice la siguiente página:
http://master21.master.etsit.upm.es/ejemplo1.php
La página que está viendo ha sido generada por el siguiente fichero ejemplo1.php
<HTML> <BODY> hola <?php echo "mundo"; ?> </BODY> </HTML>
Observe las diferencias existentes entre el contenido original del fichero y la página visualizada.
El servidor web donde instalaremos el fichero es master21.master.etsit.upm.es, y dentro de las cuentas de usuario generadas para cada uno de los alumnos. Para ello, nos connectaremos al servidor mediante el programa F-Secure SSH, al cual puede accederse desde la carpeta Inicio Programas. Este servidor esta configurado para buscar las páginas de usuario dentro del directorio lib/www, por lo que nos moveremos a ese directorio, despues de habernops conectado:
cd lib/wwwCree un fichero llamado contar.php con el siguiente contenido:
<HTML> <BODY> <UL> <?php for ($i=1 ; $i<10 ; $i++) { echo " <LI> paso ".$i."\n"; } ?> </UL> </BODY> </HTML>
Desde su navegador visualice la página que acaba de crear (cambiando el nombre jose por su login).
http://master21.master.etsit.upm.es/~jose/contar.phpVea el código HTML de la página visualizada, y compruebe como los fragmentos PHP han sido sustituidos por el resultado de su ejecución.
Para ello vamos a realizar una página que implemente un PokeDex, acceso a una base de datos de Pokemons . Consistirá en un formulario donde especificaremos que consulta queremos realizar, accederemos a la base de datos, y mostraremos la información pedida.
Como ejemplo ilustrativo puede consultar este ejemplo ya resuelto:
La base de datos está implementada sobre el sistema de ficheros, usando directamente una colección de ficheros de texto, todos ellos almacenados bajo el directorio bdatos:
Para cargar este fichero puede usar la siguiente función, LeeNombres, que almacena todos los valores en el array $nombres, donde se usa el código del Pokemon como índice del array, y el nombre del Pokemon como el valor almacenado en cada posición del array.
function LeeNombres() { global $nombres; $linea = file("bdatos/nombres"); for ($i=0;$i < count($linea); ++$i) { $pos = strpos($linea[$i]," "); $cdg = trim(substr($linea[$i],0,$pos)); $name = trim(substr($linea[$i],$pos)); if ($cdg != "") { $nombres[0+$cdg] = $name; } } }
Para cargar este fichero puede usar la siguiente función, LeeIconos, que almacena todos los valores en el array $iconos, donde se usa el código del Pokemon como índice del array, y el nombre del fichero gráfico como el valor almacenado en cada posición del array.
function LeeIconos() { global $iconos; $linea = file("bdatos/iconos"); for ($i=0;$i < count($linea); ++$i) { $pos = strpos($linea[$i]," "); $cdg = trim(substr($linea[$i],0,$pos)); $icon = trim(substr($linea[$i],$pos)); if ($cdg != "") { $iconos[0+$cdg] = "icon/$icon"; } } }
Nótese que a los nombres de los ficheros se les añade el prefijo icon/, que es el directorio donde se suponen que están almacenados.
Todas estas imágenes pueden obtenerse del fichero icon.zip.
Para cargar el fichero de tipos puede usar la siguiente función, LeeTipos, que almacena todos los nombres de tipo en el array $tipos, donde se usa como índice del array el nombre del tipo, y en cada posición del array se almacena un array con los códigos del los pokemon de ese tipo.
function LeeTipos() { global $tipos; $linea = file("bdatos/tipos"); for ($i=0;$i < count($linea); ++$i) { $tipo = trim($linea[$i]); $tipos[$tipo] = file("bdatos/".$tipo); } }
function PintaNombrePokemon($nombre) { global $nombres; global $iconos; echo "<H2 ALIGN=center>Pokemons llamados $nombre</H2>"; echo "<CENTER>"; reset($nombres); while (list($cdg,$nomb) = each($nombres)) { if (stristr($nomb,$nombre)) { echo "<IMG SRC=".$iconos[$cdg]."> ".$cdg." ".$nombres[$cdg]; echo "<P>"; } } echo "</CENTER>"; } function PintaNumeroPokemon($cdg) { global $nombres; global $iconos; echo "<H2 ALIGN=center>Pokemon número $cdg</H2>"; echo "<CENTER>"; echo "<IMG SRC=".$iconos[$cdg]."> ".$cdg." ".$nombres[$cdg]; echo "</CENTER>"; } function PintaTodos() { global $nombres; global $iconos; echo "<H2 ALIGN=center>Todos los Pokemons</H2>"; echo "<TABLE BORDER=0 WIDTH=100%>"; for ($i=0 ; $i<251 ; $i++) { if ($i%3 == 0) echo "<TR>"; echo "<TD> <IMG SRC=".$iconos[$i+1]."> ".($i+1)." ".$nombres[$i+1]; } echo "</TABLE>"; } function PintaTipo($tipo) { global $tipos; global $nombres; echo "<H2 ALIGN=center>Pokemons de tipo $tipo</H2>"; echo "<TABLE BORDER=0 WIDTH=100%>"; for ($i=0;$i < count($tipos[$tipo]); ++$i) { if ($i%3 == 0) echo "<TR>"; $cdg = $tipos[$tipo][$i]; echo "<TD> <IMG SRC=icon/"; printf("%03d.gif",$cdg); echo "> $cdg ".$nombres[0+$cdg]; } echo "</TABLE>"; }
La solución completa del ejercicio se encuentra comprimida en pokemon.zip.