Comentarios. Sin recargar ni BD

Iniciado por ‭lipman, 20 Agosto 2008, 12:56 PM

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

‭lipman

He estado buscando por el foro y no encuentro lo que busco, quiero hacer un sistema de comentarios en el que no tenga que acceder a otra página ni recargar, ni usar bases de datos. Un formulario, escribo, le doy al botón y aparece instantáneamente.

Aquí está lo que tengo:

Código (php) [Seleccionar]
<html>
<head>
<title>Prueba</title>
</head>

<body>
<font color="#009966">Texto de prueba</font><br><br><br>
<?
$texto = $_POST['texto'];
$text = $texto . "FinDeComentario";
$archivo = fopen("comentario.txt", "a");
fputs($archivo, $text);
fclose($archivo);

$nombre_archivo = "comentario.txt";
$gestor = fopen($nombre_archivo, "r");
$contenido = fread($gestor, filesize($nombre_archivo));
fclose($gestor);

$comentario = explode("FinDeComentario", $contenido);

foreach ($comentario as $clave => $valor)
{
echo $valor . "<br>";
}


?>
<form method="post">
<textarea name="texto" cols="50" rows="5"></textarea>
<br>
<input type="submit" value="Añadir comentario">
</form>
</body>
</html>


Explico para los que no se lo quieran leer, el código lo que hace por orden:

-Escribe en comentario.txt el comentario seguido de la cadena "FinDeComentario"
-Leo todo el archivo
-Hago una matriz gracias al explode en la que cada índice es un comentario diferente.
-Con el foreach muestro toda la matriz (es decir, todos los comentarios)

Pero esto me da varios errores:
-Cada vez que refresco el documento o le doy a "escribir comentario" se guarda un caracter en blanco en la matriz y luego este caracter aparece en la página como un salto de línea
-Al principio, cuando no hay comentarios muestra un error porque no hay comentarios

El segundo problema lo puedo solucionar si pongo el código php debajo del formulario, pero yo quiero que aparezca encima.

¿Alguna idea?

Saludos

ActiveSheet

usa el concepto ajax para si no quieres que se refresque la pagina.

Diabliyo

Hola:

Que tal lipman_dj, hace un par de años, hice un sistema web (tipo WordPress, PHPNuket, etc..) pero con la particularidad de que toda la informacion se guardaba en archivos (ficheros) asi que cnstantemente las: noticias, secciones, menus, comentarios, URLs, etc, etc... las guardaba directamente en archivos. Mi sistema es muy rapido, a pesar de usar archivos, pero esto se lo debo a que para leer y sacar informacion de los archivos utilizaba una forma totalmente distinta la que usas tu jejeje.

Yo utilizaba caracteres delimitadores para determinar o saber cuando empezaba o terminaba algo, ese algo podia ser: una noticia, una sección, un menu, un comentario, etc, etc...

Los caracteres que yo utilizaba eran: ->  para indicar el inicio de algo y --> para indicar el fin de algo. Otra cosa muy importante, no te recomiendo utilizar fread(), ya que si el archivo llega a pesar mucho el servidor se hara cada vez mas lento y por ende tambien la pagina :D !. Yo utilizaba fgets(), osea que leia linea por linea del texto y utilizaba una funcion recursiva para leer todo el contenido que estaba entre los caracteres especiales -> y -->.

Potseriormente para hacer el efecto de carga sin refrescar la pagina utilizaba AJAX (como te lo ha mencionado ActiveSheet), asi que para eso es necesario que tengas conocimientos basicos de javascript y adentrarte un poco en lo que es AJAX.

Te recomiendo los manuales/tutoriales de critalabs para aprender AJAX !! :D. En realidad AJAX es una cosa muy facil, que si tienes buenos conocimientos en programacion y una buena logica, podras hacer tus codigos funcionales con AJAX en menos de un dia ;) !!..

bye bye

‭lipman

Muchas gracias a los dos ^^

Primero de todo voy a seguir con PHP y cuando sepa más seguiré por javascript y lo que me dicen para poder hacer lo de los comentarios, un saludo.