Como hacer un libro de visitas sencillo, usando PHP y MySQL
Hoy les traigo otro ejemplo bien sencillo que nos puede servir de base para hacer cosas mas complicadas y de calidad. Esta vez es un libro de visitas y veras que fácil sera de realizar.
Para lograr nuestro objetivo final, tenemos que crear una base de datos (libro_visitas), la cual contendrá una tabla de nombre firmas y un archivo php, uno solo, al que llamaremos libro-visitas.php.
La base de datos MySQL:
La tabla que les pongo de ejemplo, solo tiene tres campos: (firma_ID, usuario y firma).
CREATE TABLE `firmar` (
`firma_ID` int(11) NOT NULL auto_increment,
`usuario` varchar(25) NOT NULL,
`firma` text NOT NULL,
PRIMARY KEY (`firma_ID`)
) ENGINE=MyISAM ;
NOTA: Como es lógico, puedes agregar mas campos, dependiendo de lo que quieras logras, por ejemplo e-mail, sitio web, fecha, hora y aprobado (si, no), pero ese ya es tu trabajo ;)
El archivo libro-visitas.php:
En este archvo, claro esta, tendremos un formulario HTML mediante el cual, el usuario registrara su firma en nuesto libro de visitas, lo validaremos para que no nos envien campos vacios e insertaremos los registros a la base de datos, y tambien mostraremos las firmas ya guardadas.
<?php
/* conexion ****************/
// conectamos al servidor MySQL
$link = mysql_connect('localhost', 'root', '');
if(!$link) {
die("Error al intentar conectar: ".mysql_error());
}
// seleccionamos la base de datos
$db_link = mysql_select_db('libro_visitas', $link);
if(!$db_link) {
die("Error al intentar seleccionar la base de datos". mysql_error());
}
/* fin conexion ************/
/* prosesamiento de los datos */
// verificamos si ha sido enviado el formulario
if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
// verificamos que el formulario
// no venga vacio
if(!empty($_POST['usuario']) && !empty($_POST['firma'])){
// creamos las variables a usar en la consulta
// y le asignamos sus valores
$usuario = htmlentities(trim($_POST['usuario']));
$firma = htmlentities(trim($_POST['firma']));
// la consulta INSERT
$sqlInsert = mysql_query("INSERT INTO firmar (usuario, firma)
VALUES ('$usuario', '$firma')", $link)
or die(mysql_error());
}else{
echo "Debe llenar todos los campos";
}
}
/* fin del proseso de datos */
/* mostrando los registros (firmas) */
$sqlQuery = mysql_query("SELECT * FROM firmar", $link)
or die(mysql_error());
$totalFirmas = mysql_num_rows($sqlQuery);
// verificamos si hay
// alguna firma registrada,
// de lo contrario enviamos un mensaje
if($totalFirmas == 0){
echo "Nadie se ha animado a firmar este libro :(";
}
// si hay firmas registradas
// las mostramos
else{
while($row = mysql_fetch_array($sqlQuery)){
echo "<p><b>$row[usuario]</b> dijo:<br />". nl2br($row['firma']) ."</p><hr />";
}
}
?>
<!-- el formulario -->
<form name="html" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<p>
Usuario:<br />
<input type="text" name="usuario" />
</p>
<p>
Firma:<br />
<textarea name="firma" cols="35" rows="7"></textarea>
</p>
<input type="submit" name="enviar" value="Enviar" />
</form>
NOTA: Fijense bien en el uso de las funciones de cadena htmlentities y de trim, con ellas evitamos que nos inserten codigo HTML y nos dejen espacios en blanco al comienzo y final de las cadenas de texto enviadas por los usuarios.
Para terminar:
Espero que este ejemplo les sirva para sus trabajos y de impulso a quienes se inician. Siempre trato de no complicar mucho los códigos, para que se puedan entender bien los objetivos finales (además, que no me da pa mucho mas lo que se :/). Queda de parte de los lectores crecerce en base a esto y esforsarce para lograr un producto final mucho mejor, yo solo quiero darles una idea, una referencia y creo que lo he logrado.
A ver si se me ocurre alguna otra cosa en los próximos dias.
Saludos y Suerte



