Foros del Web » Programando para Internet » PHP »

Readdir, leer por oden de archivo

Estas en el tema de Readdir, leer por oden de archivo en el foro de PHP en Foros del Web. Hola, pues utilizo readdir para leer las imagenes de un directorio y mostrarlas, por oden de nombre, osea tengo estos archivos: Código: vegetacion_1_1 vegetacion_1_2 vegetacion_1_3 ...
  #1 (permalink)  
Antiguo 07/07/2009, 03:08
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Pregunta Readdir, leer por oden de archivo

Hola, pues utilizo readdir para leer las imagenes de un directorio y mostrarlas, por oden de nombre, osea tengo estos archivos:
Código:
vegetacion_1_1
vegetacion_1_2
vegetacion_1_3
Pues me gustaria que readdir los leyera por ese orden, pero lo hace de cualquier forma... ¿Como lo consigo?

Gracias!
  #2 (permalink)  
Antiguo 07/07/2009, 03:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Readdir, leer por oden de archivo

con PHP no se puede controlar ese comportamiento, eso es propio del SO...

lo que puedes hacer, es agrupar todo el resultado en un array(), luego lo ordenas y lo usas...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/07/2009, 04:31
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Readdir, leer por oden de archivo

¿Y como hago eso con arrays?

Gracias por responder!
  #4 (permalink)  
Antiguo 07/07/2009, 09:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Readdir, leer por oden de archivo

Con sort, asort, rsort, etc.

Saludos.
  #5 (permalink)  
Antiguo 07/07/2009, 10:48
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Readdir, leer por oden de archivo

Hola gatorv gracias por contestar, intento esto:
Código PHP:
$directorioopendir($ruta);
$archivossort(readdir($directorio));
                
foreach (
$archivos as $archivo)
{
    
$tipoexplode("_"$archivo);
    
$terrenoexplode("."$archivo);
                        
//etc...

Pero me dice:
Código:
Warning: sort() expects parameter 1 to be array, string given in C:\Wamp\www\Pokemonrpg\administracion\mapeador\ventana_terrenos.php on line 42
¿Osea como lo hago con readdir?

Gracias!
  #6 (permalink)  
Antiguo 07/07/2009, 11:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Readdir, leer por oden de archivo

sort() solo funciona con arreglos, como te indico pateketrueke tienes que pasar todos los datos a un arreglo primero, luego aplicar sort() y luego leerlos.

Saludos.
  #7 (permalink)  
Antiguo 08/07/2009, 04:33
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Respuesta: Readdir, leer por oden de archivo

Hola gatorV, mira utilizo este codigo:
Código PHP:
$archivos= array();
                    
$ruta"../../graficos/mundo/terrenos";
                    
$directorioopendir($ruta);
                    
//$archivos[]= readdir($directorio);
                    
                    
while ($archivoreaddir($directorio))
                    {
                              
$archivos[]= $archivo
                    }
                    
closedir($directorio);
                    
                    
sort($archivos);
                    
reset($archivos);
                    
                    foreach (
$archivos as $archivo)
{
 echo 
"<td><img style=\"width: 32px; height: 32px;\" src='../../graficos/mundo/terrenos/".$archivo."' onclick=\"window.opener.\$('#mapa_terreno').attr({value: '".$terreno[0]."'});\"/></td>";

La cosa esque no se ordena, use asort, use sort, se muestran igual los graficos.. como si no los ordenara

¿Que puede haber mal?

Gracias!
  #8 (permalink)  
Antiguo 08/07/2009, 11:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Readdir, leer por oden de archivo

sort() los va a ordenar por strings por lo que si tus strings son como el primer post no los va a ordenar, vas a tener que usar un algoritmo propio para ordenar los archivos ya cuando esten en el array.

Saludos.
  #9 (permalink)  
Antiguo 09/07/2009, 05:16
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Cita:
sort() los va a ordenar por strings por lo que si tus strings son como el primer post no los va a ordenar, vas a tener que usar un algoritmo propio para ordenar los archivos ya cuando esten en el array.
Hola GatorV, no entiendo lo que quieres decir, ¿A que terefieres con que tienen que ser strings? es lo que son..

Saludos y gracias

Te refieres a que lo que quiero ordenar son los numeros?
osea
vegetacion_1
vegetacion_2
..

Exacto es asi.
Entonces como lo hago?

Gracias!

¿Deberia primero comprobar las letras y luego los numeros?

Ayuda en esto por favor.

Gracias

¿De verdad nadie sabe como hacerlo?

Buscando y leyendo al final he encontrado la solucion,.... muy simple, usando "natsort()":

Código PHP:
$archivos= array();
                    
$ruta"../../graficos/mundo/terrenos";
                    
$directorioopendir($ruta);
                    
                    while (
false!== ($archivo readdir($directorio)))
                        
$archivos[]= $archivo;
                    
                    
closedir($directorio);
                    
natsort($archivos);
                    
reset($archivos);
                    
                    foreach (
$archivos as $archivo)
                    {
                        echo 
$archivo;
                        }
                    } 
Bueno siento los doble posts pero esque llevaba varios dias sin conocer las respuestas ojala le sirva a alguien, con esta funcion podras ordenar varios strings contengan texto y numero.

Un saludo.

Última edición por GatorV; 10/07/2009 a las 09:19
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 08:14.