Foros del Web » Programando para Internet » PHP »

problemas con carpetas en php

Estas en el tema de problemas con carpetas en php en el foro de PHP en Foros del Web. problemas con carpetas en php. estoy intentando ahcer un random para mostrar una imagen de una serie de carpetas. hasta ahi todo bien la imagen ...
  #1 (permalink)  
Antiguo 31/05/2012, 16:11
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
problemas con carpetas en php

problemas con carpetas en php. estoy intentando ahcer un random para mostrar una imagen de una serie de carpetas. hasta ahi todo bien la imagen la muestro y se hace un random en las diferentes carpetas que tengo como base - 4 - por asi decirlo tengo 4 carpetas - norte america - sur america - centro america - caribe. dentro de ellas he colocado varias imagenes que se muestra 1 a la vez gracias al random hasta ahi todo funciona muy bien. mi problema viene cuando dentro de la carpeta de norte america. tengo que meter mas carpetas. ya que norte america viene siendo como la seccion y las deemas carpetas como los apartados. no se si me explico. es decir dentro de Norte America van Canada - USA - Mexico. y dentro irian las imagenes representativas de cada zona... ahi es cuando ya mi runtina no me funciona. por eso pido de su ayuda. y que decir de las demas carpetas padre.. en la de centro america son 6 subcarpetas cada una con sus imagenes. espero puedan ayudarme les agrego el codigo que estoy utilizando. soy un principiante de php asi que si se puede mejorar el codigo cuanto con ustedes para optimizarlo.

Código PHP:
   <?php
        $root 
"gallery/img/"// direccion donde se encuentran las carpetas padre
        
$tot "3";
        
$path = array( "north_am"// aqui genero el random de las carpetas
                          
"centro_am",
                          
"sud_am",
                          
"caribe");
       
$n mt_rand(0$tot);
       
$folder $root.'/'.$path[$n];
       
$tit= array("Norte América""Centro América""Sur América""Caribe"); // simplemente saco el nombre de la carpeta padre para ponerlo como titulo 
       
$extList = array(); // un array con las extensiones validas de imagenes
       
$extList['gif'] = 'image/gif';
       
$extList['jpg'] = 'image/jpeg';
       
$extList['jpeg'] = 'image/jpeg';
       
$extList['png'] = 'image/png';
       
$img null;
       if (
substr($folder, -1) != '/') {
        
$folder $folder '/';
        }
       if (isset(
$_GET['img'])) {
        
$imageInfo pathinfo($_GET['img']);
         if (isset(
$extList[strtolower($imageInfo['extension'])]) && file_exists($folder .
             
$imageInfo['basename'])) {
                
$img $folder $imageInfo['basename'];
               }
         } else {
            
$fileList = array();
            
$handle opendir($folder);
           
// echo $folder;
           
  
while (false !== ($file readdir($handle))) {
                  
$file_info pathinfo($file);
                  if (isset(
$extList[strtolower($file_info['extension'])])) {
                      
$fileList[] = $file;
                     }
               }
              
closedir($handle);
              
$ntotal count($fileList);
              if (
$ntotal 0) {
                  
$imageNumber rand(0$ntotal 1);
                  
$img $folder $fileList[$imageNumber];
                 }
           }
           
            
?>
  <figure><img title="" src="img/maske_gallery.png" style="background: #000 url('<?php echo $img ?>') center center no-repeat;"/></figure></p>
  <h3><?php echo $tit[$n];
?></h3>
  #2 (permalink)  
Antiguo 01/06/2012, 15:51
Avatar de iukaeru  
Fecha de Ingreso: mayo-2012
Mensajes: 127
Antigüedad: 12 años
Puntos: 12
Respuesta: problemas con carpetas en php

Si se supone que cada carpeta tiene sub-carpetas adentro, deberás agregar separadores así:

$path = array( "north_am/", // aqui genero el random de las carpetas
"centro_am/",
"sud_am/",
"caribe/");

...Pero no veo dónde estás poniendo el nombre de las sub-carpetas para completar el script.
  #3 (permalink)  
Antiguo 03/06/2012, 11:34
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: problemas con carpetas en php

Cita:
Iniciado por iukaeru Ver Mensaje
Si se supone que cada carpeta tiene sub-carpetas adentro, deberás agregar separadores así:

$path = array( "north_am/", // aqui genero el random de las carpetas
"centro_am/",
"sud_am/",
"caribe/");

...Pero no veo dónde estás poniendo el nombre de las sub-carpetas para completar el script.
entiendo tu planteamiento tal vez no me ezplique bien. las 4 carpetas que pongo en el random son las 4 zonas que voy a manejar. no pongo las subcarpetas porque no son constantes, es decir. norte america tiene 4 subcarpetas, centro america tiene 9, sudamerica tiene como 11 por eso no lo puse mi idea conceptual era meterme al azar en esas carpetas - gracias al random - y de ahi leer las subcarpetas contenidas y seleccionar una al azar, y agarrar una imagen cualkiera y desplegarla.


perdon por mi mala escritura culpo al messenger. pero tambien a mi.
  #4 (permalink)  
Antiguo 03/06/2012, 19:28
 
Fecha de Ingreso: septiembre-2011
Ubicación: Yucatán
Mensajes: 42
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: problemas con carpetas en php

yo uso esta funcion, la misma te muestra los archivos que se encuentren en todos los subtirectorios del directorio indicado, con algunas modificaciones puedes hacerlo funcionar, para lo que quieras, x ejemplo, yo tengo una funcion que llamo busca.php que me permite buscar en todos los archivos php, una cadena especifica, por ejemplo una variable y me muestra todos los archivos donde encuentre esa variable.

Código PHP:
function listar_directorios_ruta($ruta){
    
// abrir un directorio y listarlo recursivo
    
if (is_dir($ruta)) {
        if (
$dh opendir($ruta)) {
            while ((
$file readdir($dh)) !== false) {
                
//esta línea la utilizaríamos si queremos listar todo lo que hay en el directorio
                //mostraría tanto archivos como directorios
                
if ($file!="." && $file!=".."){
                    if (
is_dir($ruta $file)){
                        
//solo si el archivo es un directorio, distinto que "." y ".."           
                        
listar_directorios_ruta($ruta $file "/");
                    }
                    else echo 
"$ruta$file<br />";
                }
            }
            
closedir($dh);
        }
    }else echo 
"<br>No es ruta valida";

listar_directorios_ruta('north_am/'); 
  #5 (permalink)  
Antiguo 04/06/2012, 02:21
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: problemas con carpetas en php

Otra opción seria utilizar Iterators, algo asi:

Código PHP:
Ver original
  1. class OnlyFileRecursiveFilterIterator extends RecursiveFilterIterator
  2. {
  3.     public function accept()
  4.     {          
  5.         return $this->hasChildren() || $this->current()->isFile();
  6.     }
  7. }
  8.  
  9. $iterator = new RecursiveIteratorIterator(
  10.                 new OnlyFileRecursiveFilterIterator(
  11.                     new RecursiveDirectoryIterator('/path/to/dir')));                  
  12. $random   = array_rand(iterator_to_array($iterator));
  13. echo $random . PHP_EOL;

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 04/06/2012 a las 02:51 Razón: Falto filtro

Etiquetas: carpetas, imagenes
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 12:07.