quisiera saber si me pueden ayudar con un problema que tengo al realizar un uploader de imagenes con un FileInput y dos Select para realizauna insercion en una tabla de de acuerdo a las imagenes seleccionadas en el input y de acuerdo a la categoria y año a la que pertenecen pero solo eh logrado guardar el arreglo de imagenes que contiene el input pero no logro mandar los datos de los Select/combobox para que se inserten en la tabla, el codigo que estoy utilizando es el siguiente:
Index.html
Código HTML :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Inicio</title> <script src = "JS/jquery-1.12.0.min.js"></script> <script src = "JS/script2.js"></script> <link rel="stylesheet" type="text/css" href="CSS/principal.css"> </head> <body> <h1>Subir Multiples Archivos</h1> <div class = "message" id = "message"></div> <label>Subir Archivo: </label> <input type = "file" multiple = "multiple" id = "files"> <label>__Elige Categoria:___</label> <select name="Categoria" size="1" id = "Categoria"> <option value="CONFERENCIAS">CONFERENCIAS</option> <option value="EVENTOS VARIOS">EVENTOS VARIOS</option> <option value="FIN DE AÑO">FIN DE AÑO</option> <option value="PEREGRINACION">PEREGRINACION</option> <option value="OTROS">OTROS</option> <option value="VOLEIBOL">VOLEIBOL</option> </select> <label>___Elige Año:___</label> <select name="Año" size="1" id = "Año"> <option value="2013">2013</option> <option value="2014">2014</option> <option value="2015">2015</option> <option value="2016">2016</option> <option value="2017">2017</option> </select> <button id = "enviar">Subir</button> </div> </body> </html>
script JS/jQuery funcion que recibe los elementos enviados desde el input y los Select
Código Javascript :
//Inicializamos la funcion $(function() { $("#enviar").click(SubirFotos); //Captura de archivos }); function SubirFotos() { var archives = document.getElementById('files');//creamos objeto con el elemento que contiene los archivos var archive = archives.files;//se obtienen los archivos seleccionados en el input //se crea una instancia para el FormData var archives = new FormData(); //se crea un ciclo que recorra el arreglo para otener todos los archivos seleccionados for(i = 0;i<=archive.length;i++) { archives.append('archive' + i,archive[i]);//se añade cada archivo al aareglo con un indice distinto } //Ejecucion funcion Ajax jQuery $.ajax({ url: "subir.php",//urk a la que se enviaran los Archivos type: "POST",//Metodo para enviar Archivos contentType: false,//debe de estar en falso para que los datos pasen sin ser procesados data: {archives, categoria:cat, Año:ano},//se crea el objeto con los archivos processData: false,//Debe de estar en False para que jQuery no procese los datos cache: false//esto es para que el formulario no guarde cache }).done(function(msg) { MensajeFinal(msg); }); function MensajeFinal(msg) { $('.message').html(msg);//se le inserta el mensaje en formato html $('.message').show('slow');//muestra el DIV que contiene el mensaje } }
Subir.php
Código PHP :
<?php include("RECURSOS/PAGINAS/conexion.php"); $ruta = "RECURSOS/IMAGENES/";//se declara la ruta donde se almacenaran los archivos $mensaje = "";//variable que almacena el resultado de las operaciones $categoria = $_POST['Categoria']; $Ano = $_POST['Año']; $date = @date("Y-m-d H:i:s"); $v = $_FILES; foreach ($v as $key)//creamos una iteracion para los archivos enviados { if($key['error'] == UPLOAD_ERR_OK )//si el archivo se cargo correctamente continuamos con el proceso { $name = $key['name'];//Obtenemos el nombre original del Archivo $tmpname = $key['tmp_name'];//Obtenemos la ruta original del Archivo $tpfile = $key['type'];//obtenemos el tipo de archivo $rutaDest = $ruta.$name;//Creamos la ruta destino con el Nombre original move_uploaded_file($tmpname, $rutaDest); //Movemos el archivo temporal a la nueva ruta $data = mysql_escape_string($name); $query = "SELECT DESC_DOC,TP_DOC,CAT_DOC,ANO_DOC FROM TB_DOCS WHERE DESC_DOC = '".$data."'"; $duplicate = mysql_query($query); if(mysql_num_rows($duplicate) > 0) { $mensaje .= '=> El Archivo <br>'.$name.' </br> ya Existe'; } else { echo $data; $sql ="INSERT INTO TB_DOCS (DESC_DOC,TP_DOC,CAT_DOC,ANO_DOC,DATE_UPLOAD)VALUES ('$data','$tpfile','$categoria','$Ano','$date')"; echo $sql; $resultado = mysql_query($sql); } } if($key['error'] == '')//Si no existe un error se retorna un mensaje de satisfaccion { $mensaje .= '=> El Archivo <br>'.$name.' </br> Ha sido subido correctamente'; } if ($key['error'] != '')//Si existe un error se retorna un mensaje de error { $mensaje .= '=> El Archivo <br>'.$name.' </br> No se ha sido subido correctamente'; } } echo $mensaje;//Se retornan los mensajes ?>
Basicamente esos serian mis archivos pero aun no logro mandar los datos de los Select con el boton de enviar solo los archivos que contiene el input, espero y me puedan auxiliar con este inconveniente y una disculpa si no estoy en la seccion correcta del foro.