Foros del Web » Programando para Internet » PHP »

Calcular el número de archivos en carpeta

Estas en el tema de Calcular el número de archivos en carpeta en el foro de PHP en Foros del Web. Buenas! Creo que esto es fácil de hacer en php, pero no tengo un nivel suficiente en php Bueno, pues eso, espero que alguien me ...
  #1 (permalink)  
Antiguo 06/12/2006, 16:27
 
Fecha de Ingreso: octubre-2006
Ubicación: Quart de Poblet, Valencia
Mensajes: 767
Antigüedad: 17 años, 5 meses
Puntos: 8
Calcular el número de archivos en carpeta

Buenas!

Creo que esto es fácil de hacer en php, pero no tengo un nivel suficiente en php

Bueno, pues eso, espero que alguien me lo explique ;)

Saludos!
  #2 (permalink)  
Antiguo 06/12/2006, 21:10
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Re: Calcular el número de archivos en carpeta

Depende de tu versión. Si utilizas PHP 5.0 o posterior, la solución es sencilla. (Aunque dudo que uses esta versión)

Por si acaso, ahí va:

Código PHP:
$dir "/carpeta";
$explorar scandir($dir); 
Con esto ya tendríamos una array con la lista de archivos. Un simple count() contaría el total. Pero debes tener en cuenta que suelen están presentes dos directorios con los nombres "." y ".."

Se me ocurre hacer una revisión como esta a la array:

Código PHP:
$total_archivos count($explorar);
$total 0;

for (
$i 0$i<=$total_archivos$i++) {

    if (
$explorar[$i] != "." && $explorar[$i] != "..") {
    
$total++;
    }

Ya tenemos almacenados en $total el número de archivos del directorio.

Código completo:

Código PHP:
$dir "/carpeta";
$explorar scandir($dir);
$total_archivos count($explorar);
$total 0;

for (
$i 0$i<=$total_archivos$i++) {

    if (
$explorar[$i] != "." && $explorar[$i] != "..") {
    
$total++;
    }

Otra cosa que podíamos haber hecho podría ser restarle 2. Supongo que ya sabes por qué. Una por "." y otra por "..", que son los 2 que no queremos contar. Lo que pasa es que no sé si siempre están presentes estos dos directorios.

Código PHP:
$dir "/carpeta";
$explorar scandir($dir);
$total_archivos count($explorar);
$total $total_archivos-2
Suerte
  #3 (permalink)  
Antiguo 06/12/2006, 21:22
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Alternativa para PHP 4.0

En PHP.net está la solución alternativa para PHP 4.0, sin poder usar scandir(). Le añado lo que he creado arriba

Código PHP:
<?php
$dir 
"/carpeta";
$dh  opendir($dir);
while (
false !== ($nombre_archivo readdir($dh))) {
   
$archivos[] = $nombre_archivo;
}

$total_archivos count($archivos);
$total 0;

for (
$i 0$i<=$total_archivos$i++) {

    if (
$explorar[$i] != "." && $explorar[$i] != "..") {
    
$total++;
    }
}  

?>
Y ya lo tienes en la variable $total


O resumidamente...

Código PHP:
$dir "/carpeta";
$dh  opendir($dir);
while (
false !== ($nombre_archivo readdir($dh))) {
   
$archivos[] = $nombre_archivo;
}

$total_archivos count($archivos);
$total $total_archivos-2

Última edición por david_M_G; 06/12/2006 a las 21:32
  #4 (permalink)  
Antiguo 07/12/2006, 11:26
 
Fecha de Ingreso: octubre-2006
Ubicación: Quart de Poblet, Valencia
Mensajes: 767
Antigüedad: 17 años, 5 meses
Puntos: 8
Re: Calcular el número de archivos en carpeta

Muchísimas gracias ;)

Perfecto.

La única duda que tengo en el código es por qué $total = $total_archivos-2;
Para qué se le resta 2?
Saludos!!!
  #5 (permalink)  
Antiguo 07/12/2006, 11:45
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Re: Calcular el número de archivos en carpeta

Porque "." y ".." que aparecen en la lista de archivos, no los queremos contar.

La lista de archivos aparece de esta forma:
Código:
.
..
foto.jpg
archivo.zip
ejecutable.exe
imagen.gif
foto.png
Si contásemos, daría 7... le restamos "." y ".." (2) y nos quedamos con 5.

Última edición por david_M_G; 07/12/2006 a las 11:57
  #6 (permalink)  
Antiguo 07/12/2006, 16:29
 
Fecha de Ingreso: octubre-2006
Ubicación: Quart de Poblet, Valencia
Mensajes: 767
Antigüedad: 17 años, 5 meses
Puntos: 8
Re: Calcular el número de archivos en carpeta

Cita:
Iniciado por david_M_G Ver Mensaje
Porque "." y ".." que aparecen en la lista de archivos, no los queremos contar.

La lista de archivos aparece de esta forma:
Código:
.
..
foto.jpg
archivo.zip
ejecutable.exe
imagen.gif
foto.png
Si contásemos, daría 7... le restamos "." y ".." (2) y nos quedamos con 5.
Muchas gracias por tu gran ayuda ;)

Saludos.
  #7 (permalink)  
Antiguo 07/12/2006, 17:45
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 2 meses
Puntos: 3
Re: Calcular el número de archivos en carpeta

Creo que con DirectoryIterator es mas eficiente y sencillo:
Código PHP:
<?php
/*
 * Created on 7/12/2006
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 *
 */
$dir = new DirectoryIterator('/Servidor/WEB/php/POO');//Aqui se indica la ruta
$num=0;
while(
$dir->valid()) {
   if(!
$dir->isDot()) {
       
$num++;
       print 
$dir->isFile()."<br />";
   }
   
$dir->next();
}
print
"Total de archivos : $num";
?>
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #8 (permalink)  
Antiguo 04/09/2007, 20:01
 
Fecha de Ingreso: agosto-2007
Mensajes: 106
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Calcular el número de archivos en carpeta

Más sencillo q esto si q no ay nada, ademas el scandir() a mi me da fallo:

<?php
$fichero = glob('imagenes/mini/*');
$imagen= rand(0,count($fichero)-1);
print('<img src="'.$fichero[$imagen].'" alt="una imagen" /> ');
?>
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 04:08.