Foros del Web » Programando para Internet » PHP »

Ordenar archivo txt

Estas en el tema de Ordenar archivo txt en el foro de PHP en Foros del Web. Hola, estoy guardando datos en un archivo .txt, que es lo que me pide mi cliente. Pero los datos se guardan de manera tal que ...
  #1 (permalink)  
Antiguo 26/07/2017, 14:09
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Exclamación Ordenar archivo txt

Hola, estoy guardando datos en un archivo .txt, que es lo que me pide mi cliente. Pero los datos se guardan de manera tal que los últimos datos figuran abajo y no arriba. La pregunta es: se puede ordenar o guardar o mostrar lo ultimo que guardo?

Espero se haya entendido. Gracias
__________________
Zreep
  #2 (permalink)  
Antiguo 26/07/2017, 14:40
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: Ordenar archivo txt

podrias mostrar tu codigo?

como guardas tus datos?
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #3 (permalink)  
Antiguo 26/07/2017, 14:43
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Ordenar archivo txt

Esto uso para que vea los texto guardados en un .txt
Código PHP:
<?php
$file 
fopen("notas.txt""r") or exit("Unable to open file!");
while(!
feof($file)){
?>
<p><?=fgets($file);?></p>
<?php
}
fclose($file);
?>
__________________
Zreep
  #4 (permalink)  
Antiguo 26/07/2017, 14:44
sgr
 
Fecha de Ingreso: abril-2003
Ubicación: Buenos Aires
Mensajes: 77
Antigüedad: 21 años
Puntos: 11
Respuesta: Ordenar archivo txt

Fijate aqui: http://php.net/manual/en/function.fopen.php los modos en los que se puede abrir el archivo.
__________________
Informática Integral
  #5 (permalink)  
Antiguo 26/07/2017, 15:02
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: Ordenar archivo txt

podrias en tu while almacenar lo que vas imprimiendo en un arreglo y despues imprimirlo de cualquier forma

Código PHP:
Ver original
  1. $arr=array()
  2. while(!feof($file)){
  3. $arr[]=fgets($file);
  4. }
  5. for($i=count($arr)-1;$i>=0;$i--){
  6. echo $arr[$i].'<br>';
  7. }
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #6 (permalink)  
Antiguo 26/07/2017, 15:20
sgr
 
Fecha de Ingreso: abril-2003
Ubicación: Buenos Aires
Mensajes: 77
Antigüedad: 21 años
Puntos: 11
Respuesta: Ordenar archivo txt

Y cual es el codigo que usas para grabar el archivo?
__________________
Informática Integral
  #7 (permalink)  
Antiguo 26/07/2017, 15:49
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Ordenar archivo txt

Código PHP:
if (isset($_POST['add'])){
  if(!empty(
$_POST['user']) && !empty($_POST['texto'])){
  
  
$nombre_archivo "../notas.txt";
  
$mensaje $_POST['texto'];
  
$nombre $_POST['user'];
  
$archivo fopen($nombre_archivo"a");
  
  
fwrite($archivo'['.$nombre.']'."<br>".$mensaje."<br>".date("d/m/Y H:m:s"). "\n");
    
  exit(
header("Location: ../notas"));

  } else {
      echo 
"Los campos estan vacios";
    }

Esto uso para que el cliente guarde sus notas en un .txt y con el codigo anterior que los lea.
__________________
Zreep
  #8 (permalink)  
Antiguo 27/07/2017, 08:17
sgr
 
Fecha de Ingreso: abril-2003
Ubicación: Buenos Aires
Mensajes: 77
Antigüedad: 21 años
Puntos: 11
Respuesta: Ordenar archivo txt

El modo "a" que usas en la funcion fopen() abre el archivo situando el puntero al final, fijate en el link que te puse mas arriba cuales son los modos de apertura del archivo antes de grabar, que es donde se va a situar el puntero cuando grabes los datos.
__________________
Informática Integral
  #9 (permalink)  
Antiguo 27/07/2017, 13:05
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Ordenar archivo txt

Gracias, había probado con w y w+ pero me borran los datos almacenados anteriormente... no como combinarlos, bah, si es que se puede... el manual explica mucho, pero en la practica algo estoy haciendo mal...
__________________
Zreep
  #10 (permalink)  
Antiguo 27/07/2017, 13:42
sgr
 
Fecha de Ingreso: abril-2003
Ubicación: Buenos Aires
Mensajes: 77
Antigüedad: 21 años
Puntos: 11
Respuesta: Ordenar archivo txt

Fjate que justamete el manual te dice que "w" y "w+" colocan el puntero al principio (que es lo que necesitas), PERO truncan el archivo a longitud 0 (lo vacia). Ya estas cerca...
__________________
Informática Integral
  #11 (permalink)  
Antiguo 27/07/2017, 14:16
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ordenar archivo txt

La función file() te devluelve el contenido de un archivo en un array, separando por salto de línea y lo único que restaría es invertir con array_reverse() o recorrerlo en orden inverso.
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 28/07/2017, 19:55
Avatar de zreep  
Fecha de Ingreso: octubre-2009
Ubicación: Argentina
Mensajes: 534
Antigüedad: 14 años, 6 meses
Puntos: 12
Respuesta: Ordenar archivo txt

Les agradezco mucho, pero la verdad no logre nada, desde ayer que le di todas las vueltas y la verdad me agoto el cerebro, je... gracias y lo voy a dejar pendiente... voy buscar otra forma... gracias a todos por el tiempo
__________________
Zreep
  #13 (permalink)  
Antiguo 29/07/2017, 17:19
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 12 años, 7 meses
Puntos: 13
Respuesta: Ordenar archivo txt

Tal como comenta Triby puedes hacerlo con array_reverse() y file(), podria ser algo asi:

Código PHP:
Ver original
  1. <?php
  2. $file = file("notas.txt") or exit("Unable to open file!");
  3. $reverseFile = array_reverse($file);
  4. foreach ($reverseFile  as $linea) {
  5. ?>
  6. <p><?=$linea?></p>
  7. <?php
  8. }
  9. ?>

Pruebalo.

El problema que trae este método es que si se trata de un archivo con gran contenido puede reducir el rendimiento o colapsar la memoria al intentar crear un arreglo de tal tamaño.

Etiquetas: txt
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 22:31.