Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EDUCACIN CONTINUA
MODALIDAD ONLINE
Curso de
WEB Y MULTIMEDIA
Creacin de sitios web
Gua didctica
1. DATOS INFORMATIVOS
AUTOR:
Franco Guamn Bastidas
ABRIL 2012
Reciba asesora virtual en: www.utpl.edu.ec
2. INDICE
UNIDAD 1: Puesta en marcha de un servidor web local
UNIDAD 2: XHTML Y CSS
UNIDAD 3: PHP Y MYSQL
Mi primer script
Comenzando con mySql
Conectar a mySql desde Php
Mostrar datos de una consulta
UNIDAD 4: FLASH (interaccin con datos externos)
Carga de imgenes
Carga de sonidos
Carga de animaciones
Carga de vdeos
Recuperacin de datos desde archivo TXT
Recuperacin de datos desde un archivo XML
Flash, php y bases de datos
UNIDAD 5: CMS DRUPAL
Instalacin
Configuracin
Instalacin de mdulos
Creacin de contenido
Personalizacin
ANEXO 1: El modelo de caja de CSS
ANEXO 2: Componer un diseo de 3 columnas en XHTML y CSS
3. INTRODUCCION
"No hay ms que asomarse a las puertas de la tecnologa y la ciencia contemporneas para
preguntarnos si es posible vivir y conocer ese mundo del futuro sin un enorme caudal de
preparacin y conocimientos".
La World Wide Web permite una manera ms organizada de acceder a la informacin
disponible en Internet, presentando una interfaz amigable con el usuario mediante
navegadores como Mozilla Firefox, Google Chrome, Microsoft Internet Explorer, etc.
El surgimiento de la World Wide Web ha ayudado a un crecimiento considerable de Internet
en la actualidad. Compaas pequeas, empresas grandes, ayuntamientos, estados, gobiernos
de distintos pases, universidades, bibliotecas, estn presentes en Internet.
El presente curso tiene como objetivo el adentrarnos en el desarrollo de este tipo de
herramientas, las cuales en la actualidad estn siendo muy utilizadas para la comparticin e
intercambio de informacin, as como tambin en desarrollar habilidades y criterios a tener en
cuenta en el diseo para que un sitio Web tenga xito.
Este curso trata de dar un enfoque actual y personal, tratando de ser til a quien est
interesado en el tema.
4. OBJETIVO
GENERAL:
Capacitar al estudiante para el desarrollo y modificacin de sitios web interactivos
mediante la utilizacin de herramientas como: Xhtml, Css, Php, mySql, ActionScrip y
Flash.
5. ORIENTACIONES GENERALES
PARA EL ESTUDIO
UNIDAD 1
PUESTA EN MARCHA DE UN SERVIDOR WEB
LOCAL
El servidor web, es un programa encargado de realizar la ejecucin continua de tareas, las
cuales estn a espera de peticiones realizadas por el cliente, en este caso el browser o
navegador. Estas peticiones son interpretadas y respondidas en forma adecuada, ya sea
mediante la presentacin de un sitio web, alguna funcionalidad o mediante la presentacin de
algn mensaje de error en el caso de existirlo.
Para obtener este servicio es necesaria la contratacin de Hosting y la obtencin de un
dominio bajo el cual funcionar nuestro sitio web, servicio que deber ser proporcionado por
alguna empresa con la infraestructura necesaria para gestionar tales peticiones a nivel externo
(Internet).
Adems el servicio de hosting deber prestarnos otros servicios necesarios como:
MYSQL: Sistema de base de datos relacional, encargado de la comunicacin entra las bases de
datos y los usuarios o aplicaciones.
PHP: Que es un lenguaje de programacin, diseado originalmente para la creacin de sitios
web dinmicos. Su funcin principal ser la de realizar peticiones a la base de datos.
El disponer de un servidor web local nos permitir entre otras cosas, el montar, disear y
testear nuestros trabajos sin necesidad de contratar un hosting y dominio.
Todos estos servicios estarn a nuestra disponibilidad sin necesidad de una conexin a internet.
Existen algunos programas de libre distribucin en Internet, los cuales nos permiten la
instalacin de un servidor local con todos los servicios involucrados, usted puede utilizar el que
le parezca ms cmodo ya que su forma de trabajo es bastante similar. Para el desarrollo de
este curso, personalmente he decidido utilizar el programa Xampp el cual es de libre
distribucin y fcil instalacin.
Para descargar el programa puede valerse de su browser preferido para buscarlo en Internet,
existen algunos lugares que nos lo facilitan. En todo caso me permito adjuntar la siguiente
direccin web: http://www.apachefriends.org/en/xampp-windows.html desde la cual puede
descargar el instalador necesario.
Este tipo de aplicaciones, nos permiten de una manera fcil la instalacin de todos los servicios
necesarios para el funcionamiento de un servidor Web.
Una vez instalado y dejando sus opciones por defecto, ya podemos decir que tenemos un
servidor web instalado en modo local. Se habr generado una carpeta xampp de instalacin
del programa y dentro de ella podremos observar que existe una carpeta llamada htdocs, la
cual ser nuestro sitio local. Dentro de este directorio deberemos colocar todos nuestros
proyectos de trabajo.
9
En la cual debemos activar los servicios Apache y MySql.
Ahora ejecutamos en el browser de nuestra preferencia la direccin 127.0.0.1. Si la
instalacin ha sido correcta y no tenemos ningn inconveniente, podremos visualizar una
ventana similar a la siguiente, caso contrario debemos revisar la instalacin del programa.
10
UNIDAD 2
XHTML Y CSS
XHTML es una reformulacin del HTML con aplicaciones XML, es una versin ms estricta y
limpia del HTML, y ya que est basado en XML, es posible su lectura e interpretacin en
dispositivos mviles que soporten XML.
Por ser un estndar, nuestros documentos XHTML deber respetar ciertas reglas bsicas como:
El DOCTYPE
Todos los documentos XHTML vlidos deben llevar un elemento llamado DOCTYPE, el cual
define el tipo de DTD (Definicin de tipo de Documento) a emplear en nuestros documentos,
es obligatorio y puede ser de uno de los siguientes:
Strict: este tipo de documento est principalmente ideado para su utilizacin con CSS,
separando completamente el contenido y la presentacin. Para ello no permite la
utilizacin de etiquetas y atributos ya en desuso orientados a la presentacin, como font,
center y otros. Escribiendo pginas en XHTML 1.0 Strict se consiguen pginas bien
estructuradas y fcilmente adaptables mediante CSS, pero tiene la desventaja de crear
incompatibilidades con ciertos navegadores.
Transitional: incluye todas las caractersticas de XHTML 1.0 Strict, pero aade
caractersticas orientadas a la presentacin ya en desuso.
Frameset: es una variante del Transitional para las pginas que utilizan frames.
11
Es comn que utilicemos incorrectamente las etiquetas, ej:
Este cdigo es entendido por los navegadores pero no sera considerado como XHTML, ya que
no se est realizando correctamente la utilizacin de las etiquetas.
La forma correcta debera ser:
<img SCR=imagen.gif>
12
Lo correcto sera:
<img src=imagen.gif />
Lo correcto sera:
<div align=center>
13
14
Antes de comenzar con el CSS quiero exponer aqu la importancia de usar los divs, un div es
bsicamente un contenedor, en el podemos meter cualquier clase de contenido, con la gran
ventaja de que los podemos manipular a nuestro antojo con CSS, colocarlo en cualquier parte
de la pagina, de cualquier tamao, de cualquier color, con bordes o sin ellos, con imgenes de
fondo o sin ellas, a diferencia de las tablas, los divs no se dividen por dentro, pero podemos
anidarlos y organizarlas casi como las tablas (en caso de ser necesario).
Ahora que ya tenemos una mejor comprensin de la utilizacin de estas herramientas, vamos
a ampliar un poco estos conocimientos realizando un ejercicio que nos acerca ms a la
estructura de un sitio web.
15
16
En el siguiente ejemplo realizaremos la creacin de una tabla de 2X2
<table>
<caption>Videojuegos</caption>
<tr>
<th>Ttulo</th>
<th>Gnero</th>
</tr>
<tr>
<td>Sonic</td>
<td>Plataformas</td>
</tr>
</table>
El resultado sera:
Ttulo
Sonic
Gnero
Plataformas
Por cada fila que queramos, abrimos una etiqueta <tr> e insertamos all las celdas que
correspondan. Dentro de cada celda podemos meter prcticamente cualquier cosa, pero
debemos tener siempre en mente que el objetivo de las tablas es tabular informacin.
Las tablas tienen algunos atributos que nos permiten modificar su visualizacin, entre los
principales tenemos: width, border, cellpacing, cellpadding. Es recomendable que usted
consulte y ample sus conocimientos acerca de ellos.
FORMULARIOS
Nos permiten recoger y procesar informacin introducida por visitantes de nuestro sitio web.
Esta informacin, a travs de PHP podra interactuar dinmicamente, ya sea con una base de
datos o con alguna direccin de correo electrnico. Dependiendo de los requerimientos
previos.
La etiqueta FORM
La etiqueta <form> es la encargada de definir lo que ser un formulario. Dentro de ella irn los
campos del que podremos organizarlos a nuestra conveniencia.
17
El atributo action recoge la accin a realizarse una vez que se haya pulsado el botn submit. En
ese ejemplo, el formulario ejecuta el script consulta.php.
El atributo method especifica cmo va a ser enviada la informacin.
La mayora de los campos de un formulario se crea con una sola etiqueta, <input>, y mediante
su parmetro type especificamos el tipo de campo que queremos.
Campos de texto
Este tipo de campo lo utilizaremos para recoger informacin desde el visitante de nuestro sitio
web. Un campo de texto bsico quedara as:
reas de texto
Nos permiten la insercin de varias lneas de texto. A diferencia de los campos antes
estudiados, aqu utilizamos la etiqueta <textarea>.
18
En este campo, adems de los atributos id, name y title, disponemos de dos para indicar
dimensiones: cols establece el ancho en caracteres y rows el alto en lneas.
<p>
<label for="comentario">
Algn comentario?
</label>
<br />
<textarea name="comentario" id="comentario" cols="30" rows="5">
Bla bla bla
</textarea>
</p>
Este campo tiene etiqueta de cierre. El texto que hay entre la etiqueta de apertura y la de
cierre es el valor por defecto que contendr el campo; en este caso "Bla bla bla.
Casillas de verificacin (checkbox)
Es una casilla que el usuario puede activar y desactivar. En este tipo de campo, el atributo
value funciona de manera algo distinta. Lo que escribamos en value es lo que nos saldr
como el valor de la variable indicada en el atributo name. Ej:
<p>
Has jugado a ...
<br />
<input type="checkbox" name="monkey1" id="monkey1" value="si" />
<label for="monkey1">
Monkey Island I
</label>
</p>
19
Tambin podemos hacer que una casilla est activada por defecto, si aadimos el atributo
checked="checked". As:
<p>
Has jugado a ...
<br />
<input type="checkbox"
checked="checked" />
<label for="monkey1">
Monkey Island I
</label>
name="monkey1"
id="monkey1"
value="si"
Botones de seleccin
Los radio buttons son casillas circulares agrupadas, en las que slo una puede estar activada a
la vez. Sirven para cuando queremos que el visitante slo seleccione una opcin de las
mltiples que se le dan.
Este tipo de campos se agrupan dando el mismo nombre de variable a cada botn. El atributo
name es el mismo para todo el grupo, el id en cada botn debe ser distinto, es el nombre
dado a ese botn especficamente. En otras palabras, los radio buttons son los nicos campos
en los que la id y name deben ser diferentes. El atributo value contiene el texto que tendr la
variable en caso de que se seleccione ese botn. Disponemos adems del atributo checked por
si queremos marcar alguna opcin por defecto.
20
<p>
Ecuador est ubicado en:<br />
<input type="radio" name="ubicacion" id="bt_america" value="amer"
checked="checked" />
<label for="bt_america">
Amrica
</label><br />
<input type="radio" name="ubicacion" id="bt_asia" value="asia" />
<label for="bt_asia">
Asia
</label><br />
<input type="radio" name="ubicacion" id="bt_africa" value="afri" />
<label for="bt_africa">
Africa
</label>
</p>
Listas de seleccin
De manera similar a los radio buttons, nos permiten presentar varias opciones de las cuales el
usuario deber escoger solamente una. Este tipo de elementos nos presenta la ventaja de que
aparece plegada y no ocupa mayor espacio en nuestro sitio.
Se crea con la etiqueta <select> </select>. Entre ellas, insertamos las opciones que tenemos
con la etiqueta <option>. Pongamos el mismo ejemplo utilizado anteriormente.
<p>
<label for="ubicacion">
Ecuador est ubicado en :
</label><br />
<select name="ubicacion" id="ubicacion">
<option value="amer" selected="selected"> Amrica </option>
<option value="asia"> Asia </option>
<option value="afri" > Africa </option>
</select>
</p>
Con selected="selected" indicamos cul es la opcin por defecto, en este caso Amrica.
21
Botones de enviar y reestablecer
Ya hemos visto todos los campos de formulario que podemos crear, ahora slo nos falta
comentar dos botones especiales: el de enviar (submit) y el de reestablecer (reset).
Ambos se crean con <input>. El atributo id no tiene mucho sentido, a menos que usemos CSS
para cambiar su aspecto de un modo concreto y exclusivo. Asmismo, name tampoco nos ser
til si no empleamos algn tipo de script para tratar la informacin.
En value indicaremos el texto que aparecer en el botn. El botn de enviar se encarga de
mandar la informacin del formulario, segn lo que hayamos especificado en <form>. Para
crear el botn, simplemente indicamos type="submit":
<input type="submit" value="Enviar" />
El botn de reestablecer borra el formulario y vuelve a poner los valores por defecto. til para
formularios largos. Lo conseguimos con type="reset":
<input type="reset" value="Borrar" />
22
UNIDAD 3
PHP y MYSQL
Mi primer script
Una vez que ya tenemos instalados PHP y MySQL, y el servidor Apache configurado para
usarlos, podemos comenzar a escribir nuestro primer Script en PHP.
Ejemplo script php
<html>
<body>
<?php
$ myvar = "Hola Mundo. Este es mi primer script en PHP";
// Esto es un comentario
echo $myvar;
?>
</body>
</html>
Una vez escrito esto lo guardamos en un fichero con la extensin .php, y lo colocamos en
nuestro servidor bajo una carpeta llamada ejemphp, http://127.0.0.1/ejemphp/test.php.
Ahora si ponemos esta URL en nuestro navegador veremos una lnea con el texto "Hola
Mundo. Este es mi primer script en PHP".
Lo primero que apreciamos en el script son sus delimitadores. En la primera lnea del script
vemos <?php que nos indica que comienza un script en PHP, y en la ltima colocamos ?>
para indicar el final del script. Hay que destacar que todas las lneas que se encuentre entre
estos delimitadores deben acabar en punto y coma, excepto las sentencias de control (if,
swich, while, etc.).
Como en toda programacin, es importante poner muchos comentarios, para lo cual si
queremos comentar una sola lnea tenemos que poner al principio de la lnea //, si lo que
queremos es comentar varias utilizaremos los delimitadores /* */.
Para que el servidor enve texto utilizaremos la instruccin echo, aunque tambin podemos
utilizar printf.
Finalmente, vemos que la palabra myvar comienza con el signo dlar ($). Este smbolo le
indica a PHP que es una variable. Nosotros le hemos asignado un texto a esta variable, pero
tambin pueden contener nmeros o arrays. Es importante recordar que todas las variables
comienzan con el signo dlar.
23
Realizamos la creacin de nuestra base de datos, en este caso le pondr de nombre mydb.
Recuerde que la creacin de esta base de datos y las diferentes tablas podramos realizarlas en
modo de consola, pero para facilitarnos las cosas he decidido utilizar el entorno grfico
proporcionado por la aplicacin.
Ahora realizaremos la creacin de una tabla y algunos registros.
24
25
En este script (conexin.php), primeramente hemos creado la clase variables en la cual
deberamos poner todos los datos para realizar la conexin a la base de datos. Algunos de
estos datos como usuario y clave deberan venir desde nuestra aplicacin en ejecucin.
En la funcin conectarse, luego de recoger las variables ya ingresadas, hacemos un llamado a
la funcin mysql_connect(), que abre una conexin con el servidor MySQL en el Host
especificado (en este caso la misma mquina en la que est alojada el servidor MySQL,
localhost). Tambin debemos especificar un usuario root, y si fuera necesario un password
para el usuario indicado. El resultado de la conexin es almacenado en la variable $conn.
Con la funcin mysql_select_db() PHP le dice al servidor que en la conexin $conn nos
queremos conectar a la base de datos mydb.
Si no hemos tenido ningn error en realizar la conexin al servidor indicado o seleccionar la
base de datos escogida, se nos enva la conexin realizada bajo la variable $conn.
En este script, primeramente hacemos un llamado al script anteriormente creado desde donde
recogemos la conexin en la variable $conn, luego en una variable en este caso $consulta
almacenamos la consulta de tipo SQL que haremos a la base de datos.
La siguiente funcin mysql_query(), es la que hace el trabajo duro, usando el identificador de
la conexin ($consulta), enva la instruccin SQL al servidor MySQL para que ste la procese. El
resultado de sta operacin es almacenado en la variable $resultado.
26
En este script hemos introducido dos novedades, la ms obvia es la sentencia de control
while(), que tiene un funcionamiento similar al de otros lenguajes, ejecuta una cosa mientras
la condicin sea verdadera. En esta ocasin while() evala la funcin mysql_fetch_array(), que
devuelve un array con el contenido del registro actual (que se almacena en $fila) y avanza una
posicin en la lista de registros devueltos en la consulta SQL.
La funcin mysql_fetch_array() admite referencias numricas a los campos obtenidos de la
consulta, as como podemos tambin referenciar a los campos por su nombre. El primer
campo referenciado es el 0, el segundo el 1 y as sucesivamente.
Para realizar una consulta relacionando dos tablas, he realizado la creacin de otra tabla que la
he llamado empleo en la cual tenemos un campo que permite relacionar los registros de
ambas tablas.
Realice la creacin de una segunda tabla llamada empleo con los
campos a continuacin mostrados. Inserte algunos registros
relacionados con la tabla anteriormente creada. (Utilice el campo
dni para relacionar ambas tablas)
En esta consulta deseo presentar los datos personales extrados desde la tabla agenda,
adems del cargo y sueldo extrados de la tabla empleo de acuerdo con el dni solicitado.
<?php
include("conexion.php");
extract($_POST);
$conn=conectarse();
$dni_empleado="0978654312";
$a="agenda a";
$e="empleo e";
$consulta="SELECT a.nombre, a.direccion, a.email, e.cargo, e.basico
FROM $a, $e WHERE a.dni = e.dni AND e.dni=$dni_empleado";
echo "<table border = '1'> \n";
echo "<tr><td align='center'><strong>Nombre</strong></td><td
align='center'><strong>Direccion</strong></td><td
align='center'><strong>Correo</strong></td><td
27
align='center'><strong>Cargo</strong></td><td
align='center'><strong>Sueldo</strong></td></tr> \n";
$resultado=mysql_query($consulta);
while($fila=mysql_fetch_array($resultado)){
echo
"<tr><td>$fila[0]</td><td>$fila[1]</td><td>$fila[2]</td><td
>$fila[3]</td><td>$fila[4]</td></tr> \n";
}
echo "</table> \n";
mysql_free_result($resultado);
$conn="";
?>
Como usted podr ver, he realizado la creacin de unas variables que harn la vez de alias a
las tablas de nuestra base de datos. Esto nos permite facilitar la relacin que haremos al
solicitar la consulta.
Es muy conveniente que usted revise la forma de utilizar las
sentencias INSERT INTO, UPDATE, DELETE y otras necesarias en el
tratamiento de bases de datos.
Vamos a realizar un ejercicio en el cual vamos a aplicar estos tres tipos de sentencias en las
tablas de nuestra base de datos.
Primeramente necesitar un archivo que me permita presentar las diferentes opciones de
administracin a realizar. En este caso lo llamar demo.html.
<html>
<body>
<p><a href="formInserta.php" target="_self">Insertar registros</a></p>
<p><a href="formModifica.php" target="_self">Modificar registros</a></p>
<p><a href="formElimina.php" target="_self">Eliminar registros</a></p>
</body>
</html>
28
Dni
: <input type="Text" name="dni" /><br>
Cargo
: <input type="Text" name="cargo"><br>
Sueldo
: <input type="Text" name="sueldo"><br>
<input type="Submit" name="enviar" value="Aceptar informacin">
</form>
</body>
</html>
<html>
<body>
<?php
A
include("conexion.php");
$nombre=$_POST['nombre'];
$direccion=$_POST['direccion'];
$telefono=$_POST['telefono'];
$email=$_POST['email'];
$dni=$_POST['dni'];
$cargo=$_POST['cargo'];
$sueldo=$_POST['sueldo'];
C
$conn=conectarse();
$consulta="INSERT INTO agenda (nombre, direccion, telefono, email,
dni) VALUES ('$nombre', '$direccion', '$telefono', '$email',
'$dni')";
E
$resultado=mysql_query($consulta);
$consulta="INSERT INTO empleo (dni, cargo, basico) VALUES ('$dni',
'$cargo', '$sueldo')";
$resultado=mysql_query($consulta);
echo "Gracias! Hemos recibido sus datos.\n";
$conn="";
?>
</body>
</html>
29
2. La opcin de modificar registros hace un llamado al archivo "formModifica.php" en el
cual solamente estamos recogiendo el campo dni del registro que queremos
modificar.
<html>
<body>
<form method="post" action="modifica.php">
Dni : <input type="Text" name="dni" /><br />
<input type="Submit" name="enviar" value="Aceptar informacin">
</form>
</body>
</html>
B
D
F
?>
A
include("conexion.php");
$dni=$_POST['dni'];
$conn=conectarse();
C
$a='agenda a';
E
$e='empleo e';
$consulta="SELECT a.nombre, a.direccion, a.telefono, a.email,
e.cargo, e.basico FROM $a, $e WHERE a.dni=e.dni AND e.dni=$dni";
$resultado=mysql_query($consulta);
$fila=mysql_fetch_array($resultado);
G
<form method="post" action="actualiza.php">
Nombre
: <input type="Text" name="nombre" value="<?php echo
$fila[0] ?>" /><br />
Direccin: <input type="Text" name="direccion" value="<?php
echo $fila[1] ?>" /><br />
Telfono : <input type="Text" name="telefono" value="<?php echo
$fila[2] ?>" /><br />
E-mail
: <input type="Text" name="email" value="<?php echo
$fila[3] ?>" /><br />
Dni
: <input type="Text" name="dni" value="<?php echo $dni
?>" /><br />
Cargo
: <input type="Text" name="cargo" value="<?php echo
$fila[4] ?>" /><br />
Sueldo
: <input type="Text" name="sueldo" value="<?php echo
$fila[5] ?>" /><br />
<input type="Submit" name="enviar" value="Aceptar informacin"
/>
</form>
<?php
$conn="";
?>
</body>
</html>
30
<html>
<body>
<?php
include("conexion.php");
$nombre=$_POST['nombre'];
$direccion=$_POST['direccion'];
$telefono=$_POST['telefono'];
$email=$_POST['email'];
$dni=$_POST['dni'];
$cargo=$_POST['cargo'];
$sueldo=$_POST['sueldo'];
$conn=conectarse();
$consulta="UPDATE agenda SET nombre='$nombre',
direccion='$direccion', telefono='$telefono', email='$email' WHERE
dni=$dni";
$resultado=mysql_query($consulta);
$consulta="UPDATE empleo SET cargo='$cargo', basico='$sueldo'
WHERE dni=$dni";
$resultado=mysql_query($consulta);
echo "Gracias! Hemos modificado sus datos.\n";
$conn="";
?>
</body>
</html>
31
<html>
<body>
<form method="post" action="elimina.php">
Dni
: <input type="Text" name="dni" /><br />
<input type="Submit" name="enviar" value="Buscar">
</form>
</body>
</html>
Este nuevo script se encargar de presentar en pantalla los datos a ser eliminados segn sea el
pedido del script anterior.
<html>
<body>
<?php
include("conexion.php");
$dni=$_POST['dni'];
$conn=conectarse();
$a='agenda a';
$e='empleo e';
$consulta="SELECT a.nombre, a.direccion, a.telefono, a.email,
e.cargo, e.basico FROM $a, $e WHERE a.dni=e.dni AND e.dni=$dni";
$resultado=mysql_query($consulta);
$fila=mysql_fetch_array($resultado);
?>
<form method="post" action="borra.php">
Nombre
: <input type="Text" name="nombre" value="<?php echo
$fila[0] ?>" /><br />
Direccin: <input type="Text" name="direccion" value="<?php echo
$fila[1] ?>" /><br />
Telfono : <input type="Text" name="telefono" value="<?php echo
$fila[2] ?>" /><br />
E-mail
: <input type="Text" name="email" value="<?php echo
$fila[3] ?>" /><br />
Dni
: <input type="Text" name="dni" value="<?php echo $dni ?>"
/><br />
Cargo
: <input type="Text" name="cargo" value="<?php echo
$fila[4] ?>" /><br />
Sueldo
: <input type="Text" name="sueldo" value="<?php echo
$fila[5] ?>" /><br />
<input type="Submit" name="enviar" value="Eliminar informacin" />
</form>
<?php
$conn="";
?>
</body>
</html>
Una vez de que el usuario verifique que son los datos que desea eliminar, llama al script
borra.php que se encargar de eliminar el registro de la base de datos.
32
<html>
<body>
<?php
include("conexion.php");
$dni=$_POST['dni'];
$conn=conectarse();
$consulta="DELETE FROM agenda WHERE dni=$dni";
$resultado=mysql_query($consulta);
$consulta="DELETE FROM empleo WHERE dni=$dni";
$resultado=mysql_query($consulta);
echo "Gracias! Hemos eliminado sus datos.\n";
$conn="";
?>
</body>
</html>
33
UNIDAD 4
FLASH (INTERACCIN CON DATOS EXTERNOS)
Como hemos visto en el primer vdeo explicativo, flash adems de ser utilizado para la creacin
de animaciones, interpolaciones, movimientos y dems efectos, puede ser tambin utilizado
para interactuar con archivos externos como imgenes vectoriales, mapa de bits, sonidos,
vdeos, o algunas otras aplicaciones creadas tambin en Flash.
As tambin puede interactuar con archivos externos para el intercambio de datos. Como
ejemplos vamos a realizar la recuperacin y utilizacin de datos importados desde archivos de
tipo txt, xml, y desde bases de datos a travs de aplicaciones tipo php ya estudiadas.
Vamos a ir observando cada uno de estos casos, cuyos ejemplos podrn ser descargados del
Entorno Virtual de Aprendizaje.
Aunque el cdigo de los programas puede ser implementado en
Macromedia Flash 8, es recomendable que usted tenga instalado
mnimo el Adobe Flash CS3, ya que originalmente sern creados en
Adobe Flash CS4 y este programa puede cambiar el formato de sus
archivos solamente hasta la versin anterior.
34
CARGA DE IMGENES
La carga de imgenes se realiza por medio del comando loadMovie para ser aplicada a un
movieClip que en nuestro ejemplo tendr el nombre de mc_imagenes como instancia y en su
interior no tendr nada.
Este comando puede ser utilizado de algunas maneras como:
1. Cargar a un movieClip desde un fotograma. (ver cargaImagenes1.fla)
loadMovie("imagenes/Mustang01.jpg", mc_imagenes);
Ejemplo 1. Carga de imagen en movieClip
mc_imagenes.loadMovie("imagenes/Mustang01.jpg");
Ejemplo 2. Carga de imagen en movieClip
Esta carga de imgenes puede ser parte de un programa que interactivamente actu sobre
algunas imgenes como lo veremos en el siguiente ejemplo. (ver cargaImagenes3.fla)
En el ejemplo adjunto usted podr ver en la librera que se ha utilizado un solo movieClip
llamado imgenes, del cual he puesto una copia con el nombre de mc_imagenes1 en la
primera capa y otra con el nombre mc_imagenes2 en la segunda capa.
Tambin se ha creado una capa con el nombre acciones en la cual se desarrollara toda la
programacin que a continuacin explicar.
var contador:Number=1;
loadMovie("imagenes/Mustang0"+contador+".jpg", mc_imagenes1);
En este primer fotograma realizamos la creacin de una variable que me permitir generar
nmeros del 1 al 4 que es el nmero imgenes que se desea presentar.
Tambin se realiza la carga de la primera imagen en el primer movieClip.
35
if(contador==4){
contador=1;
}else{
contador++;
}
loadMovie("imagenes/Mustang0"+contador+".jpg", mc_imagenes2);
mc_imagenes2._alpha=0;
En este fotograma primeramente generamos el siguiente valor para la variable contador, luego
cargamos la imagen que toca en el segundo movieClip pero le damos una transparencia total
para que ya se encuentre presente pero an no la veamos.
mc_imagenes2._alpha+=5;
mc_imagenes1._alpha-=5;
Cdigo fotograma 8 cargaImagenes3.fla
Con estas sentencias aumentamos la visibilidad al segundo movieClip mientras que el primero
va aumentando su transparencia.
if(mc_imagenes2._alpha<=95){
gotoAndPlay(8);
}else{
loadMovie("imagenes/Mustang0"+contador+".jpg", mc_imagenes1);
mc_imagenes1._alpha=100;
gotoAndPlay(2);
}
36
Para aumentar o disminuir el nmero de imgenes, solamente deber crearlas con el nombre
que les corresponde, adjuntarlas en el directorio indicado y aumentar o disminuir el nmero al
cual debe llegar la variable en el proceso condicional del tercer fotograma.
Para aumentar el tiempo de duracin de las imgenes presentes, deber insertar ms
fotogramas (f5) entre el fotograma tres y el fotograma ocho, y luego modificar en el ltimo
fotograma de cdigo la posicin en donde se encuentra ahora el fotograma que aumenta o
disminuye opacidad.
CARGA DE SONIDOS
La carga de sonidos se realiza creando una nueva variable que ser de tipo objeto de sonido
en la cual cargaremos el sonido importado desde alguna URL especfica como lo vemos en el
cdigo adjunto. (ver cargaSonidos.fla)
CARGA DE ANIMACIONES
Para la carga de animaciones utilizaremos los mismos comandos que se utilizan para la carga
de imgenes. (ver cargaSwfs.fla)
Para ilustrar este ejemplo he modificado el archivo antes utilizado para interactuar con
imgenes, en el cual solamente he realizado el cambio del tipo de archivo a cargar.
37
"swfs/animacion"+contador+".swf"
As, he creado cuatro animaciones en flash que han sido almacenadas en la carpeta swfs
desde donde sern importadas a la animacin que los solicite.
Para ejecutar este ejemplo debe guardar los archivos
animacion1.swf,
animacion2.swf,
animacion3.swf
y
animacion4.swf de flash subidos al EVA en la carpeta
correspondiente.
Estas nuevas animaciones como usted podr ver, han sido creadas insertando la imagen
directamente en la animacin. Este tipo de elaboracin de animaciones es ms fcil de
elaborar pero como usted ver en el siguiente ejemplo, representa aumentar el peso de sus
archivos.
Las animaciones, podran ser ms livianas si la imagen que utilizo en ellas fuera llamada
dinmicamente desde la carpeta contenedora. (ver cargaSwfsb.fla)
Para ejecutar este ejemplo debe guardar los archivos
animacion1b.swf, animacion2b.swf, animacion3b.swf y
animacion4b.swf de flash subidos al EVA en la carpeta
correspondiente.
Si usted analiza cada una de las animaciones ltimamente citadas, podr ver que son un poco
ms difciles de realizar, pero en comparacin con las antes realizadas representan un 8% del
peso total y por consiguiente una mayor ventaja al ser utilizadas en Web.
En las dos clases de animaciones antes utilizadas (ej: animacion1.swf y animacion1b.swf),
usted podr ver que dentro de la carpeta contenedora el primero se ejecuta sin ningn
problema, pero el segundo no nos presenta nada.
Esto se da porque el segundo ejemplo utiliza una ruta para localizar el archivo de imagen a
insertar.
imagen.loadMovie("imagenes/Mustang01.jpg");
El momento que esta animacin es llamada por el programa principal cargaSwfsb.swf, esta
se vuelve parte de l y por lo tanto la ruta se evala a partir de la ubicacin del archivo padre,
en este caso cargaSwfsb.fla.
38
En el caso de que nosotros deseemos que funcione en el directorio contenedor, la ruta debera
ser:
imagen.loadMovie("../imagenes/Mustang01.jpg");
Las rutas de carga de archivos en Flash son tratadas al igual que en HTML, en este caso ../
significa que deber primero subirse un nivel para continuar con la bsqueda de la carpeta
correspondiente.
Como usted puede ver, por medio de este tipo de carga de elementos externos, podemos
crear animaciones bastante livianas para la web, las cuales dependiendo de la programacin,
harn los llamados a los diferentes elementos solamente en el momento en que vayan a ser
utilizados, los mismos que se descargarn luego de ello.
Esta forma de programacin nos permite tener aplicaciones mucho ms sencillas de depurar y
de insertar en nuestros sitios web.
Al contrario, si nosotros realizamos toda la programacin, inclusin de archivos y animaciones
en un solo archivo o animacin, nos generar un producto bastante pesado para ser cargado
en web y muy poco recomendable ya que como usuarios casi nunca tenemos la paciencia para
esperar que se cargue algo pesado para poder visualizarlo.
CARGA DE VDEOS
La insercin de vdeos es relativamente sencilla, ya que el mismo programa nos lo puede dar
realizando y cuenta con algunos skins para ser utilizados en su reproduccin.
Para ello vamos a seguir las siguientes instrucciones:
Con un nuevo archivo de flash vamos a ir al men: Archivo -> Importar -> Importar vdeo
39
Escogemos el video a insertar (debe ser en formato .flv), y pasaremos a la ventana anterior a
digitar el botn siguiente.
40
En esta ventana se nos permite escoger el skin o modo de presentacin como deseamos ver
nuestro vdeo.
Luego pulsamos siguiente y finalizar y ya tendremos nuestro archivo de video cargado.
41
Luego de esto solamente debemos configurar el tamao como queremos se nos presente, y
guardarlo en la carpeta correspondiente. (ver video.fla)
Este archivo al igual que las animaciones anteriormente vistas, puede ser llamado por algn
archivo principal (ver cargaVideo.fla), y si tenemos algn problema con las rutas de acceso al
archivo del vdeo, podemos modificarlas pulsando las teclas (Shift f7) para modificar las
propiedades del componente.
42
Recuerde modificar las rutas de acceso tanto para el archivo que importa el vdeo como para el
archivo que se crea para el control del mismo.
43
Estos archivos de tipo txt, deben ser grabados con el formato de texto de tipo unicode para
que los caracteres especiales como y tildes sean reconocidas sin problemas. El lmite de
contenido en estas variables ser cuando encuentre un nuevo smbolo &, no cuando
encuentre un salto de lnea o comillas como en el ejemplo anterior en el cual tenemos tres
variables.
As tambin, estas variables pueden contener algunas etiquetas bsicas de HTML, las cuales
sern interpretadas por flash.
Ejemplo: doc01Css.txt
&titulo=<p class='tituloSup'>UNIVERSIDAD TCNICA PARTICULAR DE
LOJA</p>
&misvis=<p class='titulo'>Desde el humanismo cristiano, formar al
hombre a travs de la ciencia para que sirva a la sociedad</p>
&resumen=<p>La universidad trata de llegar a todos los rincones
del pas, a todas aquellas personas que por una u otra razn no
pueden acceder a una educacin de modalidad presencial.<p><br><p
class='concepto'>Para ello cuenta con 84 centros universitarios
en todo el pas y cuatro en el exterior.</p><br><li>Escuelas<br
/>Facultades<br />Cittes</li><br><p><a
href="http://www.utpl.edu.ec">http://www.utpl.edu.ec</a></p>
Para realizar la carga de variables desde un archivo de texto, debemos crear un moviClip que
contenga los campos de texto que deseamos cargar en los cuales configuraremos entre sus
propiedades el nombre de variables como el de aquellas que vienen del archivo de texto. (ver
cargatxt.fla)
Estos campos de texto debern ser de tipo texto dinmico.
En nuestro ejemplo he creado un movieClip que tiene el nombre mc_texto como instancia,
dentro de l tenemos tres campos de texto sin nombre como instancia pero nombrados como
variables con los nombres de los campos que vienen del archivo doc01.txt. Adems
dependiendo del contenido que se vaya a almacenar en ellos debern tener o no un
comportamiento de lnea nica o multilnea.
Para finalizar, ingresamos en un fotograma el cdigo que me permite cargar los datos.
mc_texto.loadVariables("txts/doc01.txt");
44
45
La organizacin se realiza en forma de rbol, en donde para acceder a ciertos datos debemos
partir de la raz y seguir una ruta determinada.
informacion
info1
info2
iInfo3
color
cuantos
menu
opcion
opcion
opcion
opcion
opcion
As, cada una de estas ramas, tendr su nombre determinado y la continuidad por ellas nos
permitir acceder a sus datos.
firstChild
childNodes[0]
childNodes[1]
childNodes[2]
childNodes[3]
childNodes[4]
childNodes[5]
childNodes[0]
childNodes[1]
childNodes[2]
childNodes[3]
childNodes[4]
46
ruta="xmls/doc01.xml";
var vars_xml:XML = new XML();
vars_xml.ignoreWhite = true;
vars_xml.load(ruta);
vars_xml.onLoad = function(exito){
if (exito){
_global.var01=vars_xml.firstChild.childNodes[0].firstChild.nodeValue;
_global.var02=vars_xml.firstChild.childNodes[1].firstChild.nodeValue;
_global.var03=vars_xml.firstChild.childNodes[2].firstChild.nodeValue;
_global.exa_color=vars_xml.firstChild.childNodes[3].firstChild.nodeValue;
_global.cantidad=Number(vars_xml.firstChild.childNodes[4].
firstChild.nodeValue);
for(i=0; i<_global.cantidad; i++){
_global["men"+i]=vars_xml.firstChild.childNodes[5].childNodes[i].
firstChild.nodeValue;
}
}
nextFrame();
}
stop();
Cdigo para importar datos de archivo de tipo XML.
Luego tenemos una funcin que estar encargada de cumplir dos tareas principales, la
distribucin de los datos importados en variables individuales y dar la orden de avanzar al
siguiente fotograma.
En la primera tarea, se crea variables globales para que sean utilizadas desde cualquier punto
de nuestro programa y les asigna uno de los valores importados, ej:
_global.var01=vars_xml.firstChild.childNodes[0].firstChild.nodeValue;
Con esta sentencia, y fijndonos en la descripcin de rbol antes detallada, vemos que en la
variable _global.var01 se almacena lo que originalmente habamos almacenado entre las
etiquetas <info1> de nuestro archivo XML.
La parte de la sentencia que dice .firstChild.nodeValue me permite extraer la
informacin desde el lugar en donde nos ubicamos.
47
El proceso repetitivo generar valores para la variable i, segn la cantidad tambin trada
desde el archivo XML. En este caso se generarn nmeros del 0 al 4 que son los subndices que
necesitamos para acceder a las opciones de la etiqueta <menu>.
As mismo, se generan dinmicamente variables para almacenar los valores.
En flash la generacin dinmica de nombres se la realiza con la utilizacin de corchetes para
reemplazar al punto. Para acceder a ellas podramos utilizar la misma notacin o la tradicional.
Ej: Si i = 2 y segn nuestro archivo XML.
_global["men"+i] = _global["men"+2] = _global.men2 = Comunicaciones
Una vez que ya tenemos en nuestro programa los datos, pasamos al siguiente fotograma en
donde encontramos el siguiente cdigo.
mc_texto.titulo=_global.var01;
mc_texto.misvis=_global.var02;
mc_texto.resumen=_global.var03;
on(release){
nextFrame();
}
Cdigo en botn
Como podr usted ver en este tercer fotograma no se ha insertado manualmente ningn
elemento, solamente tenemos un fotograma de cdigo en la capa acciones, el cual estar
encargado de la generacin dinmica de elementos, que en este caso son copias de un
48
movieClip almacenado en la biblioteca y que entre sus propiedades tiene activada la opcin de
Exportar para ActionScript.
posX=100;
posY=50;
for(i=0; i<_global.cantidad; i++){
this.attachMovie("mc_duplicar", "opcion"+i, this.getNextHighestDepth(),
{_x:posX, _y:posY});
this["opcion"+i].descripcion.text=_global["men"+i];
posY+=30;
}
Primeramente he declarado dos variables con valores iniciales para las posiciones de los
nuevos elementos.
Luego en un proceso repetitivo generaremos los subndices necesarios segn el nmero trado
desde el archivo XML
La sentencia attachMovie trae en este caso una nueva copia del movieClip que tenemos en
la librera mc_duplicar, da un nuevo nombre como instancia a esa nueva copia opcin+i, le
asigna un nivel y por ltimo una posicin en la pantalla.
La siguiente sentencia pone el nombre correspondiente trado desde el XML al campo de texto
que se encuentra dentro de este movieClip.
Por ltimo se incrementa la posicin Y para el ingreso del nuevo elemento a generarse.
Como usted puede ver, la lgica para la generacin iterativa de elementos es relativamente
sencilla.
Previamente debemos haber preparado el movieClip a duplicar.
En nuestro caso, ste consta de dos capas, la primera descripcin en la cual hemos colocado un
campo de texto dinmico llamado descripcion y que ya lo utilizamos en el cdigo antes visto
para actualizar el nombre que le corresponde.
La segunda capa fondo que en este caso podra ser cualquier elemento (grafico, animacin,
botn, etc), en nuestro caso es otro movieClip que ser utilizado por la siguiente sentencia
para personalizar su color de acuerdo al provisto por el archivo XML.
onClipEvent(load){
botonColor = new Color(this);
botonColor.setRGB(_global.exa_color);
}
Cdigo para asignacin dinmica de color
49
Est cdigo deber necesariamente ponerse en el clip de pelcula. Como usted puede apreciar,
a diferencia del cdigo que se asigna a un botn, en un movieClip se solicita atender a otro
tipo de eventos, en este caso la sentencia nos dice que cuando el movieClip se cargue en el
escenario, se cree una variable de tipo objeto de color y luego se le asigne el color que fue
enviado desde el archivo XML.
Usted puede ingresar las capas que desee en el clip a duplicarse, estos clips podran tener
botones, animaciones, etc.
La presentacin de datos en flash podra ser optimizada con la utilizacin de estilos, los cuales
pueden ser llamados desde un archivo externo.
Vamos a ver su aplicacin en el ejemplo original de presentacin desde un archivo de texto.
(Ver cargatxtCss.fla)
Para realizar este ejemplo, hemos tenido que hacer una pequea modificacin en el movieClip
mc_texto, ahora cada uno de los campos de texto debern tambin tener un nombre de
instancia, en este caso le hemos puesto texto1, texto2 y texto3.
El cdigo antes utilizado cambia al siguiente:
Aqu primeramente declaramos una variable en la cual cargaremos nuestra hoja de estilos,
declaramos la ruta en donde se encuentra la y pasamos a cargarla.
Cargamos el archivo de texto con cdigos html. (archivo detallado en la carga de archivos de
texto)
Si no hemos tenido ningn inconveniente, aplico la hoja de estilos a cada uno de los textos
dentro del movieClip, caso contrario presento un mensaje de error.
50
id.text="";
mensaje="";
stop();
51
En este cdigo primeramente hemos creado dos variables de tipo objeto LoadVars(), cada
una de ellas almacenar las variables que enviemos o recuperemos de nuestro escript de PHP.
Estas variables u objetos son de tipo compuestos, es decir que dentro de ellas pueden
almacenar algunas variables ms.
En la tercera lnea de cdigo recogemos en la subvariable Flash_a_Php.dni lo que antes
habamos ingresado en el campo de texto Id. Luego se ejecuta la penltima lnea de cdigo
la cual est encargada de enviar dicha variable al archivo consulta.php y recoger una
respuesta en la variable Php_a_Flash.
La secuencia de eventos nos lleva hasta el archivo consulta.php en donde se ejecutan las
siguientes acciones:
Archivo consulta.php
<?php
include("conexion.php");
$dni=$_POST['dni'];
$conn=conectarse();
$a='agenda a';
$e='empleo e';
$consulta="SELECT a.nombre, a.direccion, a.telefono, a.email,
52
$contenido=$contenido."&nombre=".$fila['nombre']."&direccion
=".$fila['direccion']."&telefono=".$fila['telefono']."&em
ail=".$fila['email']."&cargo=".$fila['cargo']."&sueldo=".
$fila['basico'];
echo $contenido;
mysql_free_result($resultado);
$conn="";
?>
53
texto dinmico. Con el siguiente cdigo simplemente ingresamos en estos campos de texto
los valores que tenemos en el arreglo y que han sido trados desde la base de datos.
campos.dni.text=Flash_a_Php.dni;
campos.nombre.text=_global.reg[0];
campos.direccion.text=_global.reg[1];
campos.telefono.text=_global.reg[2];
campos.email.text=_global.reg[3];
campos.cargo.text=_global.reg[4];
campos.sueldo.text=_global.reg[5];
Como segundo ejemplo vamos a realizar la consulta de algunos registros que cumplan cierta
condicin. Para ello he realizado algunas pequeas modificaciones al ejemplo anteriormente
visto, como el campo que utilizamos para buscar que en este caso necesito sea uno que pueda
repetirse en algunos registros, en mi caso he utilizado el campo relacionado al sueldo.
Voy a centrar la explicacin solamente en aquellos partes del cdigo que tengan una variacin
significativa con el ejemplo anteriormente citado. (Ver db0.fla)
Para este ejemplo utilizaremos una conexin por medio del archivo consulta0.php
Archivo consulta0.php
<?php
include("conexion.php");
$basico=$_POST['sueldo'];
$conn=conectarse();
$a='agenda a';
$e='empleo e';
$consulta="SELECT a.dni, a.nombre, a.direccion, a.telefono, a.email,
e.cargo, e.basico FROM $a, $e WHERE a.dni=e.dni AND
e.basico=$basico";
$resultado=mysql_query($consulta);
$numero_reg=mysql_num_rows($resultado);
$contenido="&cuantos=".$numero_reg;
$contador=0;
while($fila=mysql_fetch_array($resultado)){
$contenido=$contenido."&dni".$contador."=".$fila['dni']."&nombre".
$contador."=".$fila['nombre']."&direccion".$contador."=".$fila
['direccion']."&telefono".$contador."=".$fila['telefono']."&em
ail".$contador."=".$fila['email']."&cargo".$contador."=".$fila
['cargo'];
$contador++;
}
echo $contenido;
mysql_free_result($resultado);
$conn="";
?>
54
En este script, difiere la variable que recibimos desde flash, as como la consulta que se realiza
a la base de datos, adems se ha hecho la creacin de una variable contador la cual la he
inicializado en 0 y que ser el subndice del los primeros elementos del arreglo.
Con el procedimiento while, vamos asignando un registro a la vez a la variable $fila y por
medio de la variable $contador creamos una secuencia de variables que se irn sumando con
un nombre secuencial al contenido de la variable as tambin llamada.
Finalmente incrementamos la variable contador para proceder con el siguiente registro.
Flash_a_Php= new LoadVars();
Php_a_Flash=new LoadVars();
Flash_a_Php.sueldo=sueldo.text;
Php_a_Flash.onLoad=function(){
_global.numReg=Php_a_Flash.cuantos;
if(_global.numReg >= 1){
for(i=0; i<_global.numReg; i++){
_global["reg"+i]=new Array();
_global["reg"+i][0]=Php_a_Flash["dni"+i];
_global["reg"+i][1]=Php_a_Flash["nombre"+i];
_global["reg"+i][2]=Php_a_Flash["direccion"+i];
_global["reg"+i][3]=Php_a_Flash["telefono"+i];
_global["reg"+i][4]=Php_a_Flash["email"+i];
_global["reg"+i][5]=Php_a_Flash["cargo"+i];
}
nextFrame();
}else{
mensaje="NO EXISTEN REGISTROS";
}
}
Flash_a_Php.sendAndLoad("http://127.0.0.1/guia/phps/consulta0.php",
Php_a_Flash, "POST");
stop();
La variacin con el ejemplo anterior radica en que ahora generaremos dinmicamente tantos
arreglos en flash como registros hayamos encontrado que cumplan con la condicin. As
mismo la creacin de las variables de los arreglos se realiza dinmicamente segn el arreglo al
cual correspondan.
Una vez ya generados todos los arreglos y almacenada toda la informacin pasamos al
siguiente fotograma en donde tambin generaremos dinmicamente los clips
correspondientes.
Previamente hemos modificado el movieClip campos de manera que pueda presentar la
informacin de un registro a la vez y con el fin de que nos permita duplicarlo, entre sus
propiedades hemos activado la opcin de Exportar para ActionScript.
55
posX=20;
posY=10;
for(i=0; i<_global.numReg; i++){
this.attachMovie("campos", "regis"+i,
this.getNextHighestDepth(), {_x:posX, _y:posY});
this["regis"+i].dni.text=_global["reg"+i][0];
this["regis"+i].nombre.text=_global["reg"+i][1];
this["regis"+i].direccion.text=_global["reg"+i][2];
this["regis"+i].telefono.text=_global["reg"+i][3];
this["regis"+i].email.text=_global["reg"+i][4];
this["regis"+i].cargo.text=_global["reg"+i][5];
posY+=85;
}
56
ANEXO 1
El modelo de caja de CSS
La utilizacin del estndar de marcado CSS (en espaol Hojas de Estilo en Cascada) definido
por el World Wide Web Consortium (W3C) permite a diseadores y programadores definir
estilos coherentes para pginas web y aplicar la plantilla a varias pginas. Un aspecto
especialmente relevante de CSS es el Modelo de Caja.
Este artculo brinda una primera aproximacin a su arquitectura y a las distintas posibilidades
que ofrece.
Una primera aproximacin visual
Tarde o temprano, todo libro o taller prctico de CSS queda bajo la influencia del Modelo de
Caja. Es uno de los elementos bsicos de las Hojas de Estilo en Cascada y por lo tanto su
correcta interpretacin resulta fundamental a la hora de lograr los resultados deseados en un
diseo, por ms simple que ste resulte.
Para entrar en tema, vamos a construir un sencillo ejemplo utilizando un nico elemento <div>
al que aplicaremos un estilo. El resultado producido ser analizado con la ayuda de una figura
en la que hemos modelado el orden de apilado de los elementos del <div> en una disposicin
tridimensional que nos ayudar a comprenderlo.
Supongamos el siguiente cdigo (lo mostramos fuera de su contexto, restringindonos a lo
significativo para el ejemplo):
El elemento <div>
<div>
<p>Este es el contenido de nuestra caja.</p>
<p>Este es el contenido de nuestra caja.</p>
<p>Este es el contenido de nuestra caja.</p>
</div>
El estilo
div {
background-color: #be4061; /*color bord para el fondo*/
background-image: url('cabeza.jpg');
border: 10px solid #e7a219; /*color naranja para el borde*/
margin: 10px;
padding: 20px;
}
p {
margin: 0 0 20px 0; /*margen inferior de 20 px para el prrafo*/
padding: 0;
}
57
El cdigo anterior generar una caja como la que muestra la figura siguiente, en la que
adicionalmente se ha dado color a los elementos transparentes (margen y relleno) solo para
hacerlos visibles.
Un detalle interesante que puede apreciarse en la representacin tridimensional en que la
capa superior del apilamiento no es el borde, como podra suponerse intuitivamente.
La capa situada encima de todas las dems es la de Contenido.
Aunque el caso especfico sea materia de otro artculo, comentaremos que esta disposicin fue
utilizada por el diseador Douglas Bowman de Stopdesign para el rediseo del sitio de Blogger,
logrando las armoniosas lneas curvas de sus pginas mediante CSS, ubicando imgenes en la
capa de Contenidos de modo que oculten el borde anguloso de las cajas.
reas y propiedades
Cada caja posee, adems de su rea de Contenido, otras tres reas opcionales:
rea de Margen - Margin
rea de Relleno - Padding
rea de Borde - Border
58
Cada rea, a su vez, puede dividirse en cuatro segmentos segn su posicin: izquierdo (left),
derecho (right), superior (top) e inferior (bottom). El tamao de cada rea o de sus segmentos
est dado por el valor de las respectivas propiedades, definidas en forma global o discriminada
por segmento.
Por ejemplo, la siguiente sentencia asignar un margen homogneo de 20 pxeles alrededor de
la caja:
div { margin: 20px }
Si en cambio se desea asignar valores distintos a cada uno de los segmentos, pueden reflejarse
los cuatro valores numricos siguiendo el orden top - right - bottom - left.
El siguiente ejemplo asigna 10 pxeles arriba, 5 a la derecha, 20 abajo y nada a la izquierda:
div { margin: 10px 5px 20px 0 }
En cualquier caso puede obviarse el valor 0 ya que es el valor que toman las propiedades por
defecto.
La lista completa de propiedades es la siguiente:
59
"border-top-style", "border-right-style", "border-bottom-style", "border-left-style" and
"border-style". Toma una serie de posibles valores, tales como: none, hidden, dotted,
dashed, solid, double, groove, ridge, inset y outset. Es una propiedad algo conflictiva
ya que no todos los navegadores interpretan sus valores de la misma manera.
Como corolario de esta aproximacin al modelo de caja resta analizar qu es lo que se ver en
cada rea cuando la pgina se muestre en un navegador:
En el rea de Contenido y en la de Relleno se ver aquello que se determine en la
propiedad "background" del elemento (un color o una imagen, segn el orden de
apilado).
En el rea de Borde se ver aquello que se determine en las propiedades del Borde
(ancho, color y estilo).
El rea de Margen es siempre transparente.
El Secreto
Hay un solo secreto para comprender cabalmente cada una de las propiedades y su utilizacin:
probar, probar y probar. ;-)
60
UNIDAD 5
CMS DRUPAL
Como hemos visto en el primer vdeo explicativo, flash adems de ser utilizado para la creacin
de animaciones, interpolaciones, movimientos y dems efectos, puede ser tambin utilizado
para interactuar con archivos externos como imgenes vectoriales, mapa de bits, sonidos,
vdeos, o algunas otras aplicaciones creadas tambin en Flash.
As tambin puede interactuar con archivos externos para el intercambio de datos. Como
ejemplos vamos a realizar la recuperacin y utilizacin de datos importados desde archivos de
tipo txt, xml, y desde bases de datos a travs de aplicaciones tipo php ya estudiadas.
Vamos a ir observando cada uno de estos casos, cuyos ejemplos podrn ser descargados del
Tomado de: Cristalab.com, tutoriales. El modelo de caja de CSS, [En lnea]. Disponible en:
http://www.cristalab.com/tutoriales/el-modelo-de-caja-de-css-c180l/
61
62
ANEXO 2
Componer un diseo de 3 columnas en XHTML y CSS
Vamos a intentar hacer la base de una pgina web en XHTML 1.0 Strict & CSS con 5 apartados,
dos son los tpicos: header y footer, pero los otros tres varan un poco, normalmente se suelen
hacer las pginas con dos columnas, pero otras muchas veces es necesario usar 3, por ejemplo
en algunas bitcoras, pginas de periodismo, o simplemente por cualquier cosa que creas que
puede tener mayor navegabilidad con 3 columnas en vez de dos.
Para hacer este tutorial es necesario que tengas algunos conocimientos de CSS y XHTML,
aunque no demasiado porque considero que es fcil de entender, pero algunas cosas no las
explico porque doy por hecho que se deben saber.
Para empezar vamos a estructurar nuestro XHTML, para ordenar bien todas las "piezas", en
este caso las divs.
Cdigo:
/*Esta parte es la que se encarga de decirle al navegador qu tipo de
lenguaje est usando*/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
/*Aqu nos dice el ttulo de la pgina, el codificado y las
vinculaciones a las hojas de estilo externas, en este caso ya hemos
creado una llamada base.css*/
<head>
<title>Base3</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso8859-1" />
<link href="base.css" rel="stylesheet" type="text/css" />
</head>
/*Aqu empieza la manteca*/
<body>
/*Creamos las primeras divs, la primera ser la div "container",
que se encargar de albergar a todas las dems, seguidamente creamos la
div header, que es donde ir el encabezado principal de nuestra pgina.
Despus de stas creamos, por este orden, las divs "izquierda",
"derecha" y "principal"
Por ltimo creamos footer*/
<div id="container">
<div class="header"></div>
<div class="izquierda"></div>
<div class="derecha"></div>
<div class="principal"></div>
<div class="footer"></div>
</div>
</body>
</html>
Ahora mismo no aparecera nada en el navegador porque an no hemos definido los estilos de
las mismas, pero es justo lo que vamos a hacer ahora mismo.
Creamos un nuevo documento CSS y lo guardamos como "base.css", y empezamos a escribir,
en primer lugar las caractersticas generales que tendr nuestra pgina, una vez terminadas
esas caractersticas ya podemos empezar con las especficas de cada div.
63
As que tendramos que escribir esto:
Cdigo:
/*Aqu vamos a definir las propiedades de la pgina en general, ms
adelante definiremos las de las cajas principales*/
/*formatos de prrafo, linea de separacion, encabezados 1 al 6, tablas,
vnculos (en sus 4 estados) y body respectivamente*/
body {
font:11px Verdana, Arial, Helvetica, sans-serif;
background-color:#FFF;
text-align : justify;
line-height: 10px;
}
p {
font-size:11px;
color: #586885;
line-height: 120%;
}
hr {
display:none;
}
h1 {
font-size:25px;
text-align : left;
color : #666666;
margin:0;
}
h2 {
font-size:20px;
text-align : left;
color:#486895;
text-transform: capitalize;
}
h3 {
font-size:18px;
text-align : left;
color : #666666;
}
h4 {
font-size:15px;
text-align : left;
color : #666666;
}
h5 {
font-size: 13px;
text-align : left;
color : #666666;
}
h6 {
font-size:12px;
text-align : left;
color : #666666;
}
td {
font-size: 12px;
text-align : center;
color : #586885;
}
a {
font-size:12px;
color:#325FA0;
}
a:link {
text-decoration: none;
64
}
a:visited {
text-decoration: none;
color:#325FA0;
}
a:hover {
text-decoration: none;
color:#000066;
}
a:active {
text-decoration: none;
color:#0099CC;
}
Con el valor de margin quedar centrado, no hace falta repetir otra vez 0 auto porque ahora
mismo el 0 se refiere a arriba y abajo, y el auto a los lados.
2- En header le damos el mismo ancho que al contenedor (si queremos podemos darle
menos), la altura que queramos, colores etc...
Lo que ms nos interesa es que debe estar centrado con el contenedor, por eso mirad las
propiedades de margin, tiene cero arriba, a la derecha tambin, abajo tiene 10 px, y a la
65
izquierda de nuevo cero pxeles, por el mismo orden que los he mencionado. Slo he definido
el borde de abajo porque los dems tocan a los del contenedor y resulta feo, y al dejarlos as
no aparecen por defecto.
Cdigo:
.header{
width:700px;
height:140px;
background-color:#CC9933;
border-bottom-style:solid;
border-bottom-color:#000000;
margin:0 0 10px 0;
}
3- En la div "izquierda" vamos a ajustar los valores para que tenga una anchura de 100
pxeles, una altura que dependa del contenido que tenga dentro, y le vamos a dar un margen
de 5px a la izquierda, adems de hacer que se site a la izquierda mediante "float".
Cdigo:
.izquierda{
width:100px;
height:auto;
background-color:#EFEFEF;
border-style:solid;
border-width:1px;
border-color:#000000;
margin:0 0 0 5px;
float:left;
padding:3px;
}
Como en esa div he pensado que pondr una lista de links, voy a definir las propiedades de la
lista:
Cdigo:
.izquierda ul {
font:bold 11px Verdana, Arial, Helvetica, sans-serif;
color:#586885;
line-height: 140%;
text-transform:capitalize;
}
4- En la div "derecha" vamos a ajustar los valores para que tenga una anchura de 150 pxeles,
una altura que tambin dependa del contenido que tenga dentro, y le vamos a dar un margen
de 5 px, adems de hacer que se site a la derecha.
Cdigo:
.derecha{
width:150px;
height:auto;
background-color:#FFFFDD;
66
border-style:solid;
border-width:1px;
border-color:#000000;
margin:0 5px 0 0;
float:right;
padding:5px;
}
5- Ahora le toca a la caja que contendr la informacin principal de nuestra pgina (la div
"principal") en este caso queremos que se ajuste al espacio que sobra a lo ancho del
contenedor, por qu calculamos, 700px (anchura del mismo) - 100px (anchura de la div
"izquierda") - 150px (anchura de la div "derecha") - 20px (total de los margins) - 34px (total de
los paddings) - 6px (total de los borders) = 390px.
Adems de esto, tambin queremos que quede situado entre las cajas que la rodean, por lo
que calcularemos el espacio que debera quedar a su izquierda y despus poner el mismo valor
en su "margin-left."
**Repito, hay que prestar especial atencin a contar TODOS los valores que se utilizarn,
incluidos, mrgenes, padding, bordes...**
Cdigo:
.principal{
width:390px;
height:auto;
background-color:#FFF;
border-style:solid;
border-width:1px;
border-color:#000000;
margin:0 5px 0 117px;
padding:10px;
}
...y a su "h6"
Cdigo:
.footer h6{
text-align:center;
text-transform:uppercase;
margin:5px auto;
67
color:#666666;
font-size:10px;
}
Bueno, ya est todo definido, ahora tendramos que ver una pgina mas o menos formada en
nuestro navegador, digo ms o menos por que aun no hemos puesto nada de informacin, si
queris, podis sustituir el XHTML de antes por ste, o si no, lo rellenis como queris, pero
por lo menos ya tenis este de ejemplo, que adems es correctamente semntico, ok??
Resultado final
68
<p>aqu se podra colocar una imgen, anuncios, ms
vnculos, las tpicas imagenes de Sindicar RSS, odio a neo_jp,
etc...</p>
<a href="http://jigsaw.w3.org/css-validator/"><img
style="border:0;width:88px;height:31px"
src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"
/></a>
<hr/>
<a href="http://validator.w3.org/check?uri=referer"><img
src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0 Strict"
height="31" width="88" /></a>
</div>
<div class="principal">
<h2>Ttulo del contenido</h2>
<h3>Subapartado</h3>
<p>Escribo algo para rellenar...</p>
<p>Escribo algo para rellenar...</p>
<p>Escribo algo para rellenar...</p>
<p>Escribo algo para rellenar...</p>
<p>Escribo algo para rellenar...</p>
<p>Escribo algo para rellenar...</p>
<p>Escribo algo para rellenar...</p>
</div>
<div class="footer">
<h6>base3 2005, todo el C_C reservado</h6>
</div>
</div>
</body>
</html>
Tomado de: Cristalab.com, tutoriales. Componer un diseo de 3 columnas en XHTML y CSS, [En
lnea]. Disponible en: http://www.cristalab.com/tutoriales/componer-un-diseno-de-3columnas-en-xhtml-y-css-c131l/