Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] FTP fecha

Estas en el tema de FTP fecha en el foro de PHP en Foros del Web. Buenas, tengo este código para crear un select desde los contenidos de una carpeta FTP externa al servidor. ¿Sabeis si es posible ordenarla, no por ...
  #1 (permalink)  
Antiguo 12/03/2014, 07:00
 
Fecha de Ingreso: enero-2014
Ubicación: alicante
Mensajes: 28
Antigüedad: 10 años, 1 mes
Puntos: 1
FTP fecha

Buenas, tengo este código para crear un select desde los contenidos de una carpeta FTP externa al servidor.

¿Sabeis si es posible ordenarla, no por nombre, si no por fecha? Lo he intentado con ftp_mdtm, pro claro, solo me devuelve fechas?

No quiero solo código, si no ideas,formas de llegar....

<?php
// NOS TRAEMOS EL CONTENIDO DE LOS MP4 Y LOS METEMOS EN UN SELECT
$lista=ftp_nlist($x,"*.mp4");
echo '<select name="nom_archivo">';
foreach($lista as $c=>$v){
echo '<option value="'.$v.'">'.$v.'</option>';
}
echo '- </select>';

?>


Mil gracias.
  #2 (permalink)  
Antiguo 12/03/2014, 07:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: FTP fecha

En el manual hay un ejemplo que ademas de obtener el nombre del archivo obtiene otros atributos como la fecha de última modificación.

http://www.php.net/manual/es/functio...ist.php#108501

Luego deberías buscar una función para ordenar un array multidimensional (http://es1.php.net/array_multisort) para ordenar por la fecha.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 25/03/2014, 05:24
 
Fecha de Ingreso: enero-2014
Ubicación: alicante
Mensajes: 28
Antigüedad: 10 años, 1 mes
Puntos: 1
Respuesta: FTP fecha

Bueno

No había olvidado <quimfv> mil gracias, solo que que me ha sido imposible hacer el array.

Al hacer esto me devolvía un " No se pudo obtener mdtime", por lo que me olvido de este tipo de solución, aunue luego con un array_merge() imagino que funcionaria:
Código PHP:
    // NOS TRAEMOS EL CONTENIDO DE LOS MP4
        
                
include('conex_ftp.php');
                        
                
//Obtenemos el listado del directorio de TELEDIFUSIÓN
                //////// CONTENIDOS DEL FTP_FICHEROS
                
$list_ficheros = array();         
                
$list_ficheros ftp_nlist($x,"*.mp4");
                
//////// CONTENIDOS DEL FTP_FECHAS POR ÚLTIMA MODIFICACIÓN
                
$list_fechasmod = array(); 
                
$list_fechasmod=ftp_mdtm($x,"*.mp4");
                
//comprobamos si se puede obdener el mdtm devuelve -1
                
                
if ($list_fechasmod != -1) {
                
// somefile.txt fue modificado por última vez en: March 26 2003 14:16:41.
                
echo "$file fue modificado por última vez en : " date("F d Y H:i:s."$list_fechasmod);
            } else {
                echo 
"No se pudo obtener mdtime";
            } 


Finalmente lo solucione gracias al santo manual:
http://www.php.net/manual/en/function.ftp-rawlist.php

Y así se me ha quedado mi código:

Código PHP:

<?php    

        
// NOS TRAEMOS EL CONTENIDO DE LOS MP4
        
include('conex_ftp.php');

                
$rawfiles ftp_rawlist($x"*.mp4"true);                                    
$structure = array();
$arraypointer = &$structure;
 foreach (
$rawfiles as $rawfile) {
     if (
$rawfile[0] == '/') {
         
$paths array_slice(explode('/'str_replace(':'''$rawfile)), 1);
         
$arraypointer = &$structure;
         foreach (
$paths as $path) {
             foreach (
$arraypointer as $i => $file) {
                 if (
$file['text'] == $path) {
                     
$arraypointer = &$arraypointer$i ]['children'];
                     break;
                 }
             }
         }
     } elseif(!empty(
$rawfile)) {
         
$info preg_split("/[\s]+/"$rawfile9);        
         
$arraypointer[] = array(
             
'text'   => $info[8],
             
'isDir'  => $info[0]{0} == 'd',
             
'size'   => byteconvert($info[4]),
             
'chmod'  => chmodnum($info[0]),
             
'date'   => strtotime($info[6] . ' ' $info[5] . ' ' $info[7]),
             
'raw'    => $info
         
);
             
// the 'children' attribut is automatically added if the folder contains at least one file
     
}
 }

 
 
/// PARA AJUSTAR TAMAÑO 
function byteconvert($bytes) {
     
$symbol = array('B''KB''MB''GB''TB''PB''EB''ZB''YB');
     
$exp floorlog($bytes) / log(1024) );
     return 
sprintf'%.2f ' $symbol$exp ], ($bytes pow(1024floor($exp))) );
 }

 
 
/// PARA VER MEJOR LOS PERMISOS:
 
function chmodnum($chmod) {
     
$trans = array('-' => '0''r' => '4''w' => '2''x' => '1');
     
$chmod substr(strtr($chmod$trans), 1);
     
$array str_split($chmod3);
     return 
array_sum(str_split($array[0])) . array_sum(str_split($array[1])) . array_sum(str_split($array[2]));
 }

   
 
 echo 
"<B><CENTER>CONTENIDOS DEL RAIZ </CENTER></B><br>"
 
 for ( 
$i 1$i count($structure); $i++ ) {
?>
<table border=1>
    <td><?php echo $structure[$i][text]; //nombre ?></td>
    <td><?php echo $structure[$i][size]; //tamaño ?></td>
    <td><?php echo $structure[$i][raw][7]."  ".$structure[$i][raw][6]."/".$structure[$i][raw][5]; // HORA DIA Y MES ?></td>
 </table>

  <?php
  
}

        
                                            
// Cerramos la conexión FTP        
ftp_quit($x);
?>

Mucho más complejo y lento, eso sí tengo casi toda la información :D....

Gracias a todos

Etiquetas: fecha, ftp, select
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 08:40.