Hola como van miren tengo un problemita con los select multitple y javascript en form para modificar datos de un docente, en donde se puede modificar los carreras q tiene.Lo que quiero hacer es copiar las selecciones de un select1 que se cargan de base de datos a otro select 2 que al inicio tiene la carga de las carreras q tiene asignadas, y eliminarlo de este cuando lo desee mediantes botones agregar y sacar respectivamente, eso funciona perfecto, el problema esta, que quiero que cuando haga un submit y me muestre error de otros datos mal cargados, la lista del select 2 se mantenga como la habia estado creando, por eso quiero copiar las opciones de ese select en una variable tabla que es una matriz porque voy a necesitar hacer eso para varios select multiple,tal q cuando hay submitt se cargue esas opciones, puedo solucionar asiendo update de carreras , y que se cargue de lo q saca de base de datos para las carreras q tiene asignado al docente, pero no quiero eso .Aqui les dejo el codigo
Código PHP:
/********************** Titulos ************************/
echo "<select name='a' id='a' size='6' multiple>";
if($rdo=mysql_query("select * from carreras order by carr_nom") or die("Error en carreras <br>MySQL dice: ".mysql_error()));
while($fila=mysql_fetch_array($rdo))
{
echo "<option value=".$fila['carr_id'].">".$fila['carr_nom']."</option>";
}
echo "</select>";
echo"<img src='imagen/botones/fondodeA+.jpg' alt='agregar' onClick=\"pasar_valores('a','b');copiarSelect('b');\"/>";
echo"<img src='imagen/botones/fondodeA-.jpg' alt='sacar' onClick=\"eliminar_valores('b');copiarSelect('b');\"/>";
echo "<script language='Javascript'>document.write(document.getElementById('a').options[0].text);</script>";
echo "<select name='b' id='b' size='6' multiple>";
if(empty($subDocent))
{
if($rdo=mysql_query("select * from docentes as D left join docentes_carreras as X on D.docent_id=X.docent_id left join carreras as C on X.carr_id=C.carr_id where C.facu_id>0 and D.docent_id=$iddocent") or die("Error en Docentes carreras <br>MySQL dice: ".mysql_error()));
while($fila=mysql_fetch_array($rdo))
{
echo "<option value=".$fila['carr_id'].">".$fila['carr_nom']."</option>";
}
echo "</select>";
}
else
{
echo "</select>";
echo "<script language='Javascript'> document.write(tabla[0].options[0].text);</script>";
echo "<script language='Javascript'> document.write /* probando aaui deberia ir las funcion q muestre las opciones*/(tabla.lenght);</script>";
}
echo "<script language='Javascript'> document.write(tabla[0].options[0].text);</script>";
en javascript
Código HTML:
<script language='Javascript'>
var tabla= Array();
function pasar_valores(de,a)
{
var de = document.getElementById(de);
var a = document.getElementById(a);
for(var i = 0, newOptions=[]; i < de.options.length; i++ )
{
if( de.options[i].selected )
{ newOptions.unshift({name:de.options[i].text,value:de.options[i].value});
}
}
if( newOptions.length > 0 )
{
for(var j = 0, insert = true; j < newOptions.length; j++, insert = true ){
for( var i = 0; i < a.options.length; i++ )
{
if( a.options[i].value == newOptions[j].value )
{
insert = false; break;
}
}
if( insert == true )
{
var newOption = document.createElement('option');
newOption.value = newOptions[j].value;
newOption.text = newOptions[j].name;
if(window.ActiveXObject){a.add(newOption);
}
else{
a.appendChild(newOption);
}
}
}
}
}
function eliminar_valores(de)
{
var de = document.getElementById(de);
for(var i = 0, remove = []; i < de.options.length; i++ )
{
if( de.options[i].selected )
{
remove.unshift(de.options[i]);
}
}
for(var i = 0; i < remove.length; i++ )
{
if(window.ActiveXObject){de.remove(remove[i]);}
else{de.removeChild(remove[i]);}
}
}
function copiarSelect()
{
for(i=0;i<arguments.length;i++)
{
tabla[i]=document.getElementById(arguments[i]);
}
}
</script>