Foros del Web » Programando para Internet » PHP »

Ordenar archivos con opendir

Estas en el tema de Ordenar archivos con opendir en el foro de PHP en Foros del Web. estoy usando un script que contiene opendir... todo va bien.. pero me muestra los archivos que hay en el directorio sin ningun orden, hay forma ...
  #1 (permalink)  
Antiguo 05/09/2008, 20:24
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Ordenar archivos con opendir

estoy usando un script

que contiene opendir...
todo va bien.. pero me muestra los archivos que hay en el directorio sin ningun orden, hay forma de darles un orden?? ya se alfabetico o de preferencia que ponga hasta arriba los ultimos archivos subidos

Código PHP:
<?php 
$directorio 
"./images/"
$descriptor opendir($directorio); 
while (
$entrada readdir($descriptor) ) { 
$ext=strtolower(end(explode('.',$entrada))); 
if (
is_dir($directorio.$entrada) ) { 
} elseif ( 
is_file ($directorio $entrada) && ($ext=='jpg' || $ext=='png' || $ext=='gif')) { 
echo 
'


<table width=95% border=1 cellpadding=4 align=center cellspacing=0 bordercolor=#ACB7D7 bgcolor=#F7F8FA>
  
  <tr>
    <td width=285><a href="images/'
.$entrada.'" target="_blank"><img src="images/'.$entrada.'" border="0"></a><br /></td>
    <td>http://www..../'
.$entrada.'</td>
  </tr>
</table>
<br>

'



closedir($descriptor); 
?>
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #2 (permalink)  
Antiguo 05/09/2008, 20:27
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ordenar archivos con opendir

Mete los nombres de archivo en un array y usa asort.
  #3 (permalink)  
Antiguo 06/09/2008, 11:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ordenar archivos con opendir

Si quieres ordenarlos por fecha, vas a tener que obtener la fecha de creación usando filectime.

Saludos.
  #4 (permalink)  
Antiguo 07/09/2008, 23:59
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

haber ya pude usar el filectime ya lo supe usar...

pero ahora como uso el asort para ordenar... dejen les paso mi codigo... y echenme una mano

Código PHP:
 <?php 
$directorio 
"./images/"
$descriptor opendir($directorio);
$fecha date("d-m-Y-H:i:s"filectime($directorio.$entrada));
asort($fecha);
reset($fecha);
while (
$entrada readdir($descriptor) ) { 
$ext=strtolower(end(explode('.',$entrada))); 
if (
is_dir($directorio.$entrada) ) { 
} elseif ( 
is_file ($directorio $entrada) && ($ext=='jpg' || $ext=='png' || $ext=='gif')) { 
echo 
'


<table width=95% border=1 cellpadding=4 align=center cellspacing=0 bordercolor=#ACB7D7 bgcolor=#F7F8FA>
  
  <tr>
    <td width=285><a href="http://www....../images/'
.$entrada.'" target="_blank"><img src="http://www.forosdelweb.com/images/'.$entrada.'" border="0"></a><br /></td>
    <td>http://www....../images/'
.$entrada.'<br>Subida el '.date("d-m-Y-H:i:s"filectime($directorio.$entrada)).'</td>
  </tr>
</table>
<br>
'



closedir($descriptor); 
?>
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #5 (permalink)  
Antiguo 08/09/2008, 00:10
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

Otra cosa mas quiero a una ladito poner un link que al dar click me borre el archivo, ya lei un poco acerca de unlink pero no se como puedo emplearlo aki...
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #6 (permalink)  
Antiguo 08/09/2008, 08:55
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

aun no logro, nada.. y es que estoy confundido con una cosa... todos los ejemplos que he visto para usar asort, despues del asort usan while y yo ya tengo el while que muestra los archivos del directorio, entonces no se si poner 2 whiles? o en una sola linea como lo pueda poner.....
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #7 (permalink)  
Antiguo 08/09/2008, 09:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ordenar archivos con opendir

Lo que tienes que hacer por pasos:
1.- Leer todo el contenido del directorio y guardarlo en un arreglo
2.- Obtener la fecha de creacion de todos los archivos
3.- Ordenar el arreglo por la fecha de creación
4.- Imprimir con un while todos los elementos de tu arreglo.

Saludos.
  #8 (permalink)  
Antiguo 08/09/2008, 09:23
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Ordenar archivos con opendir

Que tal Capimaster, despues de que verificas que es un archivo dentro del while vas agregando a un array los archivos, obviamente obteniendo la fecha de creación del mismo:
Código PHP:
$archivos[] = $entrada;
asort($archivos); 
Luego fuera del while los listas con foreach
Código PHP:
foreach($archivo as $file){
echo 
$file."<br>";} 



Saludos.
  #9 (permalink)  
Antiguo 08/09/2008, 09:53
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

Cita:
Iniciado por GatorV Ver Mensaje
Lo que tienes que hacer por pasos:
1.- Leer todo el contenido del directorio y guardarlo en un arreglo
2.- Obtener la fecha de creacion de todos los archivos
3.- Ordenar el arreglo por la fecha de creación
4.- Imprimir con un while todos los elementos de tu arreglo.

Saludos.
Ok GatorV y como puedo meterlo a un arreglo?

Código PHP:
$arreglo = array ($entrada[]); 
o como podria hacerlo..
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #10 (permalink)  
Antiguo 08/09/2008, 09:57
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Ordenar archivos con opendir

Cita:
Iniciado por Carlojas Ver Mensaje
Que tal Capimaster, despues de que verificas que es un archivo dentro del while vas agregando a un array los archivos, obviamente obteniendo la fecha de creación del mismo:
Código PHP:
$archivos[] = $entrada;
asort($archivos); 
Luego fuera del while los listas con foreach
Código PHP:
foreach($archivo as $file){
echo 
$file."<br>";} 

Leiste esto? creo que necesitas leer el manual de PHP array()

Saludos.
  #11 (permalink)  
Antiguo 08/09/2008, 10:32
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

Ok parece que ya los pude meter a un array pero no consigo ordenarlos... les paso mi codigo

Código PHP:
<?php 
        
        
        
$directorio 
"./images/"
$descriptor opendir($directorio);
$fecha date("d-m-Y-H:i:s"filectime($directorio.$entrada));



while (
false !== ($entrada readdir($descriptor))) { 
$archivos[] = $entrada;
asort($archivos);
$ext=strtolower(end(explode('.',$entrada))); 
if (
is_dir($directorio.$entrada) ) { 
} elseif ( 
is_file ($directorio $entrada) && ($ext=='jpg' || $ext=='png' || $ext=='gif')) { 

echo 
'


<table width=95% border=1 cellpadding=4 align=center cellspacing=0 bordercolor=#ACB7D7 bgcolor=#F7F8FA>
  
  <tr  style="font-size:12px;">
    <td width=285><a href="images/'
.$entrada.'" target="_blank"><img src="images/redimensionar.php?imagen='.$entrada.'" border="0"></a><br /></td>
    <td><b>Imagen grande: </b><input name="" type="text" size="70" style="font-size:11px;  border:#ACB7D7 1px; background:#E8E8E8;" value="http://www.afamo.com.mx/admin/images/'
.$entrada.'" /><br>
    <b>Imagen chica: </b><input name="" type="text" size="72" style="font-size:11px; border:#ACB7D7 1px; background:#E8E8E8;" value="http://www.afamo.com.mx/images/redimensionar.php?imagen='
.$entrada.'" /><br>
    Subida el '
.date("d-m-Y-H:i:s"filectime($directorio.$entrada)).' <a href="eliminar.php?imagen='.$entrada.'">[Eliminar]</a></td>
  </tr>
</table>
<br>
'



closedir($descriptor); 
?>
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #12 (permalink)  
Antiguo 08/09/2008, 10:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ordenar archivos con opendir

Parece que no haz leido mi post, ya te di la estructura de lo que tienes que hacer, ahora solo echale un poquito de cerebro y puedes entender el algoritmo de como hacer lo que necesitas.

Saludos.
  #13 (permalink)  
Antiguo 08/09/2008, 11:12
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

GatorV claro que lei tu post.. mira algo mas simplificado para entenderte mejor...
agradesco tu ayuda
Código PHP:
$gestor opendir('.'); 
$arreglo[] = ($archivo readdir($gestor)); //Leer todo el contenido del directorio y guardarlo en un arreglo
$fecha date("d-m-Y-H:i:s"filectime($archivo)); //Obtener la fecha de creacion de todos los archivos

asort($fecha); //Ordenar el arreglo por la fecha de creación


while (false !== ($fecha)) {
    echo 
$archivo;
//Imprimir con un while todos los elementos de tu arreglo. este es el que menos entendi como hacer


closedir($gestor); 
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #14 (permalink)  
Antiguo 08/09/2008, 11:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Ordenar archivos con opendir

Lee en el manual como es que trabaja la función readdir().

Saludos.
  #15 (permalink)  
Antiguo 08/09/2008, 13:20
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

Si habia leido acerca de readdir.. solo que se me escapo un pokito el rollo

mira he logrado esto...

Código PHP:
<?php 

// llenar una matriz con todos los ítems de un directorio
$gestor opendir('.');
while (
false !== ($archivo readdir($gestor))) {
$fecha date("d-m-Y-H:i:s"filectime($archivo)); 
        
$archivos[] = $fecha;
            }
sort($archivos);
print_r($archivos);


closedir($gestor);


?>
y me da este resultado, en el explorador...

Código:
Array ( [0] => 05-09-2008-16:13:54 [1] => 05-09-2008-16:42:12 [2] => 05-09-2008-16:42:16 [3] => 05-09-2008-17:03:11 [4] => 05-09-2008-22:15:23 [5] => 05-09-2008-22:32:16 [6] => 05-09-2008-22:32:57 [7] => 05-09-2008-22:33:44 [8] => 06-09-2008-14:40:49 [9] => 08-09-2008-11:25:09 [10] => 08-09-2008-11:30:46 [11] => 08-09-2008-11:46:56 [12] => 08-09-2008-12:32:37 [13] => 08-09-2008-15:11:31 [14] => 08-09-2008-15:15:21 [15] => 08-09-2008-15:15:21 [16] => 28-08-2008-19:06:14 [17] => 29-08-2008-02:05:55 [18] => 29-08-2008-12:50:08 )
osea que ya estoy apunto de logarlo... pero no se como acomodar todo... necesito que me de la ruta del archivo.. pero ordenada con esas fechas...
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #16 (permalink)  
Antiguo 08/09/2008, 13:30
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Ordenar archivos con opendir

Que tal Capimaster, prueba esto:

Código PHP:
$directorio "./images/";  
$gestor opendir($directorio);
$entradas = array();
while (
false !== ($archivo readdir($gestor))) { 
$entradas[$archivo] = filectime($directorio."/".$archivo);} 
asort($entradas);
closedir($gestor); 

// Recorres cada uno de los archivos.
foreach($entradas as $file => $tiempo){ 
echo 
date("d-m-Y"$tiempo);
echo 
"<a href=\"$directorio/$file\">$direcorio/$file</a>";} 

Saludos.
  #17 (permalink)  
Antiguo 08/09/2008, 13:49
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

Carlojas ya lo pude hacer funcionar... ahora como puedo para mostrar solo extensiones de imagenes?? para que no me muestre los archivos php y demas
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #18 (permalink)  
Antiguo 08/09/2008, 14:06
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ordenar archivos con opendir

Con un IF. Si la extension de el archivo es PHP, no mostrarla. De lo contrario mostrarla.

Para buscar usa strpos, sino un explode o lo que quieras.
  #19 (permalink)  
Antiguo 08/09/2008, 14:41
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

Me pueden ayudar en que estoy mal?

Código PHP:
<?php     
$directorio 
"./images/";   
$gestor opendir($directorio); 
$entradas = array(); 
while (
false !== ($archivo readdir($gestor))) {
$ext=strtolower(end(explode('.',$files)));  
$entradas[$archivo] = filectime($directorio."/".$archivo);}  
asort($entradas); 
closedir($gestor);

// Recorres cada uno de los archivos. 

foreach($entradas as $file => $tiempo){  
if (
is_dir($files) ) { 
} elseif ( 
is_file ($files) && ($ext=='jpg' || $ext=='png' || $ext=='gif')) { 
echo 
date("d-m-Y"$tiempo); 
echo 
'

<table width=95% border=1 cellpadding=4 align=center cellspacing=0 bordercolor=#ACB7D7 bgcolor=#F7F8FA>
  
  <tr  style="font-size:12px;">
    <td width=285><a href="images/'
.$file.'" target="_blank"><img src="images/redimensionar.php?imagen='.$directorio.$file.'" border="0"></a><br /></td>
    <td><b>Imagen grande: </b><input name="" type="text" size="70" style="font-size:11px;  border:#ACB7D7 1px; background:#E8E8E8;" value="http://www.afamo.com.mx/admin/images/'
.$entrada.'" /><br>
    <b>Imagen chica: </b><input name="" type="text" size="72" style="font-size:11px; border:#ACB7D7 1px; background:#E8E8E8;" value="http://www.afamo.com.mx/images/redimensionar.php?imagen='
.$entrada.'" /><br>
    Subida el '
.date("d-m-Y-H:i:s"filectime($directorio.$entrada)).' <a href="eliminar.php?imagen='.$entrada.'">[Eliminar]</a></td>
  </tr>
</table>
<br>
'
;} 
}
?>
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #20 (permalink)  
Antiguo 08/09/2008, 14:53
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Ordenar archivos con opendir

Antes de pasar todos los archivos al arreglo haces la respectiva comparación, veo que tienes serios problemas en entender tus propios códigos:

Código PHP:
<?php      
$directorio 
"./images/";    
$gestor opendir($directorio);  
$entradas = array();  
while (
false !== ($archivo readdir($gestor))) { 
$ext strtolower(end(explode('.',$archivo)));  
// Aqui haces la comparación 
if (is_file($directorio.$archivo) && ($ext=='jpg' || $ext=='png' || $ext=='gif')) {
$entradas[$archivo] = filectime($directorio."/".$archivo);}}   
asort($entradas);  
closedir($gestor); 

// Recorres cada uno de los archivos.  
foreach($entradas as $file => $tiempo){    
echo 
date("d-m-Y"$tiempo);  
echo 

<table width=95% border=1 cellpadding=4 align=center cellspacing=0 bordercolor=#ACB7D7 bgcolor=#F7F8FA> 
   
  <tr  style="font-size:12px;"> 
    <td width=285><a href="http://www.forosdelweb.com/images/'
.$file.'" target="_blank"><img src="http://www.forosdelweb.com/images/redimensionar.php?imagen='.$directorio.$file.'" border="0"></a><br /></td> 
    <td><b>Imagen grande: </b><input name="" type="text" size="70" style="font-size:11px;  border:#ACB7D7 1px; background:#E8E8E8;" value="http://www.afamo.com.mx/admin/images/'
.$file.'" /><br> 
    <b>Imagen chica: </b><input name="" type="text" size="72" style="font-size:11px; border:#ACB7D7 1px; background:#E8E8E8;" value="http://www.afamo.com.mx/images/redimensionar.php?imagen='
.$file.'" /><br> 
    Subida el '
.date("d-m-Y-H:i:s"filectime($directorio.$file)).' <a href="eliminar.php?imagen='.$file.'">[Eliminar]</a></td> 
  </tr> 
</table> 
<br> 
'
;}
PD: Editemoslo de una vez por si alguien mas lo necesita.

Saludos.

Última edición por Carlojas; 08/09/2008 a las 15:27
  #21 (permalink)  
Antiguo 08/09/2008, 15:11
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

Ya lo entendi pero no se por que sigue sin funcionarme, tal como me lo diste... no me aparece nada... segun eso no me encuentra archivos..

intente donde vienen las exptensiones ponerla de php y los php que encuentra si me los muestra
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #22 (permalink)  
Antiguo 08/09/2008, 15:13
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Ordenar archivos con opendir

Que es lo que no te funciona?




Saludos.
  #23 (permalink)  
Antiguo 08/09/2008, 15:20
Avatar de Capimaster  
Fecha de Ingreso: agosto-2004
Mensajes: 494
Antigüedad: 19 años, 8 meses
Puntos: 2
Respuesta: Ordenar archivos con opendir

Ya pude!!! yujuuuuu toda la mañana y parte de la tarde me lleve con esto pero ya pude...

estaba bien todo el codigo Carlojas, solo falto esto...
if (is_file($archivo)
if (is_file($directorio.$archivo)
__________________
http://www.elcapitolio.com.mx - Ocotlán, Jalisco, México
  #24 (permalink)  
Antiguo 08/09/2008, 15:24
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Ordenar archivos con opendir

Que bien me alegro que pudiste solucionarlo.





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 22:12.