SlideShare uma empresa Scribd logo
1 de 9
Libro de visitas con PHP y MySQL


Manual por: DesarrolloWeb.com
"Tu mejor ayuda para aprender a hacer webs"



Introducción al libro de visitas con PHP y MySQL
Ante las numerosas peticiones de nuestros lectores de comentar un código para hacer un
libro de visitas a lo largo de la vida de este sitio, nos hemos decidido a realizar este
manual sobre la creación de un libro de visitas, programado en PHP y con base de datos
MySQL.

Es un libro de visitas muy similar al que utilizamos en DesarrolloWeb, en la URL:
desarrolloweb.com/librovisitas/, simplificado un poco y con unos campos de formulario un
poco más generales, para que pueda servir en el mayor número de sitios web de la
temática más variada.

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.

Manual de PHP: http://www.desarrolloweb.com/manuales/12/
Con los temas más básicos sobre la tecnología, que todos los lectores deberían conocer.

Taller de MySQL: http://www.desarrolloweb.com/manuales/34/
Con ayudas para trabajar con el gestor de base de datos utilizado en este ejemplo.

La información se complementa con la sección PHP a Fondo, donde podemos encontrar
enlaces a todos los recursos PHP disponibles en DesarrolloWeb.com.

Descarga del código

También ponemos a disposición del lector el código completo del ejercicio para utilizarlo
libremente en sus desarrollos.

Informe de Miguel Angel Alvarez
Director DesarrolloWeb.com
Mail: miguel@desarrolloweb.com
Esquema de funcionamiento del libro de visitas PHP
Veamos el diagrama de funcionamiento de la aplicación de libro de visitas en PHP para
hacernos una idea inicial, que completaremos más adelante con el código de cada script.

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.

1) Si no recibe datos del 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.

      1.1) Si existen más firmas, muestro el mensaje para verlas.
      1.2) Si no existen más firmas, no hago nada.

Por último, coloco el formulario de firma para que los visitantes puedan participar.

2) Si recibo datos por el formulario

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.

      2.1) Si los datos eran correctos

      Si todas las comprobaciones fueron positivas, introduciremos los datos en el
      formulario y daremos las gracias al visitante por firmar el libro

      2.2) Si los datos no eran correctos

      Advertiremos al visitante que debe rellenar los campos correctamente.



Informe de Miguel Angel Alvarez
Director DesarrolloWeb.com
Mail: miguel@desarrolloweb.com




La base de datos MySQL del libro de visitas
Para el trabajo con el libro de visitas, como ya se ha apuntado, se requerirá el uso de una
base de datos. Bueno, en realidad lo que necesitaremos es contar con una tabla adicional
para la base de datos que ya contenga tu sitio web.

     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:

                                 Nombre del campo Tipo

                                 Id_librovisitas_php int(11)

                                 nombre                  varchar(150)

                                 email                   varchar(100)

                                 valoracion              tinyint(4)

                                 comentario              text

El campo id_librovisitas_php será un campo autonumérico, que será la clave primaria de
la tabla. Los campos nombre y email serán de tipo cadena de texto, con 150 y 100
caracteres de tamaño máximo respectivamente. El campo valoración guardará un
número, en este caso de tamaño pequeño (tinyint) porque sólo vamos a guardar números
del 1 al 5. Por último el comentario, que es una cadena de texto con longitud
indeterminada.

La tabla la podremos crear en nuestro servidor de bases de datos con la siguiente
sentencia Crearte Table:

CREATE TABLE librovisitas_php (
   id_librovisitas_php int(11) unsigned NOT NULL auto_increment,
   nombre varchar(150) NOT NULL,
   email varchar(100) NOT NULL,
   valoracion tinyint(4),
   comentario text,
   PRIMARY KEY (id_librovisitas_php)
);

Informe de Miguel Angel Alvarez
Director DesarrolloWeb.com
Mail: miguel@desarrolloweb.com




Mostrando las firmas del libro de visitas
Recordando la explicación general de este ejercicio, nos acordaremos de que la página del
libro de visitas tenía dos grandes bloques, que se decidían comprobando si se recibe o no
algo por el formulario. Para ello podemos utilizar un enunciado if como este:

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.

Extraer las últimas firmas

En este caso, lo primero a realizar es la extracción de las últimas firmas de la base de
datos. Para ello debemos construir una sentencia SQL que seleccione de la base de datos
dichas firmas.

//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;

//ordeno la sentencia y limito el numero de resultados
$ssql .= " ORDER BY id_librovisitas_php desc limit 11";

//tomo el juego de resultados
$resultid = mysql_query($ssql,$conn);
Esta sentencia se construye en varias partes. Primero se crea la primera parte del select y
luego otras partes más complicadas de ver.

Será necesario un inciso para entender la parte en la que se evalúa si existe o no la
variable vermas, recibida por URL ($_GET["vermas"]). Esto viene porque en la parte de
debajo de las firmas, en caso de que existan más firmas de las que se hayan mostrado,
se colocaría un enlace para ver más firmas, que contendría una referencia a este propio
libro de visitas con la variable vermas igual al identificador de la próxima firma que haya
que visualizar. Algo como librovisitas/index.php?vermas=960

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.

En la última línea se ejecuta la sentencia SQL para extraer los datos.

Bucle While

Se realiza a continuación un bucle para recorrer los resultados. Es un sencillo recorrido
por un conjunto de resultados de una consulta a base de datos. Tiene la particularidad de
que se cuentan los resultados mostrados para, en caso de que se hayan mostrado ya 10,
no seguir mostrando más.

while (($damefila=mysql_fetch_object($resultid)) && ($num_filas<10))
{
  ?>
  <table align="center" width="100%" cellspacing="2" cellpadding="0" border="0">
  <tr>
     <td valign="top" class=fuente8><b>
  <? //si el visitante no introdujo nombre muestro como nombre "Anónimo"
     if ($damefila->nombre == "-"){
     echo "Anónimo";
     }elseif ($damefila->email != "-") {
        echo '<a href="mailto:' . $damefila->email . '">' . $damefila->nombre . '</a>';
     }else{
        echo $damefila->nombre;
     }
  ?></b>:<br>
  </td></tr>
  <tr><td bgcolor=cccccc colspan="2"><img src="images/pixeltrans.gif" width=1 height=1 border="0"></
td></tr>
  <td class=fuente8 valign="top">
     <?echo strip_tags($damefila->comentario)?>
     <td valign="top" align="right" nowrap class=fuente8>
     Valoracion: <?echo $damefila->valoracion?>
  </td>
  </tr>
  </table>

   <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.

Mostrar el enlace de vermas

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>";

Mostrar el formulario de firma

Por último se debería mostrar el formulario de la firma. Nosotros lo hemos separado en
un fichero aparte para que quede todo más organizado. En el código de nuestro ejercicio
en esta sección, lo único que encontraremos será el include con el archivo HTML que
contiene el formulario.

include ("formul_mensaje.html");

Informe de Miguel Angel Alvarez
Director DesarrolloWeb.com
Mail: miguel@desarrolloweb.com




El formulario para firmar el libro de visitas
El código del formulario para que los visitantes puedan incluir su firma en el libro de
visitas es el siguiente.

<form name=librovisitas action="index.php" method="post">
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tr>
  <td class=titcol> <b>Firma el Libro de Visitas</b></td>
</tr>
<tr>
  <td class=fuente8> Déjanos tu mensaje en el libro de visitas y danos tu opinión del sitio
  <br>
  <br>
  </td>
</tr>
<tr>
  <td>
  <table width="100%" cellspacing="0" cellpadding="0" border="0">
  <tr>
     <td class=fuente8 align="center">
     Nombre
     <br>
     <input type="Text" name="nombre" size="20" maxlength="150">
     <br>
     <br>
     Email
<br>
     <input type="Text" name="email" size="20" maxlength="100">
     <br>
     <br>
     Valoración
     <br>
     <select name="valoracion">
     <option value=1>Repelente
     <option value=2>Mal
     <option value=3 selected>Regular
     <option value=4>Bien
     <option value=5>Fantástica
     </select>
     </td>
     <td ALIGN=CENTER class=fuente8 valign="middle">
       Comentarios:
       <br>
       <textarea name="comentario" cols="30" rows="7"></textarea>
     </td>
  </tr>
  <tr>
     <td colspan=2 align=center class=fuente8>
     <br>
     <input type="submit" value=" Enviar la firma al libro de visitas ">
     </td>
  </tr>
  </table>
  </td>
</tr>
</table>
</form>

No reviste ninguna complicación para entenderlo. Simplemente deberemos conocer un
poco la forma de crear formularios HTML.

Informe de Miguel Angel Alvarez
Director DesarrolloWeb.com
Mail: miguel@desarrolloweb.com




Comprobar si los datos recibidos son correctos
La otra parte del script del libro de visitas en PHP que nos queda por comentar contiene la
codificación de las acciones a tomar en caso de que sí se reciban datos del formulario.
Dichas acciones son básicamente comprobar si los datos son correctos y, si así es,
insertar la información en la base de datos.

Las comprobaciones sirven para asegurarnos que la información introducida va a ser
siempre válida, para que las firmas se muestren perfectamente. Determinadas
informaciones podrían dar lugar a errores al introducir la información en la base de datos
o a la hora de mostrar las firmas en la página.

Eliminar las etiquetas HTML o PHP

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.

//eliminamos las etiquetas HTML y PHP de las cadenas de texto
$nombre = strip_tags($_POST["nombre"]);
$email = strip_tags($_POST["email"]);
$comentario = strip_tags($_POST["comentario"]);

Cortamos las cadenas demasiado largas

Para no intentar introducir textos en la base de datos que en realidad no caben, recorto
los textos hasta su tamaño máximo.

//Cortamos las cadenas demasiado largas
$nombre=substr($nombre,0,150);
$email=substr($email,0,80);

Comprobamos que el visitante ha rellenado algo

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 no había rellenado nada mostramos un mensaje advirtiéndolo. En el caso contrario, es
decir, si todo era correcto, inserto en la base de datos la información.

Informe de Miguel Angel Alvarez
Director DesarrolloWeb.com
Mail: miguel@desarrolloweb.com




Inserto los datos en la base de datos
Si todas las comprobaciones fueron correctas, se introduce en la base de datos del libro
de visitas la información recibida como firma.

Pero antes se realizará un pequeño ajuste adicional de los datos a introducir.

//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.


//Generamos la ssql e insertamos el registro
$ssql = "INSERT INTO librovisitas_php (nombre,email,valoracion,comentario) VALUES ('" . $nombre . "','" .
$email . "'," . $_POST["valoracion"] . ",'" . $comentario . "')";
mysql_query($ssql,$conn);

Por último se muestra un mensaje dando las gracias al visitante que ha firmado el libro
de visitas.

<div align="center"><b>Muchas gracias por tu participación</b></div>

El código completo del ejercicio se puede descargar aquí.

Se puede ver en marcha aquí.

Informe de Miguel Angel Alvarez
Director DesarrolloWeb.com
Mail: miguel@desarrolloweb.com

Mais conteúdo relacionado

Mais procurados

Mais procurados (17)

vAplicación parte 1
vAplicación parte 1vAplicación parte 1
vAplicación parte 1
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
 
P1C3 Anotaciones
P1C3 AnotacionesP1C3 Anotaciones
P1C3 Anotaciones
 
Formulario
FormularioFormulario
Formulario
 
Manual completo-sql
Manual completo-sqlManual completo-sql
Manual completo-sql
 
Guardar en base de datos MySQL desde HTML con PHP.
Guardar en base de datos MySQL desde HTML con PHP.Guardar en base de datos MySQL desde HTML con PHP.
Guardar en base de datos MySQL desde HTML con PHP.
 
Html investigacion
Html investigacionHtml investigacion
Html investigacion
 
Manual+php+básico
Manual+php+básicoManual+php+básico
Manual+php+básico
 
Programacion en php
Programacion en phpProgramacion en php
Programacion en php
 
Guía JavaScript
Guía JavaScriptGuía JavaScript
Guía JavaScript
 
Html
HtmlHtml
Html
 
Php y pdf
Php y pdfPhp y pdf
Php y pdf
 
Formularios html 5(1)
Formularios html 5(1)Formularios html 5(1)
Formularios html 5(1)
 
Guia bootstrap
Guia bootstrapGuia bootstrap
Guia bootstrap
 
P1C2 Navegación y Parámetros
P1C2 Navegación y ParámetrosP1C2 Navegación y Parámetros
P1C2 Navegación y Parámetros
 
Manual de pagina dinámica 01
Manual de pagina dinámica 01Manual de pagina dinámica 01
Manual de pagina dinámica 01
 
Tema3[Php]
Tema3[Php]Tema3[Php]
Tema3[Php]
 

Destaque

Familia y estructura
Familia y estructuraFamilia y estructura
Familia y estructuraCesfamgarin
 
Teaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & TextspeakTeaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & TextspeakShelly Sanchez Terrell
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerLuminary Labs
 

Destaque (6)

Tomas
TomasTomas
Tomas
 
Matrices De Aprendizaje
Matrices De AprendizajeMatrices De Aprendizaje
Matrices De Aprendizaje
 
Familia y estructura
Familia y estructuraFamilia y estructura
Familia y estructura
 
Inaugural Addresses
Inaugural AddressesInaugural Addresses
Inaugural Addresses
 
Teaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & TextspeakTeaching Students with Emojis, Emoticons, & Textspeak
Teaching Students with Emojis, Emoticons, & Textspeak
 
Hype vs. Reality: The AI Explainer
Hype vs. Reality: The AI ExplainerHype vs. Reality: The AI Explainer
Hype vs. Reality: The AI Explainer
 

Semelhante a ubiPHP (20)

Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
PHP - MYSQL
PHP - MYSQLPHP - MYSQL
PHP - MYSQL
 
Manual php
Manual phpManual php
Manual php
 
Migracion sql by mario bescos
Migracion sql by mario bescosMigracion sql by mario bescos
Migracion sql by mario bescos
 
Formulario HTML-PHP dirigido a una Base de datos
Formulario HTML-PHP dirigido a una Base de datosFormulario HTML-PHP dirigido a una Base de datos
Formulario HTML-PHP dirigido a una Base de datos
 
Tutorial bd y php
Tutorial bd y phpTutorial bd y php
Tutorial bd y php
 
Html,php
Html,phpHtml,php
Html,php
 
Manual completo-sql5
Manual completo-sql5Manual completo-sql5
Manual completo-sql5
 
Programacion - Php
Programacion - PhpProgramacion - Php
Programacion - Php
 
Configuración del entorno
Configuración del entornoConfiguración del entorno
Configuración del entorno
 
Guiacursophp sql
Guiacursophp sqlGuiacursophp sql
Guiacursophp sql
 
Curso introduccionphp sql
Curso introduccionphp sqlCurso introduccionphp sql
Curso introduccionphp sql
 
Tutorial de ASP
Tutorial de ASPTutorial de ASP
Tutorial de ASP
 
Php
PhpPhp
Php
 
Creando endpoint http
Creando endpoint httpCreando endpoint http
Creando endpoint http
 
Php
PhpPhp
Php
 
Servidor de prueba wamp
Servidor de prueba wampServidor de prueba wamp
Servidor de prueba wamp
 
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexicoColegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
Colegio+de+estudios+cientificos+y+tecnologicos+del+estado+de+mexico
 
Manual de php
Manual de phpManual de php
Manual de php
 
Manual de php
Manual de phpManual de php
Manual de php
 

Último

Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperiomiralbaipiales2016
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxnandoapperscabanilla
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdfenelcielosiempre
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVGiustinoAdesso1
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 

Último (20)

Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperio
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCV
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 

ubiPHP

  • 1. Libro de visitas con PHP y MySQL Manual por: DesarrolloWeb.com "Tu mejor ayuda para aprender a hacer webs" Introducción al libro de visitas con PHP y MySQL Ante las numerosas peticiones de nuestros lectores de comentar un código para hacer un libro de visitas a lo largo de la vida de este sitio, nos hemos decidido a realizar este manual sobre la creación de un libro de visitas, programado en PHP y con base de datos MySQL. Es un libro de visitas muy similar al que utilizamos en DesarrolloWeb, en la URL: desarrolloweb.com/librovisitas/, simplificado un poco y con unos campos de formulario un poco más generales, para que pueda servir en el mayor número de sitios web de la temática más variada. 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. Manual de PHP: http://www.desarrolloweb.com/manuales/12/ Con los temas más básicos sobre la tecnología, que todos los lectores deberían conocer. Taller de MySQL: http://www.desarrolloweb.com/manuales/34/ Con ayudas para trabajar con el gestor de base de datos utilizado en este ejemplo. La información se complementa con la sección PHP a Fondo, donde podemos encontrar enlaces a todos los recursos PHP disponibles en DesarrolloWeb.com. Descarga del código También ponemos a disposición del lector el código completo del ejercicio para utilizarlo libremente en sus desarrollos. Informe de Miguel Angel Alvarez Director DesarrolloWeb.com Mail: miguel@desarrolloweb.com
  • 2. Esquema de funcionamiento del libro de visitas PHP Veamos el diagrama de funcionamiento de la aplicación de libro de visitas en PHP para hacernos una idea inicial, que completaremos más adelante con el código de cada script. 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. 1) Si no recibe datos del 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. 1.1) Si existen más firmas, muestro el mensaje para verlas. 1.2) Si no existen más firmas, no hago nada. Por último, coloco el formulario de firma para que los visitantes puedan participar. 2) Si recibo datos por el formulario Esto quiere decir que el visitante ha rellenado el formulario de firma del libro y lo ha
  • 3. 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. 2.1) Si los datos eran correctos Si todas las comprobaciones fueron positivas, introduciremos los datos en el formulario y daremos las gracias al visitante por firmar el libro 2.2) Si los datos no eran correctos Advertiremos al visitante que debe rellenar los campos correctamente. Informe de Miguel Angel Alvarez Director DesarrolloWeb.com Mail: miguel@desarrolloweb.com La base de datos MySQL del libro de visitas Para el trabajo con el libro de visitas, como ya se ha apuntado, se requerirá el uso de una base de datos. Bueno, en realidad lo que necesitaremos es contar con una tabla adicional para la base de datos que ya contenga tu sitio web. 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: Nombre del campo Tipo Id_librovisitas_php int(11) nombre varchar(150) email varchar(100) valoracion tinyint(4) comentario text El campo id_librovisitas_php será un campo autonumérico, que será la clave primaria de
  • 4. la tabla. Los campos nombre y email serán de tipo cadena de texto, con 150 y 100 caracteres de tamaño máximo respectivamente. El campo valoración guardará un número, en este caso de tamaño pequeño (tinyint) porque sólo vamos a guardar números del 1 al 5. Por último el comentario, que es una cadena de texto con longitud indeterminada. La tabla la podremos crear en nuestro servidor de bases de datos con la siguiente sentencia Crearte Table: CREATE TABLE librovisitas_php ( id_librovisitas_php int(11) unsigned NOT NULL auto_increment, nombre varchar(150) NOT NULL, email varchar(100) NOT NULL, valoracion tinyint(4), comentario text, PRIMARY KEY (id_librovisitas_php) ); Informe de Miguel Angel Alvarez Director DesarrolloWeb.com Mail: miguel@desarrolloweb.com Mostrando las firmas del libro de visitas Recordando la explicación general de este ejercicio, nos acordaremos de que la página del libro de visitas tenía dos grandes bloques, que se decidían comprobando si se recibe o no algo por el formulario. Para ello podemos utilizar un enunciado if como este: 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. Extraer las últimas firmas En este caso, lo primero a realizar es la extracción de las últimas firmas de la base de datos. Para ello debemos construir una sentencia SQL que seleccione de la base de datos dichas firmas. //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; //ordeno la sentencia y limito el numero de resultados $ssql .= " ORDER BY id_librovisitas_php desc limit 11"; //tomo el juego de resultados $resultid = mysql_query($ssql,$conn);
  • 5. Esta sentencia se construye en varias partes. Primero se crea la primera parte del select y luego otras partes más complicadas de ver. Será necesario un inciso para entender la parte en la que se evalúa si existe o no la variable vermas, recibida por URL ($_GET["vermas"]). Esto viene porque en la parte de debajo de las firmas, en caso de que existan más firmas de las que se hayan mostrado, se colocaría un enlace para ver más firmas, que contendría una referencia a este propio libro de visitas con la variable vermas igual al identificador de la próxima firma que haya que visualizar. Algo como librovisitas/index.php?vermas=960 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. En la última línea se ejecuta la sentencia SQL para extraer los datos. Bucle While Se realiza a continuación un bucle para recorrer los resultados. Es un sencillo recorrido por un conjunto de resultados de una consulta a base de datos. Tiene la particularidad de que se cuentan los resultados mostrados para, en caso de que se hayan mostrado ya 10, no seguir mostrando más. while (($damefila=mysql_fetch_object($resultid)) && ($num_filas<10)) { ?> <table align="center" width="100%" cellspacing="2" cellpadding="0" border="0"> <tr> <td valign="top" class=fuente8><b> <? //si el visitante no introdujo nombre muestro como nombre "Anónimo" if ($damefila->nombre == "-"){ echo "Anónimo"; }elseif ($damefila->email != "-") { echo '<a href="mailto:' . $damefila->email . '">' . $damefila->nombre . '</a>'; }else{ echo $damefila->nombre; } ?></b>:<br> </td></tr> <tr><td bgcolor=cccccc colspan="2"><img src="images/pixeltrans.gif" width=1 height=1 border="0"></ td></tr> <td class=fuente8 valign="top"> <?echo strip_tags($damefila->comentario)?> <td valign="top" align="right" nowrap class=fuente8> Valoracion: <?echo $damefila->valoracion?> </td> </tr> </table> <br> <? $num_filas++; } //termina el bucle while
  • 6. 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. Mostrar el enlace de vermas 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>"; Mostrar el formulario de firma Por último se debería mostrar el formulario de la firma. Nosotros lo hemos separado en un fichero aparte para que quede todo más organizado. En el código de nuestro ejercicio en esta sección, lo único que encontraremos será el include con el archivo HTML que contiene el formulario. include ("formul_mensaje.html"); Informe de Miguel Angel Alvarez Director DesarrolloWeb.com Mail: miguel@desarrolloweb.com El formulario para firmar el libro de visitas El código del formulario para que los visitantes puedan incluir su firma en el libro de visitas es el siguiente. <form name=librovisitas action="index.php" method="post"> <table width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> <td class=titcol> <b>Firma el Libro de Visitas</b></td> </tr> <tr> <td class=fuente8> Déjanos tu mensaje en el libro de visitas y danos tu opinión del sitio <br> <br> </td> </tr> <tr> <td> <table width="100%" cellspacing="0" cellpadding="0" border="0"> <tr> <td class=fuente8 align="center"> Nombre <br> <input type="Text" name="nombre" size="20" maxlength="150"> <br> <br> Email
  • 7. <br> <input type="Text" name="email" size="20" maxlength="100"> <br> <br> Valoración <br> <select name="valoracion"> <option value=1>Repelente <option value=2>Mal <option value=3 selected>Regular <option value=4>Bien <option value=5>Fantástica </select> </td> <td ALIGN=CENTER class=fuente8 valign="middle"> Comentarios: <br> <textarea name="comentario" cols="30" rows="7"></textarea> </td> </tr> <tr> <td colspan=2 align=center class=fuente8> <br> <input type="submit" value=" Enviar la firma al libro de visitas "> </td> </tr> </table> </td> </tr> </table> </form> No reviste ninguna complicación para entenderlo. Simplemente deberemos conocer un poco la forma de crear formularios HTML. Informe de Miguel Angel Alvarez Director DesarrolloWeb.com Mail: miguel@desarrolloweb.com Comprobar si los datos recibidos son correctos La otra parte del script del libro de visitas en PHP que nos queda por comentar contiene la codificación de las acciones a tomar en caso de que sí se reciban datos del formulario. Dichas acciones son básicamente comprobar si los datos son correctos y, si así es, insertar la información en la base de datos. Las comprobaciones sirven para asegurarnos que la información introducida va a ser siempre válida, para que las firmas se muestren perfectamente. Determinadas informaciones podrían dar lugar a errores al introducir la información en la base de datos o a la hora de mostrar las firmas en la página. Eliminar las etiquetas HTML o PHP 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>
  • 8. 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. //eliminamos las etiquetas HTML y PHP de las cadenas de texto $nombre = strip_tags($_POST["nombre"]); $email = strip_tags($_POST["email"]); $comentario = strip_tags($_POST["comentario"]); Cortamos las cadenas demasiado largas Para no intentar introducir textos en la base de datos que en realidad no caben, recorto los textos hasta su tamaño máximo. //Cortamos las cadenas demasiado largas $nombre=substr($nombre,0,150); $email=substr($email,0,80); Comprobamos que el visitante ha rellenado algo 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 no había rellenado nada mostramos un mensaje advirtiéndolo. En el caso contrario, es decir, si todo era correcto, inserto en la base de datos la información. Informe de Miguel Angel Alvarez Director DesarrolloWeb.com Mail: miguel@desarrolloweb.com Inserto los datos en la base de datos Si todas las comprobaciones fueron correctas, se introduce en la base de datos del libro de visitas la información recibida como firma. Pero antes se realizará un pequeño ajuste adicional de los datos a introducir. //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";
  • 9. 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. //Generamos la ssql e insertamos el registro $ssql = "INSERT INTO librovisitas_php (nombre,email,valoracion,comentario) VALUES ('" . $nombre . "','" . $email . "'," . $_POST["valoracion"] . ",'" . $comentario . "')"; mysql_query($ssql,$conn); Por último se muestra un mensaje dando las gracias al visitante que ha firmado el libro de visitas. <div align="center"><b>Muchas gracias por tu participación</b></div> El código completo del ejercicio se puede descargar aquí. Se puede ver en marcha aquí. Informe de Miguel Angel Alvarez Director DesarrolloWeb.com Mail: miguel@desarrolloweb.com