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
Esto es el campo de prueba para el codigo de arriba? no entiendo mucho, aver provemos!
haber como es esto
Me gusta el funcionamiento de este libro de visitas es muy practico y atractivo visualmente.
Espero ayudar a enriquecerlo. Mucha Suerte.
chevere
Hola @Oscar Marquez, cualquier aporte siempre será bien recibido ;-)
Saludos y Suerte
esta super pero le falta un poco mas de texto bay
hola el diseño de su sitio esta bien
hola este ejemplo esta muy bueno, espero que…
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
Cuando empieza el cole
@Uge, la escuela comienza en Septiembre, claro… o esto es spam? :\
Haber si funcionaaaaaa!!!!!!!!!!
Hola, muy bueno eso, sabes como hacer para que se vean las fotos? como en metroflog o myspace
NO ENTIENDO NADA DE COMO ASER EL LIBRO DE VISITA AYUDEME PORFABOR MSN luiskaler@hotmail.com
estoy probando el libro gracias por la ayuda
esta muy bien diseñado
Ayuda , my sale error
Parse error: syntax error, unexpected T_STRING in /home/www/marcelotaripha.atwebpages.com/172851_taripha.html on line 6
Hola @taripha, debes revisar las conillas, por ahi debe estar el error ;-)
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
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 ;)
muy bueno, el tuto q presentaaa, muchas gracias
hola
@alberto eh… que tal?
ahm!!! algun codigo para que, nose… cuando alla 10 firmas genere paginas.
@pako.O puedes usar PHPPaging (Recomendado)
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
@jonathan fíjate que tienes mal esa línea, donde dice PRIMARY KEY ( `firma` ) debe ser PRIMARY KEY ( `firma_id` )…
saludos y suerte
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.
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
Y para que no salga la hora minutos y segundos que debo hacer.
Gracias por tu atención
Solo asi: <?php echo “$row[fecha]” ?>
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…
Lo pruebo y te aviso, esta super interesante para mi que estoy en mis primeros pasos con php, gracias!!
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.
este codigo esta bien chido carnal hechale ganas todo bien
todo bien hermano el codigo esta de lo mejor saludos
Prueba de correo
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
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.
@koferito eso lo resuelves con una linea de CSS, asi:
textarea{overflow: auto;}
Saludos y gracias por leer mi Blog :)
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.
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 =)
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
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)
Pues que si escribo ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg pues desajusta todo. Como evitarlo?
es una prueba de comentario
exelente amigo era justo lo que buscaba ya lo tengo instalado y tambien el buscador que buena pagina!
gj,gh,gh,gh,f
hola estoy probando esto
qw
hola a ver que tal
…
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
Muy buen ejemplo para lo que estamos empezando.
Gracias
amigo buen aporte me funciono muy bien
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
oye ayudame con la fecha
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.
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
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
Muy bien te agradezco la informacion felicidades
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
Esta con ma… este tutorial andaba batallando y Gracias ati ya puedo hacer un libro de vistas muchas Gracias
estoy recien aprendiendo php y me a servido ene man…esta super bien explicado el algoritmo…saludos
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);