Foros del Web » Programando para Internet » PHP »

Ordenar archivo txt por fecha desde php

Estas en el tema de Ordenar archivo txt por fecha desde php en el foro de PHP en Foros del Web. Hola [email protected] tengo un problema y es que no puedo ordenar un txt por fecha descendente o sea la más reciente de primeras. Abro el ...
  #1 (permalink)  
Antiguo 28/09/2015, 12:29
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 4 años, 9 meses
Puntos: 1
Ordenar archivo txt por fecha desde php

Hola [email protected] tengo un problema y es que no puedo ordenar un txt por fecha descendente o sea la más reciente de primeras. Abro el archivo y el campo de fecha es el numero 1 del arreglo $campo[1]. Necesito ordenar este, no se como hacerlo con sort rsort ksort... como sería

Código:
<?php
echo "<br><br><table border=1 cellspacing=5 width=1510 class='order-table table'>
      <thead
      <tr>
         <th>Estado</th>
         <th>Telefono</th> 
         <th>Punto de Venta</th>
         <th>Cliente</th>
         <th>Direccion</th>
         <th>Hora Pedido</th>  
         <th>Valor</th>
         <th>Agente</th>
         <th>Cierre Pedido</th>
      </tr>
      </thead>";

    @$fp = fopen("C:\usr\Final.txt", "r") or die("Error al abrir archivo");
//    echo "Termino Lectura";
     while(!feof($fp)) {
       $linea=fgets($fp);
       $linea=trim(str_replace("'", "",$linea));
       $campos=explode(",",$linea);
       $fecha = $campos[1];
       $Nombre = $campos[4].' '.$campos[5];

       echo "<tbody>
              <tr>
                 <td>$campos[3]</td>
                 <td>$campos[0]</td>
                 <td>$campos[2]</td>
                 <td>$campos[4] $campos[5]</td>
                 <td>$campos[6] $campos[7]</td>
                 <td>$campos[1]</td>
                 <td>$$campos[8]</td>
                 <td>$campos[13]</td>
                 <td>$campos[14]</td>                 
                 <td>$campos[9]</td>                 
                 <td>$campos[10]</td>                 
                 <td>$campos[11]</td>                              
              </tr>
            </tbody>";
     }     
     fclose($fp);

echo "</table>";

?>

<div id="Foot"><center><p>No hay m&aacute;s resultados</p></center></div>
</body>
</html>
Si me pueden ayudar agradecería su colaboración
__________________
La vida es un juego de Ajedrez.
  #2 (permalink)  
Antiguo 28/09/2015, 13:32
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 12 años, 11 meses
Puntos: 21
Respuesta: Ordenar archivo txt por fecha desde php

mira.. yo creo que php no lo va a ordenar. por que en las lineas no tenes las fecha.. como tal sino dentro de un string.. yo haria otro arreglo.. mutidimensional con lo del txt.. y ahi haria un

http://php.net/manual/es/function.array-multisort.php

ojo.. que la fecha al ser un string php lo va a ordenar como tal.. tenes que convertilo con strtotime.. una vez que tengas eso.. lo vas a poder ordenar.
  #3 (permalink)  
Antiguo 28/09/2015, 15:17
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 4 años, 9 meses
Puntos: 1
Respuesta: Ordenar archivo txt por fecha desde php

Vale pues el arreglo que obtengo al mostrar los datos es el siguiente:

Código PHP:
Ver original
  1. array(15) {
  2. [0]=> string(16) "3017690246 :RUDB"
  3. [1]=> string(23) "2015-09-25 17:33:21.000"
  4. [2]=> string(10) "CALLCENTER"
  5. [3]=> string(145) "ENVIADO"
  6. [4]=> string(5) "JESUS"
  7. [5]=> string(7) "CASTAÑO"
  8. [6]=> string(13) "CRA 46 93-27"
  9. [7]=> string(7) "APT 504"
  10. [8]=> string(5) "52105"
  11. [9]=> string(5) "12839"
  12. [10]=> string(3) "902"
  13. [11]=> string(11) "EDIF. IBIZA"
  14. [12]=> string(21) "BARRIO: LA CASTELLANA"
  15. [13]=> string(7) "ROSALBA"
  16. [14]=> string(23) "2015-09-25 17:34:44.000" }

La fecha es de tipo string pero al pasarlo con strtotime:

fecha $capos[1];
strtotime($fecha);

le hago un var_dump y no aparece la hora ni cambia el tipo. Lo que planteas como sería.

Y si hago el array_multisort como sería para que lo ordene tomando el espacio 1 del arreglo, algo así?:

array_multisort($campos,SORT_DESC, SORT_NUMERIC);
array_multisort($fecha,SORT_DESC, SORT_NUMERIC);


array_multisort($campo[1],SORT_DESC); <- asi me bota error :( no se como sería D;
__________________
La vida es un juego de Ajedrez.
  #4 (permalink)  
Antiguo 28/09/2015, 15:28
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 4 años, 9 meses
Puntos: 1
Respuesta: Ordenar archivo txt por fecha desde php

Cita:
Iniciado por marcusaurelio Ver Mensaje
mira.. yo creo que php no lo va a ordenar. por que en las lineas no tenes las fecha.. como tal sino dentro de un string.. yo haria otro arreglo.. mutidimensional con lo del txt.. y ahi haria un

[url]http://php.net/manual/es/function.array-multisort.php[/url]

ojo.. que la fecha al ser un string php lo va a ordenar como tal.. tenes que convertilo con strtotime.. una vez que tengas eso.. lo vas a poder ordenar.
Como convierto la fecha con esa función strotime? y después le paso el arreglo multidimensional?
__________________
La vida es un juego de Ajedrez.
  #5 (permalink)  
Antiguo 28/09/2015, 16:22
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 12 años, 11 meses
Puntos: 21
Respuesta: Ordenar archivo txt por fecha desde php

perdona pero estoy corriendo...

Código:
echo strtotime("2015-09-25 17:34:44.000");//=1443213284

y lo del multisort, revisa esto que esta en el manual..

<?php
// Obtener una lista de columnas
foreach ($datos as $clave => $fila) {
    $volumen[$clave] = $fila['volumen'];
    $edición[$clave] = $fila['edición'];
}

// Ordenar los datos con volumen descendiente, edición ascendiente
// Agregar $datos como el último parámetro, para ordenar por la clave común
array_multisort($volumen, SORT_DESC, $edición, SORT_ASC, $datos);
?>
espero havberte ayudado.. si no mañana lo revisamos con mas tempo
  #6 (permalink)  
Antiguo 28/09/2015, 18:38
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 4 años, 9 meses
Puntos: 1
Respuesta: Ordenar archivo txt por fecha desde php

Cita:
Iniciado por marcusaurelio Ver Mensaje
perdona pero estoy corriendo...

Código:
echo strtotime("2015-09-25 17:34:44.000");//=1443213284

y lo del multisort, revisa esto que esta en el manual..

<?php
// Obtener una lista de columnas
foreach ($datos as $clave => $fila) {
    $volumen[$clave] = $fila['volumen'];
    $edición[$clave] = $fila['edición'];
}

// Ordenar los datos con volumen descendiente, edición ascendiente
// Agregar $datos como el último parámetro, para ordenar por la clave común
array_multisort($volumen, SORT_DESC, $edición, SORT_ASC, $datos);
?>
espero havberte ayudado.. si no mañana lo revisamos con mas tempo
}

Si pero no entiendo como hacerlo con mi areglo D;
__________________
La vida es un juego de Ajedrez.
  #7 (permalink)  
Antiguo 29/09/2015, 13:07
Avatar de Copia  
Fecha de Ingreso: noviembre-2009
Mensajes: 309
Antigüedad: 10 años
Puntos: 4
Respuesta: Ordenar archivo txt por fecha desde php

ImHarold, multisort no creo que sea la solucion, si usas usort puedes solucionarlo, no se caul es la estructura exacta del array donde tienes los datos de los txt, pero te hice este ejemplo:
Código PHP:
Ver original
  1. <?php
  2.  
  3. function cmp($a, $b)
  4. {
  5.     $fecha1 = strtotime($a[1]);
  6.     $fecha2 = strtotime($b[1]);
  7.     if ($fecha1 == $fecha2) {
  8.         return 0;
  9.     }
  10.     return ($fecha1 < $fecha2) ? -1 : 1;
  11. }
  12.  
  13.  
  14. $txts = array(
  15.     array("Juan", "2015-01-12"),
  16.     array("Juan2", "2014-11-10"),
  17.     array("Juan3", "2015-09-2"),
  18.     array("Juan4", "2012-01-12")
  19. );
  20.  
  21.  
  22. usort($txts, "cmp");

Espero pueda ayudarte, saludos
__________________
Dejando una huella de mi existencia por la red en http://tiricaya.com
  #8 (permalink)  
Antiguo 30/09/2015, 11:03
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 12 años, 11 meses
Puntos: 21
Respuesta: Ordenar archivo txt por fecha desde php

ok.. el problema es que vos tenes lineas de string y no un array...entonces nno vas a poder hacer la comparacion.. ni ordenarlos..

osea.. tenes un array y ese array tiene muchas lineas de string.. que luego convertis en array con el explode..

para poder ordenarlo primero deberias convertirlas todo en un array u objeto.. y ahi si vas poder urdenarla usort o multi sort (en el caso de que requieras ordenar por varios items)..

Etiquetas: fecha, html, 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 23:22.