Hola!, ya he buscado en este foro y en otros mas ayuda para el problema que tengo y aunque me he topado con problemas similares al mio no he encontrado una solucion.
Lo que yo quiero es que, a partir de una lista1 "cargada desde una base de datos" pasar algunos de sus elementos a otra lista2 (estos elementos deberan guardarse en otra tabla de la base de datos), encontre un ejemplo en el que se intercambian perfectamente los elementos entre las listas pero estos elementos se dan manualmente no a partir de una Base de datos.
El codigo original que encontre es el siguiente (fue mostrado por JavierB):
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Pasar elementos de una lista a otra</title>
<style type="text/css">
select {width:80px}
</style>
<script type="text/javascript">
<!--
function pasar() {
obj=document.getElementById('sel1');
if (obj.selectedIndex==-1) return;
for (i=0; opt=obj.options[i]; i++)
if (opt.selected) {
valor=opt.value; // almacenar value
txt=obj.options[i].text; // almacenar el texto
obj.options[i]=null; // borrar el item si está seleccionado
obj2=document.getElementById('sel2');
if (obj2.options[0].value=='-') // si solo está la opción inicial borrarla
obj2.options[0]=null;
opc = new Option(txt,valor);
eval(obj2.options[obj2.options.length]=opc);
}
}
-->
</script>
</head>
<body>
<p>
<label for="sel1">Origen:</label>
<select id="sel1" size="5" multiple="multiple">
<option value="1">Uno</option>
<option value="2">Dos</option>
<option value="3">Tres</option>
<option value="4">Cuatro</option>
<option value="5">Cinco</option>
</select>
<label for="sel2"> Destino:</label>
<select name="select" size="5" id="sel2">
<option value='-'>-</option>
</select>
</p>
<input type="button" value="Pasar" onclick="pasar()" />
</body>
</html>
y lo que yo hice fue reemplazar la parte donde se dan los valores de la tabla por los valores de la base de datos, de la siguiente manera:
Original:
Código PHP:
<label for="sel1">Origen:</label>
<select id="sel1" size="5" multiple="multiple">
<option value="1">Uno</option>
<option value="2">Dos</option>
<option value="3">Tres</option>
<option value="4">Cuatro</option>
<option value="5">Cinco</option>
</select>
<label for="sel2"> Destino:</label>
<select name="select" size="5" id="sel2">
<option value='-'>-</option>
</select>
</p>
<input type="button" value="Pasar" onclick="pasar()" />
el reemplazo:
Código PHP:
<select id="sell" size="10" multiple="multiple">
<?php
do {
?>
<option value="<?php echo $row_Recordset1['nombre']?>" ><?php echo $row_Recordset1['nombre']?></option>
<?php
} while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));
$rows = mysql_num_rows($Recordset1);
if($rows > 0) {
mysql_data_seek($Recordset1, 0);
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
}
?>
</select>
</p>
<input type="button" value="Pasar" onClick="pasar()" />
<select name="sel2" size="10" id="sel2">
<option value='-'>-</option>
</select>
y el javascript lo deje igual:
Código:
<script type="text/javascript">
<!--
function pasar() {
obj=document.getElementById('sel1');
if (obj.selectedIndex==-1) return;
for (i=0; opt=obj.options[i]; i++)
if (opt.selected) {
valor=opt.value; // almacenar value
txt=obj.options[i].text; // almacenar el texto
obj.options[i]=null; // borrar el item si está seleccionado
obj2=document.getElementById('sel2');
if (obj2.options[0].value=='-') // si solo está la opción inicial borrarla
obj2.options[0]=null;
opc = new Option(txt,valor);
eval(obj2.options[obj2.options.length]=opc);
}
}
-->
</script>
Obviamente hago la conexion a la base de datos, la primera lista si me muestra los elementos desde la base de datos pero cuando selecciono uno y le doy en "pasar" no hace nada, yo creo que me falta algo en el javascript pero ya he modificado varias veces usando ejemplos de la red y con lo que yo creo que podria necesitar pero no logro que funcione.
Ojala alguien pueda y quiera ayudarme.
Muchas gracias
.