Foros del Web » Programando para Internet » PHP »

Problema con fwrite y r+

Estas en el tema de Problema con fwrite y r+ en el foro de PHP en Foros del Web. No me sale !! Me machaca el contenido que hay no me funciona, lo que intento hacer es lo siguiente: Insertar al principio con el ...
  #1 (permalink)  
Antiguo 24/08/2003, 13:36
Axo
 
Fecha de Ingreso: abril-2003
Ubicación: Virtual
Mensajes: 953
Antigüedad: 21 años
Puntos: 7
Problema con fwrite y r+

No me sale !! Me machaca el contenido que hay no me funciona, lo que intento hacer es lo siguiente:

Insertar al principio con el fin de que despues con un include("archivo.txt"); salga todo ordenado de firma mas reciente a la mas antigua.

Con a+ si que me va bien, pero me lo inserta al final cosa que no quiero porque la idea es que al hacer el include salga como os comente arriba.

Buenos a ver si podeis echarme una mano y decirme como se hace porque vaya tela....
  #2 (permalink)  
Antiguo 24/08/2003, 13:50
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 22 años, 8 meses
Puntos: 9
Y si intentas esto:

$mensaje=fread("archivo.txt");
$mensaje_nuevo=$firma.$mensaje;

De ahí escribes sobre el archivo, el mensaje nuevo y lo cierras.

Ya con eso tienes para que lo último que escribas aparesca arriba y no abajo.

Bueno eso creo yo, solo es cosa de perfeccionarlo. Salu2
  #3 (permalink)  
Antiguo 24/08/2003, 14:08
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Es que no se inserta, simplemente se coloca el cursor al comienzo y se escribe en esa posicion, pisando lo que existia. Es el problema de los ficheros secuenciales.

Deberas hacer como te ha dicho lado2mx.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 24/08/2003, 16:01
Axo
 
Fecha de Ingreso: abril-2003
Ubicación: Virtual
Mensajes: 953
Antigüedad: 21 años
Puntos: 7
Con $mensaje=fread("archivo.txt"); nu sale nada, no me acumula el archivo.txt en $mensaje :(
  #5 (permalink)  
Antiguo 24/08/2003, 16:29
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Mas que nada porque era la idea de como debes hacerlo, no el codigo literal. Si miras en el manual fread() (www.php.net/fread), necesita que primero hagas un fopen(). Y tambien necesita que le pases el numero de bytes a leer, pero para eso puedes usar la funcion filesize(). Acostumbrate a revisar en el manual las funciones que no conozcas.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 25/08/2003, 09:03
Axo
 
Fecha de Ingreso: abril-2003
Ubicación: Virtual
Mensajes: 953
Antigüedad: 21 años
Puntos: 7
Ya lo mire antes de preguntar Josemi pero no me entere muy bien y ya me ha salido, gracias a los dos !!! He aquie el resultado, ahora solo queda perfecionarlo un poco y listo

Código PHP:

// Leemos
//abrimos con r para leer el fichero y acumularlo en una variable (cotenido en este caso)

$f1=fopen("$archivo","r");
$contenido fread ($f1filesize ($archivo));
fclose($f1);
echo 
$contenido;


//abrimos con w+ con lo cual borramos e insertamos todo de nuevo 

$f1=fopen("$archivo","w+");
// $txt es el nuevo texto que le pasamos y seguidamente le metemos todo lo que tenia:

$textofinal=''.$txt.'  '.$contenido.'';
fwrite($f1,"$textofinal\n");
fclose($f1); 

echo 
"Mensaje enviado"
Se puede simplificar pero asi lo he hecho para aclarme paso a paso.
Weno espero que le sirva a alguein ijiji
  #7 (permalink)  
Antiguo 25/08/2003, 09:05
Axo
 
Fecha de Ingreso: abril-2003
Ubicación: Virtual
Mensajes: 953
Antigüedad: 21 años
Puntos: 7
Ups una cosilla mas para el que este mas verdecillo... para mostrar despues los mensajes podrias habria que poner por ejemplo:

Código PHP:
 <? include("archivo.txt"); ?>
en el sitio que quieras que se muestre.
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 15:02.