Foros del Web » Programando para Internet » PHP »

Edicion en Archivos .txt (fopen/fwrite)..

Estas en el tema de Edicion en Archivos .txt (fopen/fwrite).. en el foro de PHP en Foros del Web. Muy buenas. Tengo un problemita a la hora de querer Editar una determinada linea de texto dentro del .txt (en el cual se almacena alguna ...
  #1 (permalink)  
Antiguo 28/08/2006, 03:23
 
Fecha de Ingreso: abril-2006
Mensajes: 56
Antigüedad: 11 años, 7 meses
Puntos: 0
Edicion en Archivos .txt (fopen/fwrite)..

Muy buenas.

Tengo un problemita a la hora de querer Editar una determinada linea de texto dentro del .txt (en el cual se almacena alguna que otra informacion).

Me he manejado bastante bien a la hora de.. leer,escribir,reemplazar gracias a las funciones fopen(), file(), fwrite().

Pero mi problema es la EDICION (especifica).. ya que dentro de un .txt tengo muchas lineas.. y cuando quiero reemplazar una en concreto, es ahi, donde no se como hacer.
Se que en la propia funcion fwrite() como tercer parametro se le puede indicar la longitud.. pero no me sirve.. ya que no se com poner desde "donde empezar" hasta "donde terminar".. quiza si hubiese una funcion de reemplazar el valor de x key del array.. podria ser mas facil no?

Me podrian ayudar??

Gracias.
  #2 (permalink)  
Antiguo 28/08/2006, 06:39
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 5 meses
Puntos: 2
No existe la funcion "reemplaza_desde_aqui_a_alla()", lo que puedes (debes) hacer es traer todo el contenido del archivo a una variable local y trabajar sobre ella como con cualquier variable, cuando termines reemplazas el contenido del archivo completo por el que te quedo en la variable.

Saludos.
  #3 (permalink)  
Antiguo 28/08/2006, 07:50
 
Fecha de Ingreso: abril-2006
Mensajes: 56
Antigüedad: 11 años, 7 meses
Puntos: 0
Es decir lo que vos recomendas.. es que recupere absolutamente todos los datos del .txt (aunque solo tenga que modificar una linea). y lo almacene sea en una variable como otra cosa (temporal), desde ahi hacer los cambios necesario y luego volver a rellenar el .txt enviando la variable??

Habia pensando en algo asi (sobre tu comentario).. pero no tiene mucho sentido no? es decir.. de verdad no hay otra manera de reemplazar una linea en concreto en el propio .txt? ya que si al final hago como vos decis.. es como decir: Todo o Nada.

Gracias por tu respuesta :)
  #4 (permalink)  
Antiguo 28/08/2006, 09:00
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 5 meses
Puntos: 2
Tienes razon, pero no conozco otra forma... tal vez hay pero no la conozco. A mi forma de ver lo que yo digo no es "grosero", es mas yo diria que "asi se tiene que hacer", tene encuenta que no "controlas absolutamente" el fichero, no existen funciones para sobre-escribir una parte, si existen para escribir, agregar (bueno, esta no existe pero depende de como abras el archivo), o puedes borrar, pero no modificar... a nuestros ojos imitamos una modificacion, pero debes y tienes que traer todo el contenido. Otra cosa, si tuvieramos esa funcion "modifica_desde_aqui_a_alla()" no te parece peligroso? Osea, si vos durante el tiempo que dura el script mantienes abierto el archivo, vas modificando "sobre la marcha", que pasa si otro accede al mismo tiempo? Se corrompe el archivo, teniendo una situacion peor. Es mejor abrir y traer todo el contenido, cerrar el archivo, modificar sobre la variable lo que hay que modificar y por ultimo abrir y guardar los cambios.... esto si tiene "logica".

Saludos.
  #5 (permalink)  
Antiguo 28/08/2006, 09:04
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
yo tambien lo haría como dice DarioDario
__________________
ALOZORRO v5.0 (ahora en .es)
  #6 (permalink)  
Antiguo 28/08/2006, 09:23
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 5 meses
Puntos: 2
Cita:
Iniciado por Azrael666 Ver Mensaje
yo tambien lo haría como dice DarioDario
No tienes otra opcion, por lo menos no la conozco... si existe esperemos que venga alguien a des-mentir lo que digo. Aparte, "mi metodo" (en realidad seria "como debe hacerce") lleva una logica que no se deberia ignorar (el tema de dos accesos simultaneos pueden corromper el archivo).

Saludos.
  #7 (permalink)  
Antiguo 28/08/2006, 10:15
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 11 años, 11 meses
Puntos: 5
Buenas, con fseek() podés mover el puntero hasta una posición determinada. Pero para conocer esa posición, primero deberías haber leído el archivo. Y, además, estarías escribiendo a partir de un punto, pero si la cantidad de bytes que vas a reemplazar no coincide con la cantidad original (lo más probable), vas a sobreescribir alguna de las líneas siguientes o te va a quedar basura.

Así que, no se me ocurre otra forma de hacerlo más que trabajar como te indican con todo el contenido del archivo.

Suerte
Califa
  #8 (permalink)  
Antiguo 28/08/2006, 11:03
 
Fecha de Ingreso: abril-2006
Mensajes: 56
Antigüedad: 11 años, 7 meses
Puntos: 0
Hola otra vez.. gracias por el interes/respuestas :)

Al final.. hare como dicen.. en concreto "dariodario".. recuperare todo el contenido del txt y hare toda modificacion en una variable temporal y ala.

El caso es que.. claro, yo sabia que hay funciones para mover la posision y tal.. pero es re dificil combinarlo a lo que intento hacer.. asique.. hare lo dicho.

Muchas gracias y Saludoss.

Pd: Se trabajar tambien con sql.. pero intento hacer un mini sistema que use unicamente txt como base de datos. ;)
  #9 (permalink)  
Antiguo 28/08/2006, 11:21
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 12 años, 5 meses
Puntos: 2
Cita:
Iniciado por rimon Ver Mensaje
Pd: Se trabajar tambien con sql.. pero intento hacer un mini sistema que use unicamente txt como base de datos. ;)
Tal vez SQLite te interese... es un motor de base de datos que no se instala, es portable y trata de respetar el standar SQL. Yo se que PHP5 le da soporta nativo, pero nose si PHP4 le da soporte por medio de una libreria, supongo que si, pero desconozco sobre esto. Google seguro que te da la respuesta, si averiguas algo avisame estoy sin tiempo como para investigar

Saludos y gracias.
  #10 (permalink)  
Antiguo 28/08/2006, 11:49
Avatar de merolhack  
Fecha de Ingreso: junio-2006
Ubicación: México
Mensajes: 1.242
Antigüedad: 11 años, 5 meses
Puntos: 16
Sonrisa

Puedes usar este mini CMS como refencia para hacer lo que pides, utiliza puros archivos de texto, y puedes tomar codigo de ese para darte ideas :)

http://opensolution.org/?p=Quick.Cms

Ejemplo:
http://witaj.net/
http://claudeville.phpnet.us/
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:20.