Professional Documents
Culture Documents
El resultado final de este ejercicio se puede ver funcionando en una página aparte. Es
totalmente funcional y se puede probar para hacerse una idea exacta del objetivo del
manual.
Este ejercicio se puede seguir con unos conocimientos mínimos de PHP, de modo que está
al alcance de cualquier persona que se haya iniciado en este interesante lenguaje de
programación de páginas de servidor. No obstante, antes de comenzar, merece la pena
mostrar algunas referencias a manuales que nos pueden ayudar a entender los scripts
tratados.
También ponemos a disposición del lector el código completo del ejercicio para utilizarlo
libremente en sus desarrollos.
Vamos a basar todo el trabajo en una misma página, que será la encargada de mostrar
todas las firmas de los visitantes y recoger los datos venidos por el formulario de
participación para introducirlos en la base de datos. Esto puede complicar un poco el
código del ejercicio final pero veremos el script por partes para que resulte sencillo. Ahora
tan sólo tenemos que entender su estructura general.
Explicación
La página del libro de visitas puede o no recibir datos por un formulario y dependiendo de
ello, debería hacer unas u otras acciones. Por tanto, lo primero que vamos a hacer es
averiguar si recibimos o no datos por el formulario.
Muestro las últimas 10 firmas del libro de visitas. Esto lo conseguiremos con un acceso a
la base de datos y un bucle que recorre los resultados de la búsqueda.
En el caso de que no se reciba datos, después de mostrar las últimas firmas, debemos
saber si existen o no más firmas en la base de datos para visualizar.
Por último, coloco el formulario de firma para que los visitantes puedan participar.
Esto quiere decir que el visitante ha rellenado el formulario de firma del libro y lo ha
enviado. Entonces debo registrar esta firma, aunque es muy importante que se realice
una pequeña comprobación y arreglo de los datos del formulario para evitar que un
usuario malicioso intente fastidiar el script insertando ciertos elementos susceptibles de
arrojar errores como etiquetas HTML o PHP. Entre las comprobaciones también nos
aseguraremos, por ejemplo, de que el usuario ha escrito algún dato en el formulario, pero
veremos todas estas comprobaciones más tarde.
Referencia: El trabajo con base de datos está relatado en el manual de Programación en PHP. En
el mismo manual también disponemos de algunas indicaciones prácticas que explican como dar
colocar una base de datos en el servidor remoto.
Por último, señalaremos que en el manual práctico del Sistema de Envío de Postales, tenemos más
explicaciones sobre como crear una base de datos de manera práctica.
La tabla librovisitas_php
En este ejercicio deberemos crear una tabla con la información de las firmas. La
llamaremos librovisitas_php y contendrá los siguientes campos:
Id_librovisitas_php int(11)
nombre varchar(150)
email varchar(100)
valoracion tinyint(4)
comentario text
if (!$HTTP_POST_VARS)
En caso de no recibir datos por el formulario este if se evaluaría con resultado positivo.
Prestar atención a la negación para entender la correcta evaluación del if.
En este capítulo vamos a relatar la parte del if en la que no se reciben datos por un
formulario, es decir, la evaluación positiva del if.
//si no recibo nada por el formulario de firma del libro, muestro las firmas del libro
//construyo la sentencia SQL
$ssql = "SELECT * FROM librovisitas_php";
//se mostrarán las últimas firmas, aunque habrá un enlace en la parte de abajo que se podrá pulsar para ver
más firmas
if (isset($_GET["vermas"]))
$ssql .= " where id_librovisitas_php<=" . $vermas;
Si habíamos recibido la variable vermas, seleccionamos tan solo las firmas que tengan el
identificador menor o igual que el índice recibido en vermas.
Las firmas se deben ver en orden descendente, para que se muestren primero las últimas
firmas insertadas. Es lo que se indica en la parte que pone ORDER BY. Además se deben
seleccionar tan solo 10 firmas por página, aunque en la práctica seleccionaremos 11,
aunque la última no se mostrará, sólo se extrae para saber el índice que tiene y utilizarlo
para construir el enlace vermas, en caso de que existan otras firmas por visualizar.
Bucle While
<br>
<?
$num_filas++;
} //termina el bucle while
Los resultados se muestran en una tabla, por eso puede quedar un poco embarullado este
código en medio de tantas etiquetas HTML, pero no reviste ninguna complicación especial.
Al final de la página, si había más firmas por ver, hay que mostrar el enlace de vermas.
Para ello simplemente evaluamos la variable que contiene el puntero al registro actual. Si
el bucle anterior finalizó porque dicho puntero había llegado al final de la lista de valores,
entonces es que no hay más firmas que ver. Si por el contrario, el bucle finalizó y todavía
quedaba alguna firma en el puntero es que hay que mostrar el enlace de vermas y
colocar el índice de la firma que tocaría visualizar a continuación.
//si quedan más valoraciones en el conjunto de resultados, muestro el enlace de "Ver más"
if ($damefila)
echo "<div align=center><b><a href=\"index.php?vermas=$damefila->id_librovisitas_php\">Ver más
mensajes</a></b></div><br>";
include ("formul_mensaje.html");
Es muy importante borrar toda etiqueta HTML o PHP del texto de los campos introducidos
por el visitante. Si un visitante colocase este comentario:
Hola <b>Amigos</b>
Tendría como resultado que, al visualizar sui firma, se mostrase la palabra "Amigos" en
negrita. Esto no sería mucho problema, pero si se puede incluir una etiqueta así, también
nos podrían colar enlaces, imágenes o determinados elementos que pudieran descolocar
la página, cambiar nuestros estilos habituales o incluir scripts que pudieran molestar a
otros visitantes o a los administradores del sitio web.
Para no intentar introducir textos en la base de datos que en realidad no caben, recorto
los textos hasta su tamaño máximo.
También debemos comprobar que todos los campos introducidos no están vacíos, porque
en ese caso querría decir que el usuario está tratando de firmar con ningún dato sobre su
nombre o comentarios del web y no deseamos que eso ocurra.
<?
if (strlen($nombre)==0 and strlen($email)==0 and strlen($comentario)==0)
{
?>
<div align="center"><b>Gracias por el envío</b>.<br><br>Te agradeceríamos, no obstante y si no resulta
mucho esfuerzo, que rellenases alguno de los campos para dejar constancia de tu visita.</div>
<?
}
?>
//si alguno de los campos falta prefiero colocar un guión o "sin comentarios"
if (!$nombre)$nombre="-";
if (!$email) $email="-";
if (!$comentario) $comentario="Sin comentarios";
Simplemente se hace esto para comprobar si alguno de los datos faltaba, pues en ese
caso preferimos introducir un carácter o texto especial en lugar de introducir un string
vacío.
Por cierto, la variable que guarda la valoración de la página no hace falta comprobarla en
teoría, porque siempre la recibiremos bien, ya que el formulario contiene este valor en un
campo SELECT de HTML, donde siempre se selecciona un valor válido introducido por el
usuario, entre los posibles, que los define el programador de dicho campo SELECT.
Luego se debe de codificar una sentencia SQL con un INSERT con los datos del
formulario. La sentencia de inserción se realizará concatenando los datos del formulario
con la propia sentencia SQL.
Referencia: Puede ser interesante para personas sin experiencia repasar el artículo donde se
explican las inserciones en base de datos. Este artículo está englobado en el Manual de PHP de
DesarrolloWeb.com.
Asímismo, también queremos señalar que para iniciarse en el lenguaje SQL tenemos publicado un
Tutorial de SQL.
Por último se muestra un mensaje dando las gracias al visitante que ha firmado el libro
de visitas.