Foros del Web » Programando para Internet » PHP »

Recorrer un vector recogido por $_FILES

Estas en el tema de Recorrer un vector recogido por $_FILES en el foro de PHP en Foros del Web. Estoy en un proyecto de insertar varias imagenes a la vez y es la primera vez que hago algo asi y no se muy bien ...
  #1 (permalink)  
Antiguo 05/05/2010, 18:11
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 18 años
Puntos: 5
Recorrer un vector recogido por $_FILES

Estoy en un proyecto de insertar varias imagenes a la vez y es la primera vez que hago algo asi y no se muy bien como hacerlo.

El caso es que con una funcion mezcla javascript y php,puedo aumentar o disminuir imputs tipe file para asi poder subir mas o menos imagenes, entonces el caso es el siguiente.

Imaginemos que subo 5 imagenes a la vez.

<input type="file" name="imagenespequenas[]"/>

Usaria este imput y la variable a enviar seria imagenespequenas[] que viene a ser un vector con las 5 imagenes, que serian

imagen1
imagen2
imagen3
imagen4
imagen5

Bueno, el tema es que no sé como recorrerlo ya que lo recojo con un $_FILES
asi

$imagenespequenas=$_FILES["imagenespequenas"]["name"];
y luego le meto un for asi

for ($i = 0; $i > count($imagenespequenas); $i++){

$imagenespequenas2=$_FILES["imagenespequenas"]["name"][$i];
}

Pero obviamente no funciona por que al recogerlo no esta dentro de un for y no solo coge el primer valor, pero si lo meto dentro del for al recoger los datos, la condicion para parar el bucle no se cumpliria por que esta dentro y no fuera.
Francamente no sé como hacerlo.

Simplemente decirme como mostrar todos los datos de un vector enviado de la forma que puse arriba, es decir con un [] en el name

Si no me explico bien decirmelo e intentaré exponerlo de otro modo.
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333
  #2 (permalink)  
Antiguo 06/05/2010, 00:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 14 años, 5 meses
Puntos: 2236
Respuesta: Recorrer un vector recogido por $_FILES

Para poder recorrer una matriz primero debes conocer su estructura... prueba con:
var_dump($_FILES);

Recorrer $_FILES (como matriz) es mas o menos asi:
Código PHP:
Ver original
  1. for($i = 0; $i < count($_FILES['imagenespequenas']['name']); $i++) {
  2.     $name = $_FILES['imagenespequenas']['name'][$i];
  3.     $tmp_name = $_FILES['imagenespequenas']['tmp_name'][$i];
  4.     $error = $_FILES['imagenespequenas']['error'][$i];
  5.     // Aqui verificas si hay error, si la extension es valida, etc.
  6.     // Despues mueves el archivo temporal a su destino final, guardas info en base de datos, etc.
  7. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 06/05/2010, 05:06
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 18 años
Puntos: 5
Respuesta: Recorrer un vector recogido por $_FILES

Siempre he tenido la duda.

Creo que hay matrices bidimensionales y luego matrices normales.
Pero mi duda es que diferencia hay entre una matriz y un vector, por que igual lo que yo llamo vector es una matriz

Yo llamo vector a algo asi.
Código PHP:
$pro_nombres=array("PROYECTOR ACER X110"
                    
"LECTOR LIBROS 6 NEGRO"
                    
"SAMSUNG. NP N140"
                    
"HANNS G TFT 18.5",
                     
"HD SATA300 500GB",
                     
"TORRE ATX NOX COOLBAY 
o a algo asi

Código PHP:
$noticias[1]="El ministro del Interior, Alfredo Pérez Rubalcaba, ha nombrado al teniente general Cándido Cardiel Ojer, natural de la localidad zaragozana de Luesia, nuevo director adjunto operativo de la Guardia Civil, en sustitución de José Manuel García Varela, que ha pasado a la situación de retiro. <a href=http://www.heraldo.es/noticias/nacional/41ff6_el_zaragozano_candido_cardiel_director_operativo_guardia_civil.html>Ver noticia completa</a>";
$noticias[2]="El director de Greenpeace en España, que regresa hoy a Madrid, se reafirma en su acción de protesta. Volvería a hacerlo una y mil veces, asegura en una rueda de prensa a bordo del Rainbow Warrior.";
$noticias[3]="El comisario de Transportes respalda la postura de España, que plantea que no se instalen esos dispositivos de seguridad en los aeropuertos europeos hasta que los Estados miembros no acuerden una norma válida en todo el territorio de los Veintisiete.";
$noticias[4]="Barcelona competirá con la candidatura Zaragoza-Pirineos para acoger los Juegos de Invierno de 2022      Últimas noticias AragonDigital.es     El alcalde de Barcelona, Jordi Hereu, ha anunciado que su ciudad aspira a los Juegos Olímpicos de Invierno del año 2022. La candidatura es conjunta con los Pirineos. El proyecto contempla que la ciudad albergue las ceremonias de inauguración, clausura y entrega de medallas, siendo las competiciones en los Pirineos.     
"
;
$noticias[5]="Zaragoza.- La multinacional aragonesa SAICA, líder del reciclaje en España, invertirá 320 millones de euros en la instalación de un nuevo centro de producción de papel reciclado en Manchester que será denominado MP11. La construcción de la nueva planta, que será una de las más innovadoras y tecnológicamente avanzadas de Europa, se iniciará en los próximos días, si bien ya durante el año pasado comenzaron los trabajos de excavación en el lugar sobre el que Saica edificará la nueva fábrica dentro del parque industrial de Partington Wharfside. Esta nueva planta tiene prevista su puesta en marcha en Febrero de 2012."
De hecho me lo enseñaron asi y no trabajo con otra cosa, por favor aclarame si eso es una matriz o un vector por que como digo yo trabajo con esto, nunca he usado matrices bidimensionales.

Y volviendo al origen del tema.

Realmente este es todo el codigo que he usado para insertar varios campos a la vez, que tampoco difiere mucho del anterior.

Código PHP:
$imagenespequenas=$_FILES["imagenespequenas"]["name"];
   for (
$i 0$i count($imagenespequenas); $i++){
   
    
$imagenespequenas2=$_FILES["imagenespequenas"]["name"][$i];
    echo 
$imagenespequenas2;
         
$tmp_name $_FILES["imagenespequenas"]["tmp_name"][$i];

        
$name $_FILES["imagenespequenas"]["name"][$i];
        
        
$sql="INSERT INTO imagenes (nombre_imagen) VALUES ('".$imagenespequenas2."') ";
   echo 
'<br />';
    echo 
$sql;
                  
$consulta mysql_query($sql$conexion);
        } 
Lo de imagenespequenas2, lo puse por si funcionaba asi,pero me es igual poner o quitar el 2.

Pero bueno, ese es mi codigo, yo ahora no pretendo que me resolvais el codigo entero, quiero saber lo que dije antes, como leer una matriz o vector(lo que sea), que tenga varios campos.

Como dije enviamos imagenespequenas[]

Y solo quiero mostrar ese contenido, si el contenido es
magen1
imagen2
imagen3
imagen4
imagen5
quiero que me lo muestre pero sin embargo usando el metodo mio y el que pones tu solo me hace esto

Imagen1

He usado el var_dump y me pone esto

array(1) { [0]=> string(21) "02 - Angel heart .jpg" }
Cuando seria un array(2) minimo
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333

Última edición por neoarcangel; 06/05/2010 a las 05:17
  #4 (permalink)  
Antiguo 07/05/2010, 00:52
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 14 años, 5 meses
Puntos: 2236
Respuesta: Recorrer un vector recogido por $_FILES

Array = matriz = arreglo = vector... etc., son solamente terminos para referirse a lo mismo.

Haz el var_dump() con $_FILES, directamente, sin especificar indice para que veas la estructura completa y pruebes el codigo que te sugeri en el mensaje anterior.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 08/05/2010, 20:23
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 18 años
Puntos: 5
Respuesta: Recorrer un vector recogido por $_FILES

El tema del var_dump, lo he hecho fuera y dentro del bucle a ver si cambiaba algo, pero me sale el mismo resultado, es decir

array(1) { [0]=> string(7) "01.jpeg"}

como si solo pudiese leer la primera imagen que metes, lo he hecho asi.

var_dump=($_FILES["imagenespequenas"]["tmp_name"]);

y como te digo el resultado es ese

array(1) { [0]=> string(7) "01.jpeg"}

Ademas he probado tu codigo, y lo mismo, solo coge la primera imagen.

Por cierto, para que vale exactamente esta linea?

$error = $_FILES['imagenespequenas']['error']
le he hecho un echo y me sale un "0",

¿Eso quiere decir que el codigo esta bien?

Por cierto, para generar los campos input en el formulario dinamicamente utilizo el codigo de esta página, que me recomendaron

http://www.cristalab.com/tips/subir-...n-php-c32381l/
__________________
Mi equipo

Gigabyte GA-MA770T-UD3P Socket AM3|OZC StealthxStream 600 w | Gigabyte Radeon HD 4770 512MB GDDR5| AMD Phenom II 945 X4 Quad Core 3.0Ghz| Memoria Kingston 6GB DDR3 1333

Etiquetas: files, recorrer, vectores
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 20:30.