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.
