Comunidad de diseño web y desarrollo en internet online

Borrar archivo TXT con PHP (o cualquier otro Script)

Citar            
MensajeEscrito el 09 Jul 2008 12:48 am
Hola gente,

Estoy creando una especie de "Gestor de Contenidos" en Flash+PHP. Algo personal, de andar por casa, vaya. La cosa empieza así:


Tengo un HTML y con un TEXTAREA y un botón que envía los datos por medio de PHP a un archivo TXT y éstos son mostrados en el navegador por un SWFcon un TextArea.

La idea es que, al igual que se escriben los datos en el TXT, puedan borrarse cuando sea neecsario. Me explico.

Tengo un HTML y con un TEXTAREA y botón (form.html)

Código :

<html>
<body>
 <form name="form1" method="post" action="escribe.php">
  TEXTO:
  <textarea name="nombre" cols="20" rows="10">
  </textarea>
  <input type="submit" value="actualizar"/>
</form>
</body>
</html>


Tengo un PHP (escribe.php)

Código :

<?php  
    $nombre = $_POST["nombre"]; 
    echo "Nombre: ".$nombre; 
     
$nombre_archivo = 'prueba.txt'; 
$contenido = $nombre; 
fopen($nombre_archivo, 'a+'); 

 
if (is_writable($nombre_archivo)) { 

   / 
   if (!$gestor = fopen($nombre_archivo, 'a')) { 
         echo "No se puede abrir el archivo ($nombre_archivo)"; 
         exit; 
   } 

   
   if (fwrite($gestor, $contenido) === FALSE) { 
       echo "No se puede escribir al archivo ($nombre_archivo)"; 
       exit; 
   } 
    
   echo "La sección se actualizó correctamente..."; 
    
   fclose($gestor); 

} else { 
   echo "No se puede escribir sobre el archivo $nombre_archivo"; 
} 
?>


Tengo un SWF con un TextArea que lee la info que contiene el archivo TXT y los muestra en el navegador

Hasta aquí todo funciona perfectamente, pero...

¿Qué pasa cuando quiero actualizar la info del TXT? Si escribo la nueva info en el form.html, los datos NO se reescriben, se posicionan debajo de los ya escritos anteriormente y la idea es que se borre la info que había y REEMPLAZARLA POR LA NUEVA introducida.

Así pues, necesitaría colocar en el form.html un botón que, al pulsarlo, borrara la info existente en el archivo TXT, o bien, que al escribir la info en form.html, reemplazase a la ya existente.

Preferiría la primera opción, la del botoncito... no sé, queda más profesional y además, a todos nos vuelve locos pulsar botoncitos (fijo que cuando Moisés abrió las aguas del Mar Rojo, era porque encontró un botoncito. Y es que Moisés era un curioso, botón que veía, botón que tocaba)

IMPORTANTE: si a alguien, en su buena voluntad, se le ocurre decirme algo parecido a: "Haz un include que llame a la función MAY que envie a un WEY a la variable contatenada y...", preferiría que se ahorre el comentario, ya que mi idea de PHP es nula. Si alguien tiene el código o sabe dónde encontrarlo, su aporte habrá sido más furctífero.

Señores, como siempre, un placer leerlos.

Por Andres_sni

5 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 09 Jul 2008 02:26 am
El problema esta en la función fopen que usas, estas utilizando

Código :

if (!$gestor = fopen($nombre_archivo, 'a')) {


que sirve para anexar contenido al final de un archivo, así que deberías de usar

Código :

if (!$gestor = fopen($nombre_archivo, 'w')) {


que sirve para reemplazar el contenido del archivo.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 09 Jul 2008 03:10 am
Grande lo tuyo, Odín...!! Gracias.

Efectivamente, con el tip que posteas, los datos se reescriben en el fichero TXT eliminando el texto anterior. Es lo que buscaba.
Revisando el código observo que en la línea 7, aparece el siguiente código:

Código :

fopen($nombre_archivo, 'a+');

hay que cambiar esa "a+" por una "w+" también o la dejo tal cual está...?

Gracias nuevamente por lo rápido y acertado de tu respuesta.

Por Andres_sni

5 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 13 Jul 2008 04:39 pm
Hola de nuevo, amigos

Bueno, todo iba perfecto hasta que se me ocurrió incluir código HTML en el texto.
Resulta que al código que PHP añade en el archivo TXT le agrega una barra lateral antes de cada comilla, generando código de este tipo:

Código :

<A HREFf=\"enlace\">clik aquí</a> 
<P ALIGN=\'CENTER\'>

El resultado de este agregado es que todo el texto que hay detrás de la primera etiqueta HTML no aparece, aunque sea un simple texto sin formato

He probado también con comillas simples y pasa lo mismo: le agrega la misma barra inclinada.
Necesito ayuda para que no aparezca esa barra inclinada. Hay solución?

Gracias

Por Andres_sni

5 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 13 Jul 2008 06:35 pm
Bueno, sigo buscando info y he encontrado algo al respecto, aunque a mí sigue sin funcionarme, ya que no se dónde incluir el código.
Por si a alguien le sirve, la madre del cordero está aquí:http://ar.php.net/stripslashes

Se trata de la ¿función? stripslashes, que se encarga de quitar esas barras "\" que aparecen delante de cada comilla.

Tengo instalada la ver. 5.2.6 de PHP y la directiva magic_quotes_gpc está en "on", directiva que provoca que se agraguen esas barras.

La cuestión es que si tengo el siguiente código en PHP, ¿Dónde incluyo la funciómn stripslashes ?

Código :

<?php  
    $nombre = $_POST["nombre"]; 
    echo "Nombre: ".$nombre; 
     
$nombre_archivo = 'prueba.txt'; 
$contenido = $nombre; 
fopen($nombre_archivo, 'a+'); 

 
if (is_writable($nombre_archivo)) { 

   / 
   if (!$gestor = fopen($nombre_archivo, 'w')) { 
         echo "No se puede abrir el archivo ($nombre_archivo)"; 
         exit; 
   } 

   
   if (fwrite($gestor, $contenido) === FALSE) { 
       echo "No se puede escribir al archivo ($nombre_archivo)"; 
       exit; 
   } 
    
   echo "La sección se actualizó correctamente..."; 
    
   fclose($gestor); 

} else { 
   echo "No se puede escribir sobre el archivo $nombre_archivo"; 
} 
?>


Gracias pos la ayuda que me puedan brindar

Por Andres_sni

5 de clabLevel



Genero:Masculino  

msie7
Citar            
MensajeEscrito el 14 Jul 2008 03:40 am
La línea 7 es completamente innecesaria, no hace nada.

Por lo que te he entendido, la función stripslashes la puedes usar en cualquier momento antes de escribir el documento, por ejemplo:

Código :

$contenido = stripslashes($nombre); 

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 14 Jul 2008 08:11 pm
Gracias de nuevo, Odín.
El problema estaba en el TEXTAREA del HTML, así que encontré por ahí ortro código para sustituirlo por el que tenía.
Ahora funciona de lujo con la función stripslashes.

Saludos.

Por Andres_sni

5 de clabLevel



Genero:Masculino  

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.