Foros del Web » Programando para Internet » PHP »

como podria hacer esto?

Estas en el tema de como podria hacer esto? en el foro de PHP en Foros del Web. hola a todos:D mi pregunta es la siguiente como podria contar las imagenes de varios directorios y mostrar el resultado? me explico. pongamos que tengo ...
  #1 (permalink)  
Antiguo 28/07/2004, 02:36
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
como podria hacer esto?

hola a todos:D mi pregunta es la siguiente como podria contar las imagenes de varios directorios y mostrar el resultado? me explico.

pongamos que tengo 3 directorios asi:

http://.../animales/gatos
http://.../animales/perros
http://.../animales/loros

como podria contar el total de imagenes si estan en 3 directorios distintos?
por si es de ayuda consigo la direccion del directorio la conigo de una BD(MYSQL)

gracias :D
  #2 (permalink)  
Antiguo 28/07/2004, 05:51
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 20 años, 4 meses
Puntos: 0
pero esas imagenes estan en tu servidor o que?
Si es asi buscate en www.php.net las funciones de tratamiento de ficheros y/o directorios. Fijo que hay alguna que te devuelve el numero de ficheros de un directorio.
  #3 (permalink)  
Antiguo 28/07/2004, 06:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero en tu BD sólo guardas la ruta del directorio? o guardas ruta/nombre_archivo?

De todas formas .. creo que ya vistes las funciones como dir() .. opendir() y demás ... Sólo tendrías que obtener la ruta de tu BD (si es que guardas sólo el directorio) y aplicar el "opendir()" o dir() para ese directorio dado y usar un contador ($contador++) en el bucle que usarás para leer los archivos de ese directorio (acuerdate de descartar los . y .. ademas de directorios si "is_dir()"....)

Sería algo así (no lo he probado .. lo escribí sobre la marcha):


Código PHP:
<?
// concectas a tu BD .. etc ..
$resultador=mysql_query("SELECT directorio FROM tabla .....");

// iniciar contador.
$contador=0;
While (
$row=mysql_fetch_array($resultado)){

// Obtienes los "directorios" .. y aplicas el opendir()

$dir $row['directorio'];

// Open a known directory, and proceed to read its contents 
// (te suena esto? : [url]www.php.net/opendir[/url] )
if (is_dir($dir)) { 
   if (
$dh opendir($dir)) { 
       while ((
$file readdir($dh)) !== false) { 
           
// Verificas que el archivo obtenido no sea una entrada de directorio o sea un direcctorio.
           
if ($file != "." && $file != ".." && !is_dir($file)){
              
// Incrementas el contador si es un archivo únicamente.
              
$contador++;
           }
      } 
       
closedir($dh); 
   } 

}
// muestras el total.
echo "Total archivos: ".$contador;
?>
Un saludo,
  #4 (permalink)  
Antiguo 28/07/2004, 06:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Un detallito que se me pasó ..

A las funcoines opendir() le has de pasar una ruta absoluta de tu archivo .. Si tu guardas en tu BD la ruta tipo "http://www.tal.tal/...../animales/perros .." tendrás que quitar el "http://www.tal.tal/" para quedarte con la ruta "absoluta" y componerla con:

$dir=$_SERVER['DOCUMENT_ROOT']."./".$ruta_absoluta;

donde $ruta_absoluta .. podrías conseguirla haciendo algo tipo:

$ruta_absoluta=str_replace ('http://www.tal.tal/','',$row['directorio']);
(ojo con el último / de http://www.tal.tal/ .. es importante)

Un saludo,
  #5 (permalink)  
Antiguo 28/07/2004, 08:06
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
gracias cluster :D lo que guardo en la BD es el nombre del directorio,por ejemplo pongo http://tal...tal/imagenes/

y enla BD guardo animales/perros

probare lo que me has dado gracias cluster ;) eres el numero uno
  #6 (permalink)  
Antiguo 28/07/2004, 08:26
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
muuuuchas gracias cluster :D me ha funcionado a al perfeccion ;) como dije eres el numero 1!!!!:D


P.D: ahora que lo pienso esto tambien me podria vale rpara mostar fotos(claro si lo modifico) no cluster? gracias:D

Última edición por Newphp; 28/07/2004 a las 08:28
  #7 (permalink)  
Antiguo 28/07/2004, 09:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues si, . tan sólo

Código PHP:
if ($file != "." && $file != ".." && !is_dir($file)){ 
              echo 
"<img src=\"http://www.tal.tal/imagenes/".row['directorio']."/".$file."\">";
              
// Incrementas el contador si es un archivo únicamente. 
              
$contador++; 
           } 
Suponiendo que en esos directoríos sólo guardes "imagenes" .. sino, tendrás que filtrar la extensión del nombre del archivo par identificar que archivos son las imagenes y cuales no (o mejor todavía .. viendo el formato MIME del archivo)

Un saludo,

Última edición por Cluster; 28/07/2004 a las 09:25
  #8 (permalink)  
Antiguo 28/07/2004, 09:30
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
gracias cluster ;) no te haces idea de lo que estoy aprendiendo gracias a ti :D
  #9 (permalink)  
Antiguo 28/07/2004, 13:20
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
una ultima cosita :D no se el porque pero me cuenta las carpetas :( me dice que tengo mas imagenes de las que hay :( a que puede ser devido?

thanks
  #10 (permalink)  
Antiguo 28/07/2004, 14:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En teoría esta validación es la que determina si es una entrada de directorio (..) o es el directorio raiz (.) o es un directorio (is_dir()):

if ($file != "." && $file != ".." && !is_dir($file)){

Haz un echo a $file ahí mismo (antes del if) y observa que valores te dá ...


Un saludo,
  #11 (permalink)  
Antiguo 28/07/2004, 15:12
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
me pone el nombre del directorio,es como sino lo distinguiera...raro...raro..raro

Última edición por Newphp; 28/07/2004 a las 15:13
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 16:41.