Libro de visitas

Iniciado por .Master., 11 Marzo 2007, 05:50 AM

0 Miembros y 1 Visitante están viendo este tema.

.Master.

hola, aca vengo a pedir ayuda.

estuve en internet busacando libro de visitas simple que no use base de datos (que use .txt), y no encontre ninguno que ande bien.

lo que yo quiero es esto, a ver si me explico:

http://img105.imageshack.us/img105/8784/dibujobx8.png

y el formulario para firmar no.

bueno si alguien sabe como hacer esto con archivos .php y .txt, que me avise gracias.

coolfrog

me parece que mejor lo haces con xml, ahi puedes estructurar mejor como va a guardar todo el texto, solo es una sugerencia por que con archivos txt supongo que si se puede hacer, no lo intente pero creo que seria muy dificil (pero no imposible) leer todo el texto y separarlo en partes como la fecha el usuario y el mensaje, para eso mejor xml.

дٳŦ٭

#2
Checate este código y me dices.

Saludos  :P

Mejor lo pongo  ;D
      
LIBRO DE VISITAS

Este libro de visitas funciona en base a un archivo de texto, donde cada linea del archivo continene un registro, y a su vez cada línea contiene varios campos separados por el sigono "|" (pipeline). Este archivo tiene un aspecto coo el siguiente:

Walter|Esta es una prueba|06 de julio de 2005|
Claudia|Hoy esta lloviendo|07 de julio de 2005|

El script PHP abre este archivo, lee su contenido y lo almacena en un arreglo donde cada elemento del arreglo es una linea del archivo . Luego se recoore el arreglo y se trocea para separar los campos inlcuidos en cada linea mediante la función explode.

Veamos como podría ser código del archivo PHP que llamermos libro.php:


<?php

$archivo 
file("libro.txt");
/* file lee el archivo y guarda el contenido en un arreglo, donde cada elemento del arreglo corresponde a una línea del archivo */

if (!$archivo/* si no se puede abrir el archivo */
{
     echo 
"<p>No se pudo abrir el archivo.</p>";
}

$filas=count($archivo);
/* la funcion count cuenta el número de elementos de un arreglo y lo guarda en la variable $filas. Esta varible nos servirá como variable de control para recorrer el arreglo $archivo */

for($i=0;$i<$filas;$i++)
{
     
$campo=explode("|",$archivo[$i]);
     
/* la funcion explode divide una cadena en base a un caracter elegido, en este caso | y lo guarda en el arreglo $campo
luego se va obteniendo cada campo equivalente a los elementos del arreglo */
     
$nombre $campo[0];
     
$comentario $campo[1];
     
$fecha $campo[2];

     
/* finalmente se imprimen por pantalla los datos */
    
echo "\n<p>$comentario<br><font color='B500C2'>$nombre</font><br><font color='FF0000'>$fecha</font></p><br>";

}

?>



Ingreso de Datos

Para los usuarios puedan ingresar sus cometarios requeriremos agregar un formulario al final de archivo libro.php y que conecte con script que sea capaz de escribir en el archivo de texto los datos ingresados a través del formulario.


<form action="agrega_comentario.php" method="get">
<p>
Tu Comentario:<br>
<TEXTAREA NAME="comentario" ROWS="8" COLS="60" WRAP="soft"></TEXTAREA></p>
<p>Tu nombre: <input type="text" name="nombre" size=40></p>
<p><input type="submit" value="agrega tu comentario">&#160;&#160;&#160;<input type="reset" value="limpiar"></p>
</form>


Debemos ahora crear el Script que ingrese los datos en el archivo de texto (agrega_comentario.php):


<?php
$comentario
=trim($texto); /* quita los espacios en blanco a los lados de la cadena de texto */
$nombre=trim($nombre);

/* COMILLAS Y OTROS */
/* se reemplazan las comillas y otros simbolos mediante la función eregi_replace que busca una cadena en otra, y l reemplaza por una tercera (ver Manejo de cadenas de Texto) */
$comentario=eregi_replace('\\\"',"&#38;#34;",$texto);
$comentario=eregi_replace("\\\'","&#38;#39;",$texto);
$comentario=eregi_replace("<","&#38;#60;",$texto);
$comentario=eregi_replace(">","&#38;#62;",$texto);
/* reemplazo los saltos de carro por la etiqueta <br>, de lo contario al ingresar los datos en el archivo, se me generan saltos de carfro que provocan errores al leer el archivo */
$comentario=eregi_replace("&#38;#60;br&#38;#62;","<br>",$texto);

if(
$comentario==""/* reclama si no se ha ingresado texto */
{
echo 
"<center><h2>¿No vas a escribir nada?</h2></center>";
exit();
}
if(
$nombre==""/* reclama si no se ha ingresado nombre */
{
echo 
"<center><h2>¿Y tu nombre?</h2></center>";
exit();
}
?>


<?php
/* con esta funcion se formatea la fecha al castellano */
function calcula_fecha()
{
/* consultar la funcion date en www.php.net/manual/es/ */
$dia date ("d"); /* obtiene el número del día del mes */
$me date ("m"); /* obtiene el número del mes */
$agno date ("Y"); /* obtiene el año con 4 cifras */
$mes=""/* se inicia la variable $mes vacía */
/* mediante una serie de if se obtiene el mes en castellano, la funcion date puede obtener el nombre del mes, pero lo hace en inglés */
if($me=="01"$mes="enero";
if(
$me=="02"$mes="febrero";
if(
$me=="03"$mes="marzo";
if(
$me=="04"$mes="abril";
if(
$me=="05"$mes="mayo";
if(
$me=="06"$mes="junio";
if(
$me=="07"$mes="julio";
if(
$me=="08"$mes="agosto";
if(
$me=="09"$mes="septiembre";
if(
$me=="10"$mes="octubre";
if(
$me=="11"$mes="noviembre";
if(
$me=="12"$mes="diciembre";
/* se arma la cadena con la fecha */
$cadena "$dia de ";
$cadena .= "$mes de ";
$cadena .= "$agno";
return 
$cadena/* se devuelve la cadena con la fecha */
}

$fecha calcula_fecha(); /* se guarda en el valor de la funcion calcula_fecha() en la variable $fecha */
?>


<?php
$datos 
.= "$nombre|$comentario|$fecha|\n";
?>


<?php
/* se genera un puntero que apunta al archivo libro en modalidad de agregar al final "a" */
$archivo fopen("libro.txt""a");
if (!
$archivo/* si no se puede abrir el archivo reclama */
{
echo 
"<center><h2>No se pudieron agregar los datos</h2></center>";
exit;
}
/* Se escriben los datos */
fputs($archivo$datos); /* fputs, escribe una cadena en el puntero indicado ($archivo) */
fclose($archivo); /* se cierra el archivo */
?>



Con sangre andaluza :)


.Master.

Hola, gracias por responder.

hice todo eso, le di permiso a libro.txt y todo, cuando abro libro.php, me aparece asi:



y cuando quiero firmar y lo envio me aparece esto:








Para mi el codigo del formulario debe estar mal.

Alguien me puede ayudar

Thelord

#4
Saludos Ing_Amc.

Sabes me interesa ese libro de visitas pero, ali igual que .Master estoy medio confundido con el error,  trato de entenderlo pero no logro resolver nada.

Sobre el archivo.txt, solo le agregue unos comentarios para que no me marcara "No se puede leer el archivo".

Esperare los comentarios..
Saludos.

Por cierto el post ya tiene mucho tiempo. pero nimodo.

EDIT:

Saludos..

Despues de razonarle un rato y con mis escaso conocimientos de casi nada de C.
Deduje que le falta esto $texto=$comentario; en la primer linea del archivo agrega_comentario.php y listo.
Pero tienes que tener activada la opcion global_variable=ON en tu PHP.INI.

Edita tu php.ini .. ahi veras la directiva:
register_globals = OFF .. pasalo a ON para trabajar de la forma habitual con tus variables que envias de formularios/URL's entre otras.

En caso de que no deses modificar tu PHP.INI
Solo cambia estas variables:
$texto=$comentario;
$comentario=trim($texto);
$nombre=trim($nombre);

A esto:

$texto=$_GET[comentario];
$comentario=trim($texto);
$nombre=trim($_GET[nombre]);

Se te agradece Ing_Amc.