Tengo un formulario en el que el administrador podrá subir documentos destinados a uno, a varios o a todos los usuarios de un sitio; serán unos 80 estos últimos. Los nombres de los usuarios se toman de la base de datos
A continuación pongo el código de mi formulario:
Código HTML:
<form action="<?php echo $editFormAction; ?>" method="post" name="form4" id="form4" enctype="multipart/form-data"> <table align="center"> <tr valign="baseline"> <td nowrap="nowrap" align="right">Nombre:</td> <td><select name="us_alias" size="10" multiple="multiple"> <?php do { ?> <option value="<?php echo $row_rs_alias_usuario['us_nombre']?>"><?php echo $row_rs_alias_usuario['us_nombre']?></option> <?php } while ($row_rs_alias_usuario = mysql_fetch_assoc($rs_alias_usuario)); $rows = mysql_num_rows($rs_alias_usuario); if($rows > 0) { mysql_data_seek($rs_alias_usuario, 0); $row_rs_alias_usuario = mysql_fetch_assoc($rs_alias_usuario); } ?> </select></td> </tr> <tr valign="baseline"> <td nowrap="nowrap" align="right">Seleccionar documento:</td> <td><input type="hidden" name="MAX_FILE_SIZE" value="1000000" /><input type="file" name="nombre_doc" value="" size="32" /></td> </tr> <tr valign="baseline"> <td nowrap="nowrap" align="right"> </td> <td><input name="bot" type="submit" id="bot" value="Enviar"/></td> </tr> </table> <input name="fechar" type="hidden" value="" /> <input type="hidden" name="MM_insert" value="form4" /> </form>
Pongo a continuación el php que sube los documentos y los coloca en una carpeta:
Código PHP:
//Formulario upload
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form4")) {
/*Codigo w3schools*/
$target_dir = "../_docs_para_usuarios/";
$target_file = $target_dir . basename($_FILES["nombre_doc"]["name"]);
$uploadOk = 1;
$hoy = getdate();
$TipoArchivo = pathinfo($target_file,PATHINFO_EXTENSION);
// Comprueba si el archivo existe
if (file_exists($target_file)) {
echo "Lo sentimos, el archivo ya existe. Renómbrelo y súbalo de nuevo (E1).";
$uploadOk = 0;
}
// Comprueba el tamaño del archivo file size
if ($_FILES["nombre_doc"]["size"] > 1000000) {
echo "Lo sentimos, su archivo es demasiado grande. Sólo documentos de menos de 1MB (E2).";
$uploadOk = 0;
}
// Solo ciertos formatos de archivo
if($TipoArchivo != "jpg" && $TipoArchivo != "jpeg" && $TipoArchivo != "doc"
&& $TipoArchivo != "docx" && $TipoArchivo != "pdf" && $TipoArchivo != "xslx" && $TipoArchivo != "xls" ) {
echo "Lo sentimos solo son permitidos archivos JPG, JPEG, DOC, DOCX, XLS y XSLX (E3).";
$uploadOk = 0;
}
// Chequea si la variable $uploadOk está a 00 por algún error
if ($uploadOk == 0) {
echo "Lo sentimos, su archivo no ha sido subido (E4)";
// si todo va bien se sube el archivo
} else {
if (move_uploaded_file($_FILES["nombre_doc"]["tmp_name"], $target_file)) {
echo "El documento ". basename( $_FILES["nombre_doc"]["name"]). " ha subido correctamente.";
} else {
echo "Lo sentimos, ha sucedido un error en la subida de archivos. Por favor inténtelo de nuevo. (E5)";
}
}
$insertSQL = sprintf("INSERT INTO docs_para_usuarios (us_alias, nombre_doc, fecha) VALUES (%s, %s,now())",
GetSQLValueString($_POST['us_alias'], "text"),
GetSQLValueString($target_file, "text"),
GetSQLValueString($_POST['fechar'], "date"));
mysql_select_db($database_PML2, $PML2);
$Result1 = mysql_query($insertSQL, $PML2) or die(mysql_error());
}
mysql_select_db($database_PML2, $PML2);
$query_rs_alias_usuario = "SELECT us_alias, usuarios_pml.us_nombre FROM usuarios_pml";
$rs_alias_usuario = mysql_query($query_rs_alias_usuario, $PML2) or die(mysql_error());
$row_rs_alias_usuario = mysql_fetch_assoc($rs_alias_usuario);
$totalRows_rs_alias_usuario = mysql_num_rows($rs_alias_usuario);
?>
Gracias una vez más por su atención y ayuda y un saludo