Foros del Web » Programando para Internet » PHP »

Ficheros con PHP

Estas en el tema de Ficheros con PHP en el foro de PHP en Foros del Web. Hola a todos antes que nada, mi pregunta es hacerca de algo que al parecer pudiera ser sencillo para muchos, a mi me srugio la ...
  #1 (permalink)  
Antiguo 09/10/2006, 13:40
Avatar de elmasca  
Fecha de Ingreso: enero-2004
Ubicación: Mexico
Mensajes: 108
Antigüedad: 20 años, 3 meses
Puntos: 0
Pregunta Ficheros con PHP

Hola a todos antes que nada, mi pregunta es hacerca de algo que al parecer pudiera ser sencillo para muchos, a mi me srugio la duda tras un problemilla que me pidieron que resolviera, esta se basa en ficheros con PHP (Casi no los ocupo), bueno el problema es el siguiente:

Hay una archivo de texto que contiene informacion de ciertas personas de X lugar, ejemplo del archivo:

ana femenino mexico administracion
mary femenino mexico contaduria
pepe masculino mexico informatica
toño masculino mexico almacen


Bueno como veran son datos simulados, pero da una idea de como esta el archivo, bueno aqui me piden que haya una operacion en donde se puedan cambiar datos del personal en el archivo, ejemplo: que "pepe" ya no este en "informatica" que ahora este en "contaduria" tambien y entonces que el archivo quede asi:

ana femenino mexico administracion
mary femenino mexico contaduria
pepe masculino mexico contaduria
toño masculino mexico almacen

Por ahora he abierto el archivo y cuando llego a la linea pepe y quiero cambiarla es ahi donde no se que hacer?

Alguien podria decirme como resolver eso .

De ante mano gracias.

P.D. Si no me explique, podrian decirmelo y con gusto lo aclarare

__________________
"El conocimiento se debe de compartir"
  #2 (permalink)  
Antiguo 09/10/2006, 14:23
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Pues lo que puedes hacer es utilizar la funciòn explode().

es decir:

Código PHP:
//Suponiendo que estas sobre la linea de pepe
$info explode(" ",'puntero_al_archivo');
$info[3] = 'contaduria';
//Ya nada mas seria cuestion de que "escribas" en el doc. 
Saludillos.
  #3 (permalink)  
Antiguo 09/10/2006, 14:30
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Checa este ejemplo, trate de ser lo más explicito que pude para que lo entendieras:

Código PHP:
<?php
$ruta 
"personal.txt"// ruta hacia tu documento .txt
$fp fopen $ruta'r' ); // abrimos el archivo para su lectura

$nuevosdatos ''// a esta variable le iremos agregando los nuevos datos

echo "Datos antes de los cambios:<br/>";

while ( !
feof$fp ) )
{
   
$persona fgets$fpfilesize $ruta ) );
   
$datos explode " "$persona ); // aquí partes los datos de cada personal 0=nombre, 1=sexo,2=pais y 3=departamento

   
if ( $datos[0] == 'pepe' // si el nombre es igual a pepe entonces modificamos su departamento
   
{
      
$datos[3] = 'contaduría'// dato que modificaremos
      
$nuevosdatos .= $datos[0]." ".$datos[1]." ".$datos[2]." ".$datos[3]."\n";
      echo 
$persona."<br/>";
      continue;
   }
   else 
// si no entonces sólo agregamos los datos que ya estaban
   
{
      
$nuevosdatos .= $persona;
      echo 
$persona."<br/>";
      continue;
   }
}
fclose($fp);

echo 
"<p>";
echo 
"Datos despues de los cambios:<br/>";

$fp2 fopen $ruta'w' ); // abrimos el archivo para su escritura borrando los datos anteriores
fwrite $fp2$nuevosdatos ); // escribimos los nuevos datos
fclose($fp2);

$fp3 fopen $ruta'r' ); // abrimos el archivo para la lectura despues de que escribimos lo nuevos datos y los mostramos

while ( !feof$fp3 ) )
{
   
$persona fgets$fp3filesize $ruta ) );
   echo 
$persona."<br/>";
}
fclose($fp3);
?>
Espero que te sirva de algo. Suerte

Última edición por Erikfrancisco; 09/10/2006 a las 14:39
  #4 (permalink)  
Antiguo 09/10/2006, 15:02
Avatar de elmasca  
Fecha de Ingreso: enero-2004
Ubicación: Mexico
Mensajes: 108
Antigüedad: 20 años, 3 meses
Puntos: 0
Muchas gracias a mauled y a Erikfrancisco por la atención puesta en la duda que tengo, ahora quiero enfocarme a la respuesta de Erikfrancisco, por lo que veo tu me planteas que primero abra el archivo en modo lectura y vaya almacenando la informacion del archivo en una variable y que cuando encuentre al registro indicado haga los cambios correspondientes y lo concatene a la variable que contiene los registros anteriores en la variable, me imagino que seguira almacenando los datos en la variable hasta que llegue al final del archivo, despues abro de nuevo el archivo para introducir la informacion que esta en la variable.

Bueno ahora mi pregunta seria, no habra ningun problema si te estoy hablando que en el archivo hay cerca de 4000 lineas o registros?, digo pensando en que si puedo tener una variable de un tamaño grande.

Muchas gracias y creo que entre varios podemos llegar a una solucion optima.
__________________
"El conocimiento se debe de compartir"
  #5 (permalink)  
Antiguo 09/10/2006, 15:11
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Pues me parece que el hecho de que haya o no problemas depende de los componentes de tu computadora. Te lo pongo así porque a mi me ha pasado que utilizo una maquína con componentes + o - pasables (256Mb de memoria, Disco duro de 40 GB procesador de 1.6) y me funciona bastante bien. Pero me toco que en una maquina más viejita el archivo no se acabo de ejecutar dentro de los 30 segundos permitidos así que me las ingenie para guardar el puntero desde donde se quedo mi script y lo volvi a ejecutar desde allí así que como vez probablementa de esto depende. Suerte
  #6 (permalink)  
Antiguo 09/10/2006, 15:14
Avatar de elmasca  
Fecha de Ingreso: enero-2004
Ubicación: Mexico
Mensajes: 108
Antigüedad: 20 años, 3 meses
Puntos: 0
Ahhhhhhhhh ok, bueno esa era mi duda, y en cuanto a la maquina creo que no habra problema, hare el script y vere que tal funciona, si veo que todo sale bien pues publicare el codigo.

Gracias !!!
__________________
"El conocimiento se debe de compartir"
  #7 (permalink)  
Antiguo 10/10/2006, 02:37
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Cita:
Iniciado por Erikfrancisco Ver Mensaje
Pues me parece que el hecho de que haya o no problemas depende de los componentes de tu computadora. Te lo pongo así porque a mi me ha pasado que utilizo una maquína con componentes + o - pasables (256Mb de memoria, Disco duro de 40 GB procesador de 1.6) y me funciona bastante bien. Pero me toco que en una maquina más viejita el archivo no se acabo de ejecutar dentro de los 30 segundos permitidos así que me las ingenie para guardar el puntero desde donde se quedo mi script y lo volvi a ejecutar desde allí así que como vez probablementa de esto depende. Suerte
Y xq no usaste set_time_limit(0) para q siga ejecutándose y no pare a los 30 segundos?

Sobre la cuestión general, no es más cómodo q use una base de datos con registros en lugar de un archivo de texto?

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
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 10:08.