Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/01/2009, 16:26
NSNCxxxx
 
Fecha de Ingreso: agosto-2008
Mensajes: 30
Antigüedad: 15 años, 8 meses
Puntos: 0
copiar select multiples , javascript, update

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>