Foros del Web » Programando para Internet » PHP »

Recorrer carpeta y elaborar Checkbox con directorios

Estas en el tema de Recorrer carpeta y elaborar Checkbox con directorios en el foro de PHP en Foros del Web. Hola a todos! ;) Estoy realizando un programa el cual recorro por medio de PHP la carpeta actual y muestro un listado de los directorios ...
  #1 (permalink)  
Antiguo 12/10/2014, 15:15
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Pregunta Recorrer carpeta y elaborar Checkbox con directorios

Hola a todos! ;)

Estoy realizando un programa el cual recorro por medio de PHP la carpeta actual y muestro un listado de los directorios encontrados en la pantalla.

Bien lo que quiero es, por cada directorio que encuentre cree un Checkbox para permitir al usuario seleccionarlo y almacenarlo en un ZIP todos estos directorios mostrando un link que permita descargar este ZIP.

El ZIP debe contener sólo los "directorios" seleccionados por el usuario.

Dejo el código pero este guarda todo y no los directorios y su contenido en el ZIP.

El programa lista la carpeta y su contenido. Y quiero conseguir mostrar el nombre de cada carpeta un checkbox al lado y poder seleccionar cuales quiero guardar en el ZIP

Código PHP:
Ver original
  1. <?php
  2.       //primero creamos la función que hace la magia
  3.       //esta funcion recorre carpetas y subcarpetas
  4.       //añadiendo todo archivo que encuentre a su paso
  5.       //recibe el directorio y el zip a utilizar
  6.       function agregar_zip($dir, $zip){
  7.      
  8.         $lista = "";
  9.         //verificamos si $dir es un directorio
  10.         if (is_dir($dir)) {
  11.           //abrimos el directorio y lo asignamos a $da
  12.           if ($da = opendir($dir)) {          
  13.             //leemos del directorio hasta que termine
  14.             while (($archivo = readdir($da))!== false) {  
  15.               //Si es un directorio imprimimos la ruta
  16.               //y llamamos recursivamente esta función
  17.               //para que verifique dentro del nuevo directorio
  18.               //por mas directorios o archivos
  19.               if (is_dir($dir . $archivo) && $archivo!="." && $archivo!=".."){
  20.                
  21.                 $lista .= '<br/> '.$archivo.' <input type="checkbox" name="'.$archivo.'" value="1" />';
  22.                
  23.                 echo "<strong>Creando directorio: $dir$archivo</strong><br/>";                
  24.                 agregar_zip($dir.$archivo . "/", $zip);  
  25.  
  26.               //si encuentra un archivo imprimimos la ruta donde se encuentra
  27.               //y agregamos el archivo al zip junto con su ruta
  28.               }
  29.               elseif(is_file($dir.$archivo) && $archivo!="." && $archivo!=".."){
  30.                 echo "Agregando archivo: $dir$archivo <br/>";                                    
  31.                 $zip->addFile($dir.$archivo, $dir.$archivo);                    
  32.               }
  33.             }
  34.             //cerramos el directorio abierto en el momento
  35.             closedir($da);
  36.           }
  37.         }      
  38.       } //fin de la función
  39.  //creamos una instancia de ZipArchive      
  40.       $zip = new ZipArchive();
  41.  
  42.       //directorio a comprimir
  43.       //la barra inclinada al final es importante
  44.       //la ruta debe ser relativa no absoluta      
  45.       $dir = "./";
  46.  
  47.       //ruta donde guardar los archivos zip, ya debe existir
  48.       $rutaFinal="./descargas";
  49.  
  50.       $archivoZip = "directorios.zip";  
  51.  
  52.       if($zip->open($archivoZip,ZIPARCHIVE::CREATE)===true) {  
  53.         agregar_zip($dir, $zip);
  54.         $zip->close();
  55.  
  56.         //Muevo el archivo a una ruta
  57.         //donde no se mezcle los zip con los demas archivos
  58.         @rename($archivoZip, "$rutaFinal$archivoZip");
  59.  
  60.         //Hasta aqui el archivo zip ya esta creado
  61.  
  62.         //Verifico si el archivo ha sido creado
  63.         if (file_exists($rutaFinal.$archivoZip)){
  64.           echo "Proceso Finalizado!! <br/><br/>
  65.                Descargar: <a href='$rutaFinal$archivoZip'>$archivoZip</a>";  
  66.         }else{
  67.           echo "Error, archivo zip no ha sido creado!!";
  68.         }                    
  69.       }
  70.      
  71.     ?>
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #2 (permalink)  
Antiguo 12/10/2014, 15:48
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Recorrer carpeta y elaborar Checkbox con directorios

esta bueno este script
en esta linea deberia modificar:
$lista .= '<br/> '.$archivo.' <input type="checkbox" name="directorios[]" value="'.$archivo.'" />';

lo ves?
en value le envias el directorio COMPLETO para que lo puedas comparar luego
y en la pagina que procesas los checkbox solo tenes que recorrer el array de directorios:

Código PHP:
Ver original
  1. <?
  2. $directorios=(isset($_REQUEST['directorios'])) ? $_REQUEST['directorios'] : array();
  3. foreach($directorios as $directorio){
  4. if(is_dir($directorio)){
  5.     //craer zip
  6. }
  7. }
  8. //enviar zip
  9. ?>

bueno eso seria la logica
  #3 (permalink)  
Antiguo 12/10/2014, 16:02
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Recorrer carpeta y elaborar Checkbox con directorios

Gracias por interesarte en el programa, pero aún no consigo saber donde colocar el código que me has dado, en sí solo tengo ese fichero PHP hay hago la búsqueda y creo el ZIP con los directorios y sus contenidos.

Quiero poder elaborar los checkbox en pantalla y si esta seleccionado q es algo como if(checked == true) que estos se guarden en mi archivo ZIP.

Es lo que no consigo, un saludo!
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #4 (permalink)  
Antiguo 12/10/2014, 16:13
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Recorrer carpeta y elaborar Checkbox con directorios

se supone que esta linea crea el checkbox

$lista .= '<br/> '.$archivo.' <input type="checkbox" name="'.$archivo.'" value="1" />';

tenes que modificarla por esta:

$lista .= '<br/> '.$archivo.' <input type="checkbox" name="directorios[]" value="'.$archivo.'" />';

obviamente todo esto debe estar dentro un formulario:
Código HTML:
Ver original
  1. <form action='procesa_checkbox.php'>
  2. //crear los checkbox
  3. </form>

y en el archivo procesa_checkbox.php va este codigo:

Código PHP:
Ver original
  1. <?
  2.     $directorios=(isset($_REQUEST['directorios'])) ? $_REQUEST['directorios'] : array();
  3.     foreach($directorios as $directorio){
  4.     if(is_dir($directorio)){
  5.         //craer zip
  6.     }
  7.     }
  8.     //enviar zip
  9.     ?>

obviamente tenes que adaptarlo a tu script

Etiquetas: carpeta, checkbox, directorios
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 15:28.