Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: juanfelice7 en 11 Diciembre 2014, 09:51 am



Título: Problema con fopen
Publicado por: juanfelice7 en 11 Diciembre 2014, 09:51 am
Hola a todos!
Quiero contarles que mis conocimientos de PHP son escasos, pero me las ingenié para llegar a esto.
Lo que estoy haciendo es escribir en un TXT, pero lo que quiero hacer (y me está dando problemas) es re-escribir en el archivo, pero sin borrar su contenido.
Para eso usé "r+" porque necesitaba escribir a partir del comienzo del archivo, pero lo que hace es (de todas maneras) reemplazar los caracteres siguientes.
¿Cómo puedo escribir al principio de un archivo manteniendo el resto del contenido?

Les dejo todo mi código, que es muy pequeño, pero que me está dando dolores de cabeza.
¡Y desde ya muchísimas gracias!
Juan

Código
  1. <html>
  2. <head>
  3. <title>Cartelera</title>
  4. <meta name="robots" content="noindex">
  5. <meta name="googlebot" content="noindex">
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  7. </head>
  8. <body>
  9. <h1>Cartelera</h1>
  10. <?php
  11.   $ar=fopen("./wp-content/themes/reco/datos.txt","r+") or
  12.    die("ERROR.");
  13.  fputs($ar,"\n");
  14.  fputs($ar,"<h6>");
  15.  fputs($ar,$_REQUEST['titulo']);
  16.  fputs($ar,"</h6>");
  17.  fputs($ar,"\n");
  18.  fputs($ar,"<p>");
  19.  fputs($ar,$_REQUEST['contenido']);
  20.  fputs($ar,"</p>");
  21.  fputs($ar,"<hr width='100%'>");
  22.  fputs($ar,"<br>");
  23.  utf8_encode($ar);
  24.  fclose($ar);
  25.  echo "Los datos se cargaron correctamente.";
  26.  ?>
  27. </body>
  28. </html>
  29.  

Mod: Etiquetas GeSHi obligatorias. Posts sobre PHP van al subforo de PHP.


Título: Re: Problema con fopen
Publicado por: #!drvy en 11 Diciembre 2014, 10:18 am
Ese comportamiento es normal porque empiezas a escribir desde el principio del archivo hacia abajo. Lo que tienes que hacer es leer el archivo (obtener en contenido anterior) y escribir ambas cosas (lo nuevo y lo viejo).

Código
  1. $archivo = '/wp-content/themes/reco/datos.txt';
  2. $ar=fopen($archivo,"r+") or die("ERROR.");
  3.  
  4. $_data = fread($ar,filesize($archivo));
  5.  
  6. fputs()...
  7.  
  8. fputs($ar,$_data);
  9. fclose($ar);
  10.  
  11. echo "Los datos se cargaron correctamente.";

El utf8_encode($ar) es incorrecto ahí. No se que intenciones tenias con el pero esa función utiliza strings, no objetos.

Saludos


Título: Re: Problema con fopen
Publicado por: juanfelice7 en 11 Diciembre 2014, 20:01 pm
Me sirvió muchísimo tu ayuda!! De todas formas algo sigue fallando.

Cuando publico un nuevo anuncio me parece el texto anterior tanto arriba como abajo.
Por ej.

Publico "1" y se escribe "1"
Publico "2" y se escribe "1 2 1"
Publico "3" y se escribe "1 2 1 3 1 2 1"

Tendría que bloquear que lo pegue también arriba, sólo abajo. ¿Es así? ¿cómo lo lograría?
Gracias de nuevo!