Foros del Web » Programando para Internet » PHP »

Escribir un txt agregando datos al comienzo

Estas en el tema de Escribir un txt agregando datos al comienzo en el foro de PHP en Foros del Web. Pues, tengo un pequeño problema para escribir un archivo con datos en PHP, pero agregando datos, no reemplazando. Lo estoy usando para un chat, y ...
  #1 (permalink)  
Antiguo 01/03/2013, 14:58
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 12 años
Puntos: 0
Pregunta Escribir un txt agregando datos al comienzo

Pues, tengo un pequeño problema para escribir un archivo con datos en PHP, pero agregando datos, no reemplazando.

Lo estoy usando para un chat, y en el chat los mensajes se escriben en un archivo TXT para luego imprimirlos en pantalla. Resulta que el script funciona muy bien, pero agrega los datos hasta abajo del archivo. Esto hace que los mensajes del chat se pongan hasta abajo, y cuando aparece el scroll pues se tiene que bajar el scroll de forma manual, y es esteticamente malo.

Alguien puede ayudarme a una solucion? Cualquiera de estas 3 soluciones me ayudaria:

1.- Hacer que en automatico se vayan agregando las nuevas firmas al principio.
2.- Hacer que el scroll baje automaticamente al ultimo comentario.
3.- Hacer que aparezcan los ultimos 10 comentarios y los demas se vayan borrando.

El codigo que tengo es este y funciona muy bien, repito, graba las firmas pero abajo, como es la funcion de "a", pero se supone que "r" graba los datos al principio, pero ya intente modificando "a" por "r" y no graba nada, tampoco funcionó con "r+"

.

Código PHP:
<?php
session_start
();
$comen 'chat/'.date('m-d-Y').'-sc.txt';
$message htmlentities($_POST['message'], ENT_QUOTES'UTF-8');

if(
$_POST['message'] != '')
{
    
$scfh fopen($comen"a");
    
fwrite($scfh,'<p><span>'.$_SESSION['username'].'</span> '.$message.'</p>'."\n");
    
fclose($scfh);
}

$sc_file file('chat/'.date('m-d-Y').'-sc.txt');

$sl 0;

foreach(
$sc_file as $line)
{
    if(
$sl >= $_SESSION['number_lines'])
    {
        echo 
$line;
    }
    
$sl++;
}
?>




... Gracias por su ayuda!


.
  #2 (permalink)  
Antiguo 03/03/2013, 05:06
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Escribir un txt agregando datos al comienzo

Consulta las funciones filegetcontents() y fileputcontents() con sus correpondientes opciones.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 03/03/2013, 06:19
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 7 meses
Puntos: 33
Respuesta: Escribir un txt agregando datos al comienzo

Buenas.

Como dice @repara2, con las funciones de archivo te pueden ir bien.

Respondiendo a una de las maneras (scroll), puedes probar de usar una funcón JS, el "offsetTop".

Podrías hacer algo así:

Código:
function scroll(in, sn){
    document.getElementById(in).scrollTop = document.getElementById(se).offsetTop;
}
Donde "in" es el elemento (div, supongo) que tiene el scroll, y "se" el elemento que quieres que quede visible.

Es decir, si tu div del chat es:

"<div id="chat">"

Y cada mensaje tiene:

"<div id="mensajeX">" (x=número de mensaje, por ejemplo)

Deberías hacer:

"scroll("chat", "mensajeX");

Espero que te sirva.

Saludos.
  #4 (permalink)  
Antiguo 04/03/2013, 17:53
 
Fecha de Ingreso: octubre-2012
Mensajes: 45
Antigüedad: 12 años
Puntos: 0
Respuesta: Escribir un txt agregando datos al comienzo

Gracias a los dos, pero lo solucioné con ésto:

Código Javascript:
Ver original
  1. <script>
  2. function ver(e,m){
  3.     var t=e.keyCode || e.wich;
  4.     if(t==13){
  5.        agregar(m);
  6.         return false;
  7.     }
  8.     return true;
  9. }
  10. function agregar(m){
  11.     document.getElementById('chat').innerHTML+='<br />'+m;
  12.     document.forms[0].textarea.value='';
  13. }
  14.  
  15.  
  16. onload=function(){
  17.     setInterval(function(){document.getElementById('chat').scrollTop=document.getElementById('chat').scrollHeight},30);
  18. }
  19. </script>

Aunque no se puede controlar el scroll, voluntariamente ya no se puede subir, asi que lo que hice fue poner un:

Código CSS:
Ver original
  1. overflow: hidden;

Aunque parece solo un parche, me parece util para lo que necesito.

Gracias de nuevo a ambos.


.
  #5 (permalink)  
Antiguo 05/03/2013, 01:21
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 7 meses
Puntos: 33
Respuesta: Escribir un txt agregando datos al comienzo

De nada!

Pero eso que dices de "un parche", te recomiendo que andes con mucho cuidado...

Yo arreglé varias funciones con parches "temporales" debido al crecimiento exagerado de una web de un cliente, y ahora es prácticamente imposible modificar algo, por lo que me está tocando rehacer de 0 TODO...

Es decir, vuelta al análisis funcional de la base de datos, entrevista con el cliente, diseñar la base de datos, implementarla (con mejoras), y todo el PHP/JS/AJAX/CSS desde cero otra vez...

Es un proyecto en el que llevo metido casi un año (este día 10 hará un año), y tras un mes tengo el 60% de la nueva web, pero como verás es un tiempo valioso que se ha perdido...

No quiero decir con eso que tu solución sea errónea; si funciona mejor que mejor... solo quería comentarte que a veces es mejor rehacer toda una función cuando estás a tiempo que no ponerle un parche y luego tener que remodelar todo desde cero...

Saludos

Etiquetas: chat, fopen, fwrite, graba
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:06.