Guardar datos Select Multiple.

Tengo un select multiple con n items; no he podido hacer que me recorra ese select multiple y guardar los valores en la tabla
¿Alguien sabe como hacerlo?
Agradezco la ayuda y sugerencias que me puedan brindar.

2 respuestas

Respuesta
1
Si creas un array de alcance global, al cual cada vez que agregas un elemento le agregas a el también, lo mismo cuando quitas y cuando borras todos los elementos, de esta forma tendrías en un array lo elementos que han sido seleccionados, luego los recorres con un for y vas escribiendo un string el cual lo pasaras por la url para poder procesarlo en el destino.
Saludos
Me refiero al tag html <select>
este es mi codigo
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin título</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
function RellenaLista(formulario)
{
obj=document.getElementById('lstLista');
if (obj.selectedIndex==-1) return;
valor=obj.value;
txt=obj.options[obj.selectedIndex].text;
obj.options[obj.selectedIndex]=null;
obj2=document.getElementById('lstRecibe');
opc = new Option(txt,valor);
eval(obj2.options[obj2.options.length]=opc);
}
function BorraUnoLista(formulario)
{
obj=document.getElementById('lstRecibe');
if (obj.selectedIndex==-1) return;
valor=obj.value;
txt=obj.options[obj.selectedIndex].text;
obj.options[obj.selectedIndex]=null;
obj2=document.getElementById('lstLista');
opc = new Option(txt,valor);
eval(obj2.options[obj2.options.length]=opc);
}
</script>
</head>
<body>
<form name="form1" method="post" action="">
<table width="50%" align="center" >
<tr>
<td width="22%" rowspan="4">Producto</td>
<?php
include "conexion.php";
mssql_select_db("Bd") or
print "No se pudo conectar a la Base de datos";
$result = mssql_query("select usu_Cedula, usu_Nombres from Usuarioss order by usu_nombres",$conexion);
mssql_close($conexion);
?>
<td width="32%" rowspan="4"><select name="lstLista" size="6" id="lstLista">
<? $cont =0; while($row=mssql_fetch_array($result))
{
echo "<option value=".$row['usu_Cedula'].">".$row['usu_Nombres']."</option>";
$cont = $cont + 1;
}
?>
</select></td>
<td width="6%"><div align="center">
<input name="btnUnoAde" type="button" id="btnUnoAde" value=">" onClick="RellenaLista('form1');">
</div></td>
<td width="40%" rowspan="4"><select name="lstRecibe[]" size="6" id="lstRecibe">
</select>
<input type="button" name="Submit" value="Botón" onClick="form1.Accion.value='va';submit();">
<input name="Accion" type="hidden" id="Accion">
<input name="Valor" type="hidden" id="Valor"></td>
</tr>
<tr>
<td><div align="center">
<input name="btnUnoAtr" type="button" id="btnUnoAtr" value="<" onClick="BorraUnoLista('form1');">
</div></td>
</tr>
<tr>
<td><div align="center">
<input name="btnTodAde" type="button" id="btnTodAde" value=">>">
</div></td>
</tr>
<tr>
<td><div align="center">
<input name="btnTodAtr" type="button" id="btnTodAtr" value="<<">
</div></td>
</tr>
</table>
<input name="btnCont" type="button" id="btnCont" value="cont" onClick="contador()">
<script language="JavaScript">
function contador()
{
var num='<? echo $cont?>';
for(a=0;a<items.length;a++)
alert(num);
}
</script>
</form>
</body>
</html>
<?php
if($_POST['Accion']=='va')
{echo $cont;
$Var = $_GET['lstRecibe'];
foreach( $Var as $value)
{
echo "item".$value;
}
}
?>
Agradezco de antemano la ayuda que me prestas
Necesito que me aclares una cosa:
Con "select" te refieres a una consulta sql o a el tag html <select>
En cualquier caso, me gustaría que escribas la consulta sql y el código html.
Respuesta
1
Realmente es fácil, lo que debes hacer es un primer ciclo para ir recorriendo cada item del select (guardado en un array o en una base de datos):
Luego dentro del mismo siclo colocas las instrucciones sql de guardar y listo...
Ejemplo:
¿
<? 
$q="select * from especialidades"; 
$res=mysql_query("issemym",$q); 
?> 
<table width="400" border="0" align="center" cellpadding="0" cellspacing="0"> 
<tr> 
<th scope="row"><div align="center"> Buscar por : 
<select name="menu2" class="formula" onChange="MM_jumpMenu('parent',this,0)"> 
<option selected>Especialidad:</option> 
<option>--------------------------------------------------------------</option> 
<? 
while($r=mysql_fetch_array($res)) 
{ 
echo ' 
<option value=" '; echo $r['especialidad']; echo '</option> 
'; 
   //depende si son nuevos registros o es una actualizacion
  //para nuevos registros
mysql_db_query("ejemplo","insert into clientes (especialidad) values ('$especialidad')");
  //para actualizacion
$sSQL="Update Clientes Set telefono='$telefono' Where nombre='$nombre'";
mysql_db_query("ejemplo",$sSQL);
//cierre del ciclo del select
} 
?>
Saludos.
No me explique muy bien.
Tengo dos select multiple:
En uno traigo todos los empleados; ademas tengo 2 botones: 1 para pasar el item escogido de empleados al otro select múltiple, y el otro botón para devolver el item a los empleados.
Quiero mandar a grabar solo los del select múltiple que voy pasando los datos.
Me dijeron que con foreach pero no me funciono.
foreach($_REQUEST['lstRecibe'] as $item=>$valor)
{
echo "item".$valor;
}
Y me sale el error:
Warning: Invalid argument supplied for foreach() in c:\appserv\www\cdi\pruebalista.php on line 120
Agradezco cualquier sugerencia que me puedas brindar.
¿Puedes decirme si el array lstRecibe el bdimensional o sea que tiene clave y valor?
Ejemp: "item1" => "Juan"
Si no es así no puedes utilizar el foreach.
Ensaya la siguiente función para visualizar arrays monodimensionales y almacenarla en nuestra librería
Function mostrar_array ($array)
{
Foreach ($array as $clave=>$valor)
{echo "$clave=>$valor<br>";}
}
Cualquier cosa me cuentas
Bye
Almonato
No me funciono, pero ya le cogí el ritmo; en el select hay que ponerle al name [] ej: lstRecibe[]
y en el php
foreach( $_POST['lstRecibe'] as $valor)
{
echo "item".$valor;
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas