Tema: PHp y yii
Ver Mensaje Individual
  #8 (permalink)  
Antiguo 17/02/2014, 13:05
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: valor multiple

Así como $_POST y $_GET son arrays asociativos los cuales pueden contener N datos organizados por los nombres de los campos a los que los valores contenidos pertenecían, con $_FILES también tienes un array asociativo de una cantidad N de archivos que haya cargado el usuario en el input.

Ya que se trata de un array, la inserción de los datos la puedes hacer utilizando un bucle.

Código HTML:
Ver original
  1. <form action = "ejemplo.php" method = "post" enctype = "multipart/form-data">
  2.     Selecciona: <input type = "file" multiple = "multiple" name = "fotos[]" />
  3.     <input type = "submit" value = "Subir" />
  4. </form>

Código PHP:
Ver original
  1. foreach ($_FILES["fotos"]["name"] as $clave => $valor) {
  2.     $nombre = $_FILES["fotos"]["name"][$clave];
  3.     $tmp = $_FILES["fotos"]["tmp_name"][$clave];
  4.     $ruta = "../imagenes/";
  5.    
  6.     //Guardo la imagen en el servidor
  7.     move_uploaded_file($tmp, $ruta . $nombre);
  8.  
  9.     //Guardo el nombre de la imagen en la BD
  10.     mysqli_query($conexion, "INSERT INTO tabla (imagen) VALUES ('$nombre')");
  11. }

Itero en base al array name que se encuentro dentro del array fotos y este dentro del array $_FILES ya que su tamaño se corresponde con la cantidad de archivos subidos, aunque hubiera dado lo mismo si iterábamos sobre otro de los arrays de fotos, tales como type, tmp_name, error o size.

Este es un ejemplo simple, sin embargo, sería mejor si restringieras la subida de determinados tipos de archivo, así como comprobar que no hubo un error en la subida de cada imagen y si ninguna de éstas existe ya en la BD y en el servidor. No olvides colocar los [] en el nombre del input para que pueda ser tratado como un array de imágenes y así puedas iterar.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand