Foros del Web » Programando para Internet » PHP »

Utilziar Foreach para un formulario con archivos

Estas en el tema de Utilziar Foreach para un formulario con archivos en el foro de PHP en Foros del Web. Buenas... mi consulta es la siguietne, espero que me puedan ayudar a resolverla! La cuestion es asi: yo tengo un formulario donde se ingresan proyectos ...
  #1 (permalink)  
Antiguo 29/10/2008, 12:13
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 7 meses
Puntos: 1
Utilziar Foreach para un formulario con archivos

Buenas... mi consulta es la siguietne, espero que me puedan ayudar a resolverla!

La cuestion es asi: yo tengo un formulario donde se ingresan proyectos de investigacion, y donde cada proyecto puede tener X cantidad de imagenes. Para eso, utilizo una funcion con javascript de "Agregar Img", donde se agrega un cuadro de Archivo al formulario por cuantas imagenes tenga el proyecto.

Ahora, la pagina que recibe los resultados tiene el siguiente codigo.

Código PHP:
foreach($_FILES['archivos']['name'] as $nombre
        { 
$id md5(uniqid(rand(), true));
        
$extsubstr(strrchr($nombre"."),1);
        
$nvo$id.".".$ext;
        
$ruta"imagenes/".$nvo
        
move_uploaded_file($_FILES['archivos']['tmp_name'], $ruta);
        
$insert "INSERT INTO imagenes (ruta) VALUES ('$nvo')";
mysql_select_db($database_conntrio$conntrio);
$Result1 mysql_query($insert$conntrio) or die(mysql_error());
        } 
Lo que INTENTE hacer es por cada cuadro de archivo que halla, moverlo a una carpeta predeterminada (previa creacion de un ID unico para dicha imagen, y que será guardad con el ID como nombre, mas la extension), y luego insertar ese registro en una tabla de mi BD. (con el mismo ID

El insert lo hace perfectamente: si escojo 3 imaganes, me crea 3 registros en la tabla. Ahora, lo que no logro que funcione es el move_upload. Los archivos no son guardados correctamente en la ruta indicada, de hecho... no son guardados en absoluto.

Alguna idea? Alguna ayuda? Algun consejo?

Cualquier ayuda/idea para mejorar el codigo, o lo que sea para que funcione, bienvenido sea!

Muchas gracias a todos por su ayuda!!!

Pablo.
  #2 (permalink)  
Antiguo 29/10/2008, 12:22
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Utilziar Foreach para un formulario con archivos

:P Es mejor usar un FOR.

Aqui te doy un ejemplo:

Código php:
Ver original
  1. //Cuento el numero de elementos en el array $_FILES['archivos']['name']
  2. $num = count($_FILES['archivos']['name']);
  3. for($i=0; $i<$num; $i++)
  4. {
  5.     move_uploaded_file($_FILES['archivos']['tmp_name'][$i], $_FILES['archivos']['name'][$i]);
  6. }
  #3 (permalink)  
Antiguo 29/10/2008, 12:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Utilziar Foreach para un formulario con archivos

me parece que tienes problemas... (conceptuales, quiero decir)

en primer lugar el name del <input/> debe ser del tipo array
luego, si... $_FILES es un array (de hecho) pero aun tiene mas arrays dentro cuando son arrays lo que recibe...

Código:
<input type="file" name="foo[]"/>

...

<?php
print_r($_FILES);
?>
ya hiciste un print_r/var_dump de $_FILES cuando recibes el formulario???

algún otro dato, pusiste el enctype del formulario???

quizá estas omitiendo algo
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 29/10/2008, 13:03
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Utilziar Foreach para un formulario con archivos

Gracias ronruby... utilice tu solucion y me salio a la perfeccion...

Se nota que no estoy muy familiarizaco con los arrays.... y me sonaba que era mas util el foreach (para cada uno... :P), y entonces lo hice asi ..

pero bueno, ahora esta completamente en funcionamiento!!

Muchas gracias... cualquier cosa, pregunto nuevamente... pero creo que esto es todo.. gracias!
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 09:11.