Se trata de un formulario dinámico con tres campos (file - texto - texto), que se puede incrementar al hacer clic en un botón, el resultado se guarda en un array, y posteriormente, hace un upload de los archivos, y graba en una base de datos los nombres.
El caso es que todo funciona correctamente, hace upload, graba, pero no soy capaz de que cuando se envía el campo file en blanco, no se ejecute el resto del programa y vuelva a aparecer el formulario, espero haberme explicado, pongo los dos archivos, el php y el js para incrementar campos, a ver si podeis echarme una manita.
Archivo php:
Código:
Archivo multiupload1.js<?php require("conexion.php"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Documento sin título</title> <script language='javascript' src="multiupload1.js"></script> </head> <body> <h2>Agregar vídeos</h2> <?php if (empty($_FILES["archivos"]["name"])) { ?> <form name="formu" id="formu" action="" method="post" enctype="multipart/form-data"> <fieldset id="fiel"> <input type="file" name="archivos[]" /> <input type="text" name="descripcion[]" /> <input type="text" name="nombre_mostrar[]" /> </fieldset><br /><br /> Para agregar más vídeos haga clic <a href="#" onclick="crear(this)" />AQUÍ</a><br /><br /> <p align="center"><input type="submit" value="Enviar" id="envia" name="envia" /> </form> [<?php } else { $tot = count($_FILES["archivos"]["name"]); for ($i = 0; $i < $tot; $i++){ $direct = "media/videos/"; $nombre = trim(rand() . date('gsidmY') . $_FILES['archivos']['name'][$i]); move_uploaded_file($_FILES['archivos']['tmp_name'][$i], $direct.$nombre); $fecha = date('Y-m-d'); $descripcion = $_POST['descripcion'][$i]; $nombre_mostrar = $_POST['nombre_mostrar'][$i]; $sql="INSERT INTO videos (nombre, fecha, descripcion, nombre_mostrar) VALUES ('$nombre','$fecha', '$descripcion', '$nombre_mostrar')" ; $consulta = mysql_query($sql, $conexion) or die ('No ejecuta'); @unlink($_FILES['archivos']['tmp_name']); } } ?> </body> </html>
Código:
num=0; function crear(obj) { num++; fi = document.getElementById('fiel'); contenedor = document.createElement('div'); contenedor.id = 'div'+num; fi.appendChild(contenedor); ele = document.createElement('input'); ele.type = 'file'; ele.name = 'archivos[]'; contenedor.appendChild(ele); ele = document.createElement('input'); ele.type = 'text'; ele.name = 'descripcion[]'; contenedor.appendChild(ele); ele = document.createElement('input'); ele.type = 'text'; ele.name = 'nombre_mostrar[]'; contenedor.appendChild(ele); ele = document.createElement('input'); ele.type = 'button'; ele.value = 'Borrar'; ele.name = 'div'+num; ele.onclick = function () {borrar(this.name)} contenedor.appendChild(ele); } function borrar(obj) { fi = document.getElementById('fiel'); fi.removeChild(document.getElementById(obj)); }