Iniciar sesión

Ver la versión completa : Ayuda con PHP y manejo de ficheros



nakio
24/12/2007, 01:32
Hola a todos, no soy ningún experto en php pero necesito saber una cosilla para un cutre proyecto que llevo a cabo junto con unos amigos.
La cosa es la siguiente, supongamos que yo tengo un formulario con el campo "Texto" y lo que envío en dicho campo lo grabo en el archivo "bd.php", pues bien, que debo hacer para que lo que grabo en dicho fichero se almacene al principio del fichero, de modo que se corra (que mal suena) todo aquello que se encontraba con anterioridad en el fichero?

Por ejemplo, existe algún

$pf = @fopen("bd.php","a+");
if ($_POST[enviar]) {

Pero que en lugar de abrir el fichero y escribir al final del mismo, abra el fichero y escriba al comienzo sin borrar lo que anteriormente había en dicho archivo?

En fin, es muy tarde, estoy de resaca y bla bla bla, espero haberme explicado bien :(

Saludos y gracias, Nakio.

BUHOnero
24/12/2007, 07:10
Buenas, prueba con esto:


<?php

$da = fopen('algun_archivo.txt', 'r');

// moverse de vuelta al comienzo del archivo
// igual que rewind($da);
fseek($da, 0);

?>


Atento porque si el archivo es abierto en modo de adición ("a" o "a+"), cualquier información escrita en el archivo será siempre agregada al final, independientemente de la posición en el archivo.

cyberbask
24/12/2007, 09:43
lo mas rapido que se me ocurre, es que leas todo el fichero y lo guardes en una variable, y luego simplemente concatenes lo que necesites al principio, ejemplo:



<?php
//Lees el fichero entero
$nombre_de_tu_archivo = "loquesea.txt";
$gestor = fopen($nombre_de_tu_archivo, "rb");
$contenido = '';
while (!feof($gestor)) {
$contenido .= fread($gestor, 8192);
}
fclose($gestor);

//concatenas lo que quieras
$contenido = $lo_que_quieras_añadir . $contenido;

//Guardas
$gestor = fopen($nombre_de_tu_archivo, 'wb');
fwrite($gestor, $contenido);
fclose($gestor);
?>

nakio
24/12/2007, 12:28
Gracias a ambos, yo hac&#237;a lo que dice Cyberbask lo que me fallaba aqu&#237;: $contenido = $lo_que_quieras_a&#241;adir . $contenido; que no sab&#237;a como poner ambos juntos pero ya funciona perfectamente.

Muchas gracias!

Saludos, Nakio.

AOJ
24/12/2007, 13:51
Creo que el planteamiento del problema no es correcto, o yo no lo entiendo bien.


$pf = @fopen("bd.php","a+");
if ($_POST[enviar]) {

Con esto abres un archivo php para escribir en el. ¿Estás seguro de escribir cosas en un archivo con código? Puede ser un auténtico desastre, te recomendaría un .txt o cualquier archivo a parte que no tenga código.

La idea de cyberbask esta bien, pero ojo con la cantidad de datos que escribas en un archivo, ya que el proceso es lento y puede que acabes rápido con los 16 (?) Mb de Ram a los que seguramente te limitará tu hosting la ejecución de scripts en php (o los 8 propuestos). Aunque para que pase esto tendrás que escribir algunos miles de datos xD