Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/06/2015, 04:20
Avatar de MariaLSS
MariaLSS
 
Fecha de Ingreso: abril-2015
Ubicación: Madrid
Mensajes: 53
Antigüedad: 9 años
Puntos: 2
Selección múltiple en formulario que actualiza base de datos

Hola de nuevo y gracias en primer lugar por leer el tema y, quizá orientarme en su solución.

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">&nbsp;</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> 
El formulario funciona y me sube los archivos... pero a condición de que no seleccione más de un usuario en el menú. Y claro, necesito poder incluir en la base de datos todos los nombres de los usuarios a los que se haya incluido en la selección para que luego, cuando abran sesión, puedan ver en una tabla de resultados los documentos que el administrador ha querido compartir con ellos.

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);
?> 
Finalmente, aclarar que soy torpe con PHP y que todo lo que hago es con Dreamweaver CS6.

Gracias una vez más por su atención y ayuda y un saludo
__________________
Con dedicación, las pequeñas cosas crecen