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

64 Responses to Como hacer un libro de visitas sencillo, usando PHP y MySQL

64 Comments

  1. Esto es el campo de prueba para el codigo de arriba? no entiendo mucho, aver provemos!

  2. nestor says:

    haber como es esto

  3. Me gusta el funcionamiento de este libro de visitas es muy practico y atractivo visualmente.
    Espero ayudar a enriquecerlo. Mucha Suerte.

  4. rogertm says:

    Hola @Oscar Marquez, cualquier aporte siempre será bien recibido ;-)

    Saludos y Suerte

  5. angie anrea says:

    esta super pero le falta un poco mas de texto bay

  6. OLI says:

    hola el diseño de su sitio esta bien

  7. marco joni says:

    hola este ejemplo esta muy bueno, espero que…

  8. kakaroto says:

    ola, muy bueno eso, aunke no entiendo ni maizzz…

    oie no sabes de un buen curso de php y mysql ke ande por la red??

    eske kiero aprender..

    :D:D:D

  9. Uge says:

    Cuando empieza el cole

  10. rogertm says:

    @Uge, la escuela comienza en Septiembre, claro… o esto es spam? :\

  11. Romer says:

    Haber si funcionaaaaaa!!!!!!!!!!

  12. nando says:

    Hola, muy bueno eso, sabes como hacer para que se vean las fotos? como en metroflog o myspace

  13. LUIS says:

    NO ENTIENDO NADA DE COMO ASER EL LIBRO DE VISITA AYUDEME PORFABOR MSN luiskaler@hotmail.com

  14. tony says:

    estoy probando el libro gracias por la ayuda

  15. luis says:

    esta muy bien diseñado

  16. taripha says:

    Ayuda , my sale error
    Parse error: syntax error, unexpected T_STRING in /home/www/marcelotaripha.atwebpages.com/172851_taripha.html on line 6

  17. rogertm says:

    Hola @taripha, debes revisar las conillas, por ahi debe estar el error ;-)

  18. Pablo says:

    Hola, el código está buenísimo. Sólo tengo dos dudas. Cómo puedo hacer para que sólo almacene 100 comentarios la base de datos (para que no se haga muy pesado cada vez que cargo la página) y por último, cómo valido tildes, letra ñ, y demases??? Un saludo y gracias

  19. rogertm says:

    Hola @Pablo. Para que te almacene solo 100 comentarios, creo que debes crear un Cron Job en tu servidor y que se ejecute un script que elimine los registros cuando estos excedan los 100.

    Para validar de la forma que quieres, me parece que seria correcto usar expresiones regulares

    Saludos y gracias por visitar mi Blog ;)

  20. Christian says:

    muy bueno, el tuto q presentaaa, muchas gracias

  21. rogertm says:

    @alberto eh… que tal?

  22. pako.O says:

    ahm!!! algun codigo para que, nose… cuando alla 10 firmas genere paginas.

  23. rogertm says:

    @pako.O puedes usar PHPPaging (Recomendado)

  24. jonathan says:

    Disculpa pana creando la tabla me sale:

    CREATE TABLE `libro_visitas` (

    `firma_id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
    `usuario` VARCHAR( 25 ) NOT NULL ,
    `firma` TEXT NOT NULL ,
    PRIMARY KEY ( `firma` )
    ) ENGINE = MYISAM

    MySQL ha dicho:

    #1170 – BLOB/TEXT column ‘firma’ used in key specification without a key length

    …….que aho viejo? te agradezco tu respuesta

  25. rogertm says:

    @jonathan fíjate que tienes mal esa línea, donde dice PRIMARY KEY ( `firma` ) debe ser PRIMARY KEY ( `firma_id` )

    saludos y suerte

  26. maria jose says:

    Hola rogertm,
    he visto este libro de visitas y lo he hecho sin ningún problema. Te agradezco que lo hayas publicado.

    Me gustaría insertar la fecha en la que se hace la firma en el libro de visitas, cómo puedo hacerlo?

    Gracias por tu atención.

  27. rogertm says:

    Hola @maria jose, lo puedes hacer creando un nuevo campo en tu base de datos con nombre fecha, pones esto en el codigo de creacion de la BD: `fecha` timestamp NOT NULL default CURRENT_TIMESTAMP,.

    En este caso uso tiemstamp para que registre automáticamente fecha y hora, luego lo muestras en tu código PHP como mismo haces con los demas campos

    Saludos y suerte con eso

  28. maria jose says:

    Y para que no salga la hora minutos y segundos que debo hacer.

    Gracias por tu atención

  29. rogertm says:

    Solo asi: <?php echo “$row[fecha]” ?>

  30. Deiby says:

    Esta excelente el libro, es perfecto, asi es q me gustan los php, felicitaciones… sobre todo para q uno mismo los ponga en sus paginas con el diseño q uno quiera, y mejor aun, lo trabaje uno mismo y aprenda de manera muy chevere….

    seria bueno q hicieras unos articulos refentes a este, donde explicaras como se podrian agregar mas campos (principalmente para esto) pero q se viera como una continuacion o un añadido de este,…bueno, realmente espero algo tan claro y tan sencillo pero tam bacano como esto para agregarle mas campos y quizas mas funciones (pero lo idel es q esten en articulos separados creo yo)
    en fin muchas gracias y de nuevo felicitaciones… y q pena si me paso de exigente… jejee hasta pronto…

  31. juancho says:

    Lo pruebo y te aviso, esta super interesante para mi que estoy en mis primeros pasos con php, gracias!!

  32. Angel says:

    Hola rogertm: He usado tu script como base para hacer el libro de visitas de mi página y ha quedado muy bien. Gracias por poner tus conocimientos al servicio de todos.
    Saludos.

  33. cesar says:

    este codigo esta bien chido carnal hechale ganas todo bien

  34. cesar says:

    todo bien hermano el codigo esta de lo mejor saludos

  35. pedro says:

    Prueba de correo

  36. Distriker says:

    Hola Roger, me gustaría hacer algo para que mi usuarios puedan comentar el artículo, analisis o lo que sea. Me gustaría saber si esto valdría.
    Saludos

  37. koferito says:

    hola que tal roger, sabes tus ejemplos me han servido bastante, sobre todo los he logrado montar en las webs que he hecho, explicas muy bien, te lo agradesco mucho. Ahora te vengo con una duda, en el libro de visitas cuando en el textarea escribo letras continuas por ejemplo asi: gggggggggggggggggggggggggggggggggggg si se escriben muchas asi se desborda la pagina, como puedo evitar eso, agradeceria que me ayudaras.

  38. rogertm says:

    @koferito eso lo resuelves con una linea de CSS, asi:

    textarea{overflow: auto;}

    Saludos y gracias por leer mi Blog :)

  39. koferito says:

    hola roger, respecto a lo que te comente anteriormente, yo lo tengo de esta manera en el textarea: style=”overflow: auto;” pero yo decia que si alguien escribe muchos caracteres juntos: ggggggggggggg etc y le da enviar, se muestra pero desborda la pagina , el texto se sale de la estructura y desacomoda el diseño, no se si se corrija con codigo php, espero me puedas ayudar, estoy agradecido por tus prontas respuestas, gracias.

  40. oliver says:

    Hola este sistema esta muy bueno sirve perfectamente porque realmente he visto algunos otros y complican mucho las cosas esto es ejemplo de que se pueden hacer grandes cosas con poco codigo supongo muy bueno hermano te FELICITO sirve perfecto =)

  41. Jesus says:

    hola amigo la verdad soy muy novato en esto y solo se crear el formulario incluso ya aprendi a crear la base de datos y las tablas pero no se como unir el formulario a la tabla y sigo tus instrucciones pero cuando mando lo escrito me dice que no encuentra una pagina en el servidor en fin como veras disculpa pero soy my pero muy novato en esto. Saludos

  42. Querido amigo me da el siguiente error, las cosas que tuve que variar fue que el servidor de Cpanel me asigna la base cuyo nombre comienza por corazon por lo tanto quedo corazon_visitas y no libro_visitas pero eso yo lo cambie en el codigo ademas otra cosa le aplique una plantilla a la pagina pero no creo que eso importe

    este es el error:

    Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@'localhost’ (using password: NO) in /home/corazon/public_html/libro-visitas.php on line 248
    Error al intentar conectar: Access denied for user ‘root’@'localhost’ (using password: NO)

  43. facon says:

    Pues que si escribo ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg pues desajusta todo. Como evitarlo?

  44. ulises says:

    es una prueba de comentario

  45. german says:

    exelente amigo era justo lo que buscaba ya lo tengo instalado y tambien el buscador que buena pagina!

  46. david says:

    hola estoy probando esto

  47. fidel says:

    hola a ver que tal

  48. seva says:

    hola esta muy, lo hice y anda re bien, el tema es que cuando hago un recargar en la pagina se carga el mensaje que habia puesto anteriomente. pero bueno no importa mi pregunta es como hago para que tenga la barra como esa, osea que tenga negrita, cursiba y todo eso que tiene esto? gracias

  49. Javier says:

    Muy buen ejemplo para lo que estamos empezando.

    Gracias

  50. wilton says:

    amigo buen aporte me funciono muy bien

  51. wilton says:

    oye al recargar la pagina se suma la ultima firma insertada si la reinicio 10 veces
    pues se suman 10 firmas (la ultima escrita) que puedo hacer para que no pase eso

  52. wilton says:

    oye ayudame con la fecha

  53. novato504 says:

    Exelente tema !! me sirvio de mucho. te tengo unas recomendaciones, el codigo en el que haces el formulario lo deverias poner al principio, antes del codigo php, por que asi se ve mejor, tambien me gustaria que corrigieras el error que se da cuando alguien manda un comentario y recarga la pagina despues de mandarlo, el error es que se vuelve a mandar el mismo mensaje.

  54. Hola muchas gracias por el aporte, veo que el código lo tienes en el mismo archivo que el formulario, una pregunta nada mas se pude que el código este en otro archivo por separado y parar los parámetros o eso no es posible?
    de todos modos muchas gracias por el aporte

  55. Fernando says:

    hola, muy bueno el tuto, me da este error

    Error al intentar conectar: Access denied for user ‘thediva_se’@'srv151.one.com’ (using password: NO)

    esto es lo que modifique:

    $link = mysql_connect(‘localhost’, ‘thediva_se’, ”);
    if(!$link) {
    die(“Error al intentar conectar: “.mysql_error());

    donde le estoy errando?
    muchisimas gracias de antemano y disculpen la ignorancia :p

  56. roberto lopez says:

    Muy bien te agradezco la informacion felicidades

  57. crs94 says:

    dios mio me tarde pero me salio por el error de la tabla firmas y muchas gracias sigue asi yo apenas comienzo con php pero esto me va a impulsar gracias hermano

  58. Esteban says:

    Esta con ma… este tutorial andaba batallando y Gracias ati ya puedo hacer un libro de vistas muchas Gracias

  59. sebastan says:

    estoy recien aprendiendo php y me a servido ene man…esta super bien explicado el algoritmo…saludos

  60. Carlos Olivos says:

    Una consulta brother, en mi localhost funciona de maravilla pero cuando subo el script a mi host no reconoce la base de datos, sale error en la conexion, si podrias ayudarte e agradeceria mano.

    // 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(‘usuarios’, $link);

0 Pinkbacks | 0 Trackbacks

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>