Foros del Web » Programando para Internet » PHP »

Duda con arrays y $_FILES en formulario

Estas en el tema de Duda con arrays y $_FILES en formulario en el foro de PHP en Foros del Web. Buenas, No sé cómo hacer lo que a continuación explico, espero que como siempre habéis hecho me indiquéis el camino a seguir. Tengo un formulario ...
  #1 (permalink)  
Antiguo 14/01/2006, 14:44
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 12 años, 5 meses
Puntos: 1
Duda con arrays y $_FILES en formulario

Buenas,

No sé cómo hacer lo que a continuación explico, espero que como siempre habéis hecho me indiquéis el camino a seguir.

Tengo un formulario que pregunta si se quiere o no subir alguna foto al servidor, y en caso afirmativo pide que se indique el número de fotos a subir.

Código PHP:
print<<<_FOTOS_
    <form action="insertar_fotos.php" method="POST" name="formu_fotos">
    <table>
    <th colspan="2">¿Desea insertar alguna imagen?</th>
    <tr><td>Sí <input type="radio" name="fotos" value="si"></td><td>¿Cuántas fotos? <select name="num_fotos">
_FOTOS_;

for (
$i=1$i<11$i++) {
    print 
"<option value=\"$i\">" $i "</option>";
}
print<<<_FOTOS2_
    </select></td>
    <tr><td>No <input type="radio" name="fotos" value="no"></td></tr>
    <th colspan="2"><input type="submit" value="continuar"></th>
    <input type="hidden" name="REF" value="$REF">
    </form>
    </table>
_FOTOS2_;
// $REF es un campo de otra parte del formulario, más abajo explico para qué lo utilizo 
En insertar_fotos.php recibo los valores del formulario. En caso de que se quieran enviar las fotos imprimo tantos inputs type="file" como fotos se quieran subir:

Código PHP:
$fotos addslashes($_POST['fotos']);
    
$num_fotos addslashes($_POST['num_fotos']);
    
$REF addslashes($_POST['REF']);        
    
    
    
//Si ha elegido que no quiere insertar fotos
    
if ($fotos == 'no') {
        print 
'El proceso de inserción se ha completado satisfactoriamente.Recuerde que más adelante usted puede insertar imágenes para este inmueble desde el panel de administrador. <a href="http://127.0.0.1/proyecto">Volver a la zona de administración</a>';
    
//En caso de que quiera insertar fotos
    
} else {
        
//Creamos un directorio donde guardar las imágenes con el nombre de la referencia
        
mkdir("E:/Archivos de Programa E/EasyPHP1-8/www/proyecto/fotos/$REF"0777);
        
//imprimimos tantos inputs tipo "file" como número de fotos
        //se haya seleccionado en la página anterior
        
print "<form method=\"POST\" action=\"fotos_final.php\">";
        for (
$i 0$i $num_fotos$i++) {
            print 
"<input type=\"file\" name=\"foto[]\"><br>";
            }
        print 
'<input type="submit" value="Subir fotos"></form>';
    } 
Como veréis creo un array que contiene los datos de las imágenes ,pero el problema viene ahora. Me hago un lío con los array que tengo entre manos. porque tengo que utilizar valores de $_FILES con un foreach que me permita ejecutar para cada uno la función para subir las imágenes:
Código PHP:
function subir($conexion_ftp$destination_file$source) {   
    
// subir el archivo
    
$upload ftp_put($conexion_ftp$destination_file$sourceFTP_BINARY);

Es que no se me ocurre cómo hacer un foreach que me haga con cada elemento del array algo así:
Código PHP:
if ($_FILES['foto']['size']< $max_size) {
subir ($conexion_ftp$_FILES['foto']['name'], $_FILES['foto']['tmp_name']);

Espero haberme explicado bien.

Sé que es un problema de concepto. No soy ningún experto, estoy haciendo mis pinitos en PHP, avanzando gracias a la información que encuentro en la red y a todos vosotros, pero esto se me escapa de las manos.

Una solución que ya tengo es subir foto por foto , pero seguro que alguien puede "indicarme el camino de la Fuerza". Bueno, muchas gracias de antemano

Saludos
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
  #2 (permalink)  
Antiguo 14/01/2006, 14:48
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
Puedes consultar Envío de multiples ficheros

lo que deberías hacer...
Código PHP:
for ($a=0;$a<count($_FILES['foto']['name']);$a++) {
  
subir ($conexion_ftp$_FILES['foto']['name'][$a], $_FILES['foto']['tmp_name'][$a]);

  #3 (permalink)  
Antiguo 17/01/2006, 05:37
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 12 años, 5 meses
Puntos: 1
Muchas gracias por la información, Seppo. Este fin de semana me pondré con el código y postearé qué tal ha ido.

Saludos !
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
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 05:51.