Foros del Web » Programando para Internet » PHP »

Listar carpetas en lista desplegable en php

Estas en el tema de Listar carpetas en lista desplegable en php en el foro de PHP en Foros del Web. Hola a todos. Espero me puedan ayudar. Estoy haciendo un upload con php en una carpeta que tengo en mi servidor y todo va perfecto ...
  #1 (permalink)  
Antiguo 24/02/2009, 13:26
Avatar de vargasrenee  
Fecha de Ingreso: junio-2008
Mensajes: 32
Antigüedad: 15 años, 10 meses
Puntos: 1
Listar carpetas en lista desplegable en php

Hola a todos. Espero me puedan ayudar.

Estoy haciendo un upload con php en una carpeta que tengo en mi servidor y todo va perfecto y lo sube a la carpeta que yo quiero.

Ahora me veo en la necesidad de hacer subdirectorios en dicha carpeta y necesito hacer el upload, pero en este caso una subcarpeta en especifico, para eso tengo un script que me permite listar las carpetas en un menú desplegable, el problema es que no veo la manera de hacer que seleccionando una carpeta del menu desplegable, sea esa la carpeta en donde se guarden los archivos del upload.

Aqui el script del desplegable que me lista las carpetas que tengo
Código PHP:
function listar()
{
echo 
'<select name="lista">';
echo 
'<option>---Selecciona una carpeta--</option>';
$dir opendir("./archivos/");
while(
$listar_d readdir($dir)) 

if (
$listar_d[0] != "." && $listar_d[0] != ".." 
{
echo 
"<option value=\"$listar_d\">$listar_d</option>";
}
}
echo 
'</select>';
closedir($dir);

echo 
'<form action="lee.php" method="post" id="carpeta">';
listar();
echo 
'</form>'

acá el script que me hace el upload
Código PHP:
<?
if($boton) {
    if (
is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
        
copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);
        
move_uploaded_file($_FILES['archivo']['tmp_name'],'archivos/'.$_FILES['archivo']['name']); 
        
$subio true;
    }
    
    if(
$subio) {
        echo 
' Archivo guardado';
    } else {
        echo 
'Archivo no valido';
}
    die();
}
?>
Segun este escritp me lo sube a la carpeta archivos todo bien, ahora, la idea es que me lo suba a la carpeta archivos/subdirectoriolistadoeneldesplagable

Ideas?
  #2 (permalink)  
Antiguo 24/02/2009, 13:35
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Listar carpetas en lista desplegable en php

$HTTP_POST_FILES se usaba en versiones anteriores de PHP, ahora es mas recomendable usar $_FILES.

Para el directorio:
Código php:
Ver original
  1. $subdir = $_POST['lista'];
  2. move_uploaded_file($_FILES['archivo']['tmp_name'],"archivos/$subdir/".$_FILES['archivo']['name']);
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 24/02/2009, 15:06
Avatar de vargasrenee  
Fecha de Ingreso: junio-2008
Mensajes: 32
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Listar carpetas en lista desplegable en php

Triby,

muchas gracias por todo, todo esta funcionando correctamente con esos pequeños pero sustanciales consejos...

Por cierto me olvide de preguntar, ¿alguien sabe cómo le puedo hacer para que mi consulta de los directorios me aparezca en orden alfabetico, ya que me aparece todo revuelto, e incluso saber si hay manera de que sea yo el que decida el orden en que se listan las carpetas en mi menu despegable, gracias!!! de nuevo
  #4 (permalink)  
Antiguo 24/02/2009, 15:37
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Listar carpetas en lista desplegable en php

En vez de hacer echo directamente, carga todos los archivos en una matriz (array), despues los ordenas con asort y, finalmente, recorres nuevamente la matriz, pero esta vez para crear los option dentro del select.
__________________
- León, Guanajuato
- GV-Foto
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 17:51.