Вы находитесь на странице: 1из 6

PLATAFORMAS OPERATIVAS

Paso de datos, GET y POST + Plantillas

PLANTILLAS EN PHP
El concepto de plantilla, es un criterio del desarrollo web que propone optimizar la cantidad de
documentos HTML que se usan en el desarrollo de un sitio web.
A lo largo de la navegacin entre los distintos documentos de un sitio web podemos encontrar una
estructura bsica que se repite a lo largo de la misma.

La plantilla propone aprovechar esta estructura en comn y slo modificar el contenido del rea del
documento que sea diferente.
Para esto se utiliza el paso de datos por GET, donde toda la navegacin se realizar en un nico
documento y acorde al valor recibido por la URL se realizar la carga de un documento que slo
contendr el contenido a mostrar.

Prof. Germn Rodrguez grodriguez@escueladavinci.net

PLATAFORMAS OPERATIVAS
Paso de datos, GET y POST + Plantillas

PASO DE DATOS
El paso de datos de un documento al otro, se puede realizar con cualquier elemento del HTML que
pueda encerrarse dentro de una etiqueta <a></a> (un vnculo).
Los vnculos estn formados en primera instancia por el documento que se quiere acceder, seguido
por el signo de pregunta (que da lugar al paso de variables por la URL) y luego el juego de variables
y valores respetando la siguiente sintaxis. Si los datos enviados son ms de uno, se conectan con el
smbolo ampersand (&).

Ejemplo de un paso por GET, desde el cdigo HTML.


http://www.misitio.com/buscar.php?palabra=gato&pagina=3
Los datos que nos han llegado son los que se encuentran a continuacin del signo de pregunta,
separados por el smbolo ampersand (&), mediante el juego de pares VARIABLE = VALOR.
-

Sitio: http://www.misitio.com

Documento que recibe los datos: buscar.php

Nombre de la primera variable recibida: palabra

Valor de la primera variable recibida: gato

Nombre de la segunda variable recibida: pagina

Valor de la segunda variable recibida: 3

Por lo cual si escribiramos en nuestro PHP el siguiente cdigo:


echo "Palabra buscada ".$_GET['palabra']." - Pgina actual ".$_GET['pagina'];

Veramos en pantalla: Palabra buscada: gato - Pgina actual: 3


El siguiente ejemplo muestra cmo hacer un LINK al documento2.php pasando la variable
variable con el valor ALGO.

Prof. Germn Rodrguez grodriguez@escueladavinci.net

PLATAFORMAS OPERATIVAS
Paso de datos, GET y POST + Plantillas

<a href="documento2.php?variable=ALGO">pasar variable con el ALGO</a>

Como bien se puede ver, no se requiere el uso de PHP para CREAR la etiqueta HTML que enva
las variables (es simplemente la etiqueta <a> con su atributo href, indicando los datos a
enviar), pero s es necesario usar PHP para recibir los datos.

LGICA DEL USO DE PLANTILLAS


Para hacer un sitio web que se base en una estructura de plantillas, se debe contar con un rea del
HTML que carezca de contenido (como un div vaco), en donde se cargar el contenido a mostrar.
Cada contenido que se puede mostrar en ese sector, tambin ser un documento HTML PHP, que
tendr como principal caracterstica que NO TENDR los elementos <html><head> ni <body>
propios de un sitio web completo.
Dado que este contenido ya se carga adentro de otro documento HTML, el documento principal ya
tendr sus respectivos html, head y body.
Supongamos entonces que tenamos los siguientes documentos PHP.

Prof. Germn Rodrguez grodriguez@escueladavinci.net

PLATAFORMAS OPERATIVAS
Paso de datos, GET y POST + Plantillas
La estructura de ambos documentos es idntica, slo cambiara lo que se muestra adentro del div
con ID=contenido.
Para armar una estructura basada en plantillas debemos cambiar cuatro cosas de nuestro sitio web:
1. Ya no tendremos 3, 5 10 documentos HTML. Tendremos un nico documento de tipo PHP
que recibir una informacin que represente el contenido a mostrar.
2. Guardaremos en documentos PHP cada uno de los distintos contenidos que ofreca el div con
ID=contenido. Estos documentos tendrn la particularidad de slo tener el contenido que
exista en el div (no estarn las etiquetas <html> <head> ni <body>).
3. El men ir al documento PHP y pasar por el mtodo GET una nica variable con un valor
diferente por cada botn que podamos visitar, ejemplo:

index.php?seccion=QUE_SECCION_SELECCION
4. Adentro del div con ID=contenido, deber tener un bloque de cdigo PHP que evale el
valor de la variable recibida y acorde a cada condicin incluir el documento que slo tiene
contenido.
Adaptando el ejemplo anterior a una estructura de plantillas, primero cortaremos todo el contenido
de ambos div con ID=contenido (dejando la apertura y cierre del div, principalmente como
referencia estructural). Supongamos que en una subcarpeta llamado secciones guardamos los dos
archivos, con este contenido:

El documento principal, ahora tiene el mismo contenido inicial pero con el div id=contenido vaco.
Vamos a modificar primero el men principal. Todos los tems del men irn al documento index.php
y pasarn por URL la variable seccin. Acorde al link clickeado pasar un valor diferente.

<ul>
<li><a href="index.php?seccion=home">Principal</a></li>
<li><a href="index.php?seccion=nosotros">Nosotros</a></li>
<li><a href="index.php?seccion=contacto">Contacto</a></li>
</ul>

De esta manera, TODA la navegacin se realizar en un nico documento.


Cuando se hace click en un link (cualquiera este sea) se recibe SIEMPRE la variable seccion.

Prof. Germn Rodrguez grodriguez@escueladavinci.net

PLATAFORMAS OPERATIVAS
Paso de datos, GET y POST + Plantillas
Si usamos una estructura para tomar decisiones (como if switch), podemos inclur un archivo
diferente segn el valor recibido. La funcin que hace esto se llama include( ) incluir y recibe entre
parntesis y comillas la ruta completa para llegar al archivo a cargar: include("carpeta/archivo.php").
Adentro de nuestro div con id=contenido ahora tendremos un bloque de cdigo PHP con esta
evaluacin.

<div id="contenido">
<?php
$seccion = $_GET['seccion']; //guardo en una variable el dato recibido por get.
switch( $seccion ){
case 'home': include("secciones/pagina_principal.php"); break;
case 'nosotros': include("secciones/quienes_somos.php"); break;
case 'contacto': include("secciones/formulario.php"); break;
}
?>
</div>

Cada uno de estos casos del switch ser correlativo con cada uno de los valores pasados en el men
como opcin de la botonera.

VERIFICAR LOS DATOS


Existen dos casos de error en este modelo si se deja as como est.
En primera instancia: Qu sucede si un usuario prueba suerte y cambia uno de los valores de la URL
y presiona la tecla enter? Cmo el valor recibido no se corresponder con ninguna de las opciones se
ver un div vaco, sin ningn contenido.
Por este motivo, el switch deber tener un bloque default (que se ejecuta cuando ninguna opcin ha
sido satisfactoria) y en ese bloque se cargar un documento por defecto (casi seguro el documento
principal, la home).
Y en segunda instancia: Qu mensaje ver el usuario al cargar la web por primera vez?
Un mensaje de error diciendo que el ndice "seccion" es indefinido. Porque hasta que el usuario no
haga click en algn link, an no se ha recibido ninguna variable por URL.
En este caso nos vemos obligados a preguntar en PHP si existe la variable seccion en la URL antes de
hacer el switch. PHP no nos permite operar con variables que no existan y mostrar error.
Eso se hace mediante el uso de la funcin isset() (is set, est seteado).
La funcin isset() recibe entre los parntesis una variable ( local, o del array de datos $_GET ) y
devolver verdadero si la misma existe, y devolver falso si la variable no existe en la memoria o no
existe en la barra de direcciones.
Si el isset() devuelve verdadero, guardaremos en la variable $seccion el valor recibido por URL.
Prof. Germn Rodrguez grodriguez@escueladavinci.net

PLATAFORMAS OPERATIVAS
Paso de datos, GET y POST + Plantillas
Si el isset() devuelve falso, guardaremos en la variable $seccion alguna de las opciones vlidas del
switch, de forma tal que, al continuar la carga del programa se muestre una seccin vlida.

<!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">
<head>
<title>Mi sitio web</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<ul>
<li><a href="index.php?seccion=home">Principal</a></li>
<li><a href="index.php?seccion=nosotros">Nosotros</a></li>
<li><a href="index.php?seccion=contacto">Contacto</a></li>
</ul>
<div id="contenido">
<?php
if( isset( $_GET['seccion'] ) ){ //verifico si se recibi por GET la variable seccion
$seccion = $_GET['seccion']; //SI EXISTE guardo en una variable el dato recibido por get.
}else{ //la variable no existe, le genero un valor "a mano"
$seccion = "home"; //en lo posible elegir una opcin vlida.
}
switch( $seccion ){
case 'home': include("secciones/pagina_principal.php"); break;
case 'nosotros': include("secciones/quienes_somos.php"); break;
case 'contacto': include("secciones/formulario.php"); break;

//no es ninguno de los casos anteriores? Mostrame la home.


default: include("secciones/pagina_principal.php");
}
?>
</div>
</body>
</html>

Prof. Germn Rodrguez grodriguez@escueladavinci.net

Вам также может понравиться