Foros del Web » Programando para Internet » PHP »

es correcto este manejo de archivos??

Estas en el tema de es correcto este manejo de archivos?? en el foro de PHP en Foros del Web. Código: <?php $i=0; $elAuto=$_POST['auto']; $archivo = fopen("txt/autos.txt",'r'); while (!feof($archivo)) { $registro = fgets($archivo); list($autos[$i][0],$autos[$i][1]) = explode(" ", $registro); $i++; }; fclose ($archivo); $archivo2 = fopen("txt/autos.txt",'w+'); ...
  #1 (permalink)  
Antiguo 04/06/2008, 19:50
 
Fecha de Ingreso: marzo-2007
Mensajes: 302
Antigüedad: 17 años, 1 mes
Puntos: 2
Pregunta es correcto este manejo de archivos??

Código:
<?php 
  $i=0;
  $elAuto=$_POST['auto'];
				
				$archivo = fopen("txt/autos.txt",'r');
  				 while (!feof($archivo)) {
					$registro = fgets($archivo);
					list($autos[$i][0],$autos[$i][1]) = explode(" ", $registro);
					$i++;
				};
		fclose ($archivo);	
		
		$archivo2 = fopen("txt/autos.txt",'w+');
		for($j=0;$j<count($autos);$j++){
			if (($autos[$j][0]!=$elAuto)){  
				$datos=$autos[$j][0]." ".$autos[$j][1];
				$datos.=chr(13);
				fwrite($archivo2,$datos);
				echo "entro";
			}
		}	
        fclose ($archivo2);	
?>
No hay una forma de que una vez abierto el archivo pueda leerlo, y luego sobreescribirlo sin tener que cerrarlo y volver a abrir como hice yo??
gracias!
  #2 (permalink)  
Antiguo 04/06/2008, 20:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: es correcto este manejo de archivos??

NO ... mas bien, igual y si se puede... pero depende mucho de como combines los modos de lectura/escritura del archivo....

seguramente la referencia del manual de PHP bastaría....

http://php.net/fopen

debería ser r+
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/06/2008, 09:54
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: es correcto este manejo de archivos??

Si abrís el archivo en modo lectura-escritura (que es lo que te menciona pateketrueke), podés usar fseek para mover el puntero interno del archivo al comienzo del mismo, y empezar a escribir a partir de ahí, que supongo que es lo que querés decir con "sobreescribirlo".


Saludos.
  #4 (permalink)  
Antiguo 05/06/2008, 17:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 302
Antigüedad: 17 años, 1 mes
Puntos: 2
Respuesta: es correcto este manejo de archivos??

Pero con el r+ me dejaria agregar contenido. Yo quiero que:

Leo el txt ;
Guardo todos los registros en un vector;
Despues de ese vector borro alguno;
Y quiero pisar el contenido que tenia mi archivo original, con el que tiene ahora mi vector. (es decir borrar todo el contnido que tenia y llenarlo con lo que tiene el vector)
  #5 (permalink)  
Antiguo 05/06/2008, 18:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: es correcto este manejo de archivos??

bueno... no se a que le llames vector en un archivo de texto...

supongo que te refieres a una linea?

bueno, si es así... puedes usar otros métodos....

si lo que quieres es sobre escribir todo el contenido... alvlin ya te ha dado la solucion
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 05/06/2008, 22:17
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: es correcto este manejo de archivos??

Para leer el contenido de un archivo y guardar línea por línea en un vector, tenés disponible la función file().

Eso sí: file() no mantiene un apuntador al archivo que abrió, lo cierra inmediatamente. Así que sí o sí tendrías que volver a abrirlo para guardar tus cambios.

Ah, y para 'convertir' el vector a una cadena, podés usar simplemente

implode('', $contenido_del_archivo);


Saludos.
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 03:04.