Foros del Web » Programando para Internet » PHP »

Como puedo pasar valores de un select a otro a través de un botón

Estas en el tema de Como puedo pasar valores de un select a otro a través de un botón en el foro de PHP en Foros del Web. La cosa es asi.... imaginense una lista (select múltiple) con servicios de una empresa y el otro con los servicios disponibles con los que puede ...
  #1 (permalink)  
Antiguo 06/05/2004, 01:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 69
Antigüedad: 13 años, 7 meses
Puntos: 1
Como puedo pasar valores de un select a otro a través de un botón

La cosa es asi.... imaginense una lista (select múltiple) con servicios de una empresa y el otro con los servicios disponibles con los que puede contar la empresa...pues bien, como puedo hacer para pasar los valores de una lista a la otra a través del botón... yo pensé en hacer una instrucción y cargar en la de los servicios actuales de la empresa los de ella y en la otra hacer otra consulta de los servicios q hay y comprarlos con los q tiene la empresa a manera d poner solo los q hacen falta..el problema es cuando trato de imaginar como hacer lo del boton..osea pasar un parametro de una lista a la otra...no tengo idea...si me entendieron y saben como hacerlo pleaseeeee help meeee!!! les estaré agradecida miiiiil...

Gracias!
__________________
...::::CaSsiOpEiA::::

"El VaLoR De LaS CoSaS No EsTá En El TiEmPo QuE DuRaN, SiNo En La InTeNsIdAd Con La QuE SuCeDeN...PoR EsO ExIsTeN MoMeNtOs InOLvIdAbLeS, CoSaS InExPLicAbLeS Y PeRsOnAs InCoMpArAbLeS"
  #2 (permalink)  
Antiguo 06/05/2004, 01:29
 
Fecha de Ingreso: septiembre-2003
Mensajes: 248
Antigüedad: 14 años, 3 meses
Puntos: 2
Hola, eso se haria con javascript no con php, mejor pide q trasladen tu post.
saludos
__________________
Jose A
  #3 (permalink)  
Antiguo 06/05/2004, 01:29
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Pues que el boton sea un submit del formulario que grabe en base de datos los elementos seleccionados. Una vez actualizada la base de datos, al recargar la pagina aparecerian en la otra lista.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 06/05/2004, 07:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo que menciona Josemi está con ejemplo en esta FAQ:

http://www.forosdelweb.com/showthrea...999#post664999

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 25/05/2004, 12:27
 
Fecha de Ingreso: mayo-2004
Mensajes: 69
Antigüedad: 13 años, 7 meses
Puntos: 1
Mas dudas

Hola..

Tomé los consejos de to2 pero aun sigue sin salirme..mi codigo es el siguiente..en un select tengo esto

<select multiple size="7" name="lista" style="width:150">
<?php
require("conexion.txt");
$sql= "select * from tservicios";
$result = mysql_query($sql);
$contador= 0;
$registros= mysql_num_rows($result);
mysql_data_seek($result, 0);
while ($contador < $registros){
echo "<option value='".mysql_result($result, $contador, "CveServi")."'> ".mysql_result($result, $contador, "NomServi")."</option><br>";
$contador++;}
?>
</select>

es en el que se llena la base de datos, con la ayuda de uno de ustedes que amablemente me mando un demo de lo de javascript puse esto

<input type="button" value=">>" onClick="move(forma1.lista,forma1.lista2)" class="btn">
</p>
<p>
<input type="button" value="<<" onClick="move(forma1.lista2,forma1.lista)" class="btn" >


lo cual me sirvio para pasar los valores d la lista q tiene todos los servicios de la base de datos al otro select...
pero como lo que debo guardar en la base de datos es lo que tengo en la lista dos ...pues puse un codigo de javascript para q antes de mandar el submit seleccionara todos los items


elem=document.getElementById("lista2").options;
for(i=0;i<elem.length;i++)
elem[i].selected=true;
document.forma1.submit();


y para que ya los guardara en la base de datos hice esto

$abc=$_POST[lista2];
for ($i=0; $i<count($abc); $i++){
$list2 = $abc[$i];


$sql = "INSERT INTO servempresa (CveServi, CveEmpre) VALUES ('$list2', '$CveEmpre')";
$result = mysql_query($sql);
}


pero solo me guarda el primero... creo saber que es por la ausencia de corchetes en el nombre de la lista q es lo que indicaria el array, pero si se los pongo entonces ya no hace lo de javascript.....

Se que suena a trabalenguas...pero espero que me hayan entendido... Estoy desesperada y no se como hacerle...hasta pensé copiar esos items a un select q podria estar x ahi oculto o no sé para q ese ya se llame como debe ser con los corchetes..

Si tienen idea de como solucionarlo ayudenme sip??!!

Gracias de antemano

__________________
...::::CaSsiOpEiA::::

"El VaLoR De LaS CoSaS No EsTá En El TiEmPo QuE DuRaN, SiNo En La InTeNsIdAd Con La QuE SuCeDeN...PoR EsO ExIsTeN MoMeNtOs InOLvIdAbLeS, CoSaS InExPLicAbLeS Y PeRsOnAs InCoMpArAbLeS"
  #6 (permalink)  
Antiguo 25/05/2004, 12:33
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bueno, el problema es que para que PHP considere que es un array, el control del formulario se debe llamar name="lista2[]" , con los corchetes. Pero si le pones ese name, javascript no te lo va a dejar manejar. Ponle un id="lista2" y trabaja siempre en javascript con el id, no con el name.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 25/05/2004, 13:07
 
Fecha de Ingreso: mayo-2004
Mensajes: 69
Antigüedad: 13 años, 7 meses
Puntos: 1
Gracias...Si entiendo..ya lo tenia asi con el id pero no se como mandar a llamarlo en el javascript

input type="button" value=">>" onClick="move(forma1.lista,forma1.lista2)" class="btn">
</p>
<p>
<input type="button" value="<<" onClick="move(forma1.lista2,forma1.lista)" class="btn" >

como sería??

forma1.....???
__________________
...::::CaSsiOpEiA::::

"El VaLoR De LaS CoSaS No EsTá En El TiEmPo QuE DuRaN, SiNo En La InTeNsIdAd Con La QuE SuCeDeN...PoR EsO ExIsTeN MoMeNtOs InOLvIdAbLeS, CoSaS InExPLicAbLeS Y PeRsOnAs InCoMpArAbLeS"
  #8 (permalink)  
Antiguo 25/05/2004, 13:16
 
Fecha de Ingreso: mayo-2004
Mensajes: 69
Antigüedad: 13 años, 7 meses
Puntos: 1
Sonrisa Gracias miiiiiiiiiil

Gracias...ya funcionó , solo le cambié el nombre al id y ya..no tenia que modificar nada mas...mil gracias Josemiiii!!!!

Aplausossss clap clap


saludos
__________________
...::::CaSsiOpEiA::::

"El VaLoR De LaS CoSaS No EsTá En El TiEmPo QuE DuRaN, SiNo En La InTeNsIdAd Con La QuE SuCeDeN...PoR EsO ExIsTeN MoMeNtOs InOLvIdAbLeS, CoSaS InExPLicAbLeS Y PeRsOnAs InCoMpArAbLeS"
  #9 (permalink)  
Antiguo 26/05/2004, 14:26
 
Fecha de Ingreso: mayo-2004
Mensajes: 69
Antigüedad: 13 años, 7 meses
Puntos: 1
Pregunta

Ahora necesito otra pequeña asesoria... pasa que quiero llnear un combo con la base de datos con los servicios con los que cuenta una empresa y en el otro combo solo con los que no tiene la empresa... no se si me explico...para poder interactuar con ambos de agregar y quitarle...pero pues uno tiene q estar en funcion del otro...no sé si puedan ayudarme...lo agradeceria mucho...

este es el codigo del q se llena con los servicios de la empresa

<select multiple size="7" name="lista2[]" id="lista2" style="width:150">
<?php
require("conexion.txt");
$sql= "select * from tservicios, servempresa where tservicios.CveServi = servempresa.CveServi and servempresa.CveEmpre =".$Selectempresa;
$result = mysql_query($sql);
$contador= 0;
$registros= mysql_num_rows($result);
mysql_data_seek($result, 0);
while ($contador < $registros){
echo "<option value='".mysql_result($result, $contador, "CveServi")."'> ".mysql_result($result, $contador, "NomServi")."</option><br>";
$contador++;}
?>
</select>


pero el otro no se como hacerlo...por que se que debe de estar en funcion de los servicios que no tiene este ..

__________________
...::::CaSsiOpEiA::::

"El VaLoR De LaS CoSaS No EsTá En El TiEmPo QuE DuRaN, SiNo En La InTeNsIdAd Con La QuE SuCeDeN...PoR EsO ExIsTeN MoMeNtOs InOLvIdAbLeS, CoSaS InExPLicAbLeS Y PeRsOnAs InCoMpArAbLeS"
  #10 (permalink)  
Antiguo 27/05/2004, 22:32
 
Fecha de Ingreso: mayo-2004
Mensajes: 69
Antigüedad: 13 años, 7 meses
Puntos: 1
Heeeeelp..!!!

Utilizo esta sentencia sql pero como que no la realiza bien, no se que es lo que está fallando .... alguien tiene idea??..se los agradecería miiil

<select multiple size="7" name="lista[]" id="lista" style="width:150">
<?php
require("conexion.txt");

$sql= "select tservicios.NomServi from tservicios INNER JOIN servempresa ON tservicios.CveServi <> servempresa.CveServi where servempresa.CveEmpre =".$Selectempresa;
$result = mysql_query($sql);
$contador= 0;
$registros= mysql_num_rows($result);
mysql_data_seek($result, 0);
while ($contador < $registros){
echo "<option value='".mysql_result($result, $contador, "CveServi")."'> ".mysql_result($result, $contador, "NomServi")."</option><br>";
$contador++;
}
__________________
...::::CaSsiOpEiA::::

"El VaLoR De LaS CoSaS No EsTá En El TiEmPo QuE DuRaN, SiNo En La InTeNsIdAd Con La QuE SuCeDeN...PoR EsO ExIsTeN MoMeNtOs InOLvIdAbLeS, CoSaS InExPLicAbLeS Y PeRsOnAs InCoMpArAbLeS"
  #11 (permalink)  
Antiguo 27/05/2004, 23:03
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
casiopea, podrías decirme que es lo que no funciona en la sentencia?, marca error, los datos no son los correctos? y trata de explicar brevemente que tienes en cada tabla, con gusto te ayudo si está dentro de lo poco que sé...
  #12 (permalink)  
Antiguo 27/05/2004, 23:52
 
Fecha de Ingreso: mayo-2004
Mensajes: 69
Antigüedad: 13 años, 7 meses
Puntos: 1
Sonrisa Gracias por leer el msj

Hola...

Pues no marca error ...pero no arroja los datos que deben ser...mira, las tablas son

tservicios que contiene la CveServi, NomServi y DescServ (clave, nombre y descripcion del servicio respectivamente) y servempresa que es la tabla que vincula a las empresas con su servicio y contiene (CveEmpre y CveServi) ...Lo que tiene que arrojar la sentencia son los nombres de servicios que no tengan la clave de la empresa. Por que tengo dos selects multiples , en uno tengo los servicios de la empresa seleccionada y en el otro los servicios disponibles... lo de la empresa seleccionada si lo hace, nadamás haciendo un select * from servempresa where CveEmpre = $selectempresa... pero la otra que solo debe d tener los que no tenga la empresa seleccionada no lo hace, lo que arroja es por ejemplo si son 3 servicios registrados(alberca, cafeteria, valet parking) en la tabla tservicios y la empresa tiene 2 (alberca y cafeteria) lo que arroja es valet parking, cafeteria, alberca y valet parking...por que lo que hace es mandar los que no coinciden de cada uno osea d alberca y cafeteria y sin embargo nadamás deberia de aparecer valet parking... no sé si me expliqué o te enredé mas..espero que puedas ayudarme por que yo veo la sentencia bien escrita y no le hayo el error...

Gracias de antemano

Salu2
__________________
...::::CaSsiOpEiA::::

"El VaLoR De LaS CoSaS No EsTá En El TiEmPo QuE DuRaN, SiNo En La InTeNsIdAd Con La QuE SuCeDeN...PoR EsO ExIsTeN MoMeNtOs InOLvIdAbLeS, CoSaS InExPLicAbLeS Y PeRsOnAs InCoMpArAbLeS"
  #13 (permalink)  
Antiguo 28/05/2004, 00:57
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
casiopea, según veo esta consulta debe resolverte el problema

"SELECT * FROM tservicios WHERE CveServi NOT LIKE (SELECT tservicios.CveServi FROM tservicios, servempresa WHERE tservicios.CveServi = servempresa.CveServi AND servempresa.CveEmpre = ".$claveDeEmpresa.")";

lamentablemente si estas trabajando con una base de datos que no soporte consultas anidadas, no será posible, y tendrás que hacerlo en dos pasos... primero haces la consulta anidada (la que está entre parentesis), esa consulta anidada te devuelve los servicios que SI están disponibles para la clave de empresa, los guardas en un Array, para luego hacer una consulta enoooooorme donde vas a ir concatenando algo asi:

$consulta = "SELECT * FROM tservicios WHERE CveServi ";
$numClaves = count($claves);
foeach($claves as $in => $clave)
if($in != $numClaves)
$consulta .= "!= ".$clave." AND CveServi ";
else
$consulta .= "!= ".$clave."";

como ves es mas rollo, pero funciona... espero no haberme equivocado en alguna cosilla del código y disculpa la falta de tabulaciones y buenas costumbres de programación :p pero aqui no me funciona bien el teclado...

si te quedan dudas ando por aqui otro rato... un saludo
  #14 (permalink)  
Antiguo 28/05/2004, 00:59
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
ups... en el if dentro del for anidado es algo asi
if($in != ($numClaves - 1))

sorry
  #15 (permalink)  
Antiguo 28/05/2004, 01:11
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
a ver creo que encontré una mejor solución... ya la probé

"SELECT t.* FROM tservicios t LEFT JOIN servempresa s
ON t.cveservi = s.cveservi AND s.cveempresa = '".$selectempresa."' WHERE s.cveservi IS NULL";

saludos y suerte
  #16 (permalink)  
Antiguo 28/05/2004, 01:49
 
Fecha de Ingreso: mayo-2004
Mensajes: 69
Antigüedad: 13 años, 7 meses
Puntos: 1
gracias x responder a pesar de la hr :)

Hola..gracias ahorita estoy intentando con lo que me dijiste.... por cierto..utilizo mysql....
__________________
...::::CaSsiOpEiA::::

"El VaLoR De LaS CoSaS No EsTá En El TiEmPo QuE DuRaN, SiNo En La InTeNsIdAd Con La QuE SuCeDeN...PoR EsO ExIsTeN MoMeNtOs InOLvIdAbLeS, CoSaS InExPLicAbLeS Y PeRsOnAs InCoMpArAbLeS"
  #17 (permalink)  
Antiguo 28/05/2004, 01:59
 
Fecha de Ingreso: mayo-2004
Mensajes: 69
Antigüedad: 13 años, 7 meses
Puntos: 1
Sonrisa Miiiil Gracias!!!!

Mil Graciasssss..!!! me salió con la última, de hecho fué con esa con la primera que probé... de verdad muchisimas gracias clap clap clap

...no sabes por que no salía con el inner join??!!.... digo ya nadamás por curiosidad por que se supone que si debía hacerlo no???...

Salu2
__________________
...::::CaSsiOpEiA::::

"El VaLoR De LaS CoSaS No EsTá En El TiEmPo QuE DuRaN, SiNo En La InTeNsIdAd Con La QuE SuCeDeN...PoR EsO ExIsTeN MoMeNtOs InOLvIdAbLeS, CoSaS InExPLicAbLeS Y PeRsOnAs InCoMpArAbLeS"
  #18 (permalink)  
Antiguo 28/05/2004, 09:01
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
buen dia casiopea, el problema con INNER JOIN es que funciona únicamente cuando los resultados tienen una coincidencia en ambas tablas. Pero tu estás buscando resultados que NO tienen coincidencia (ni siquiera existen) en la tabla de servempresa. Y no creas que esto ya lo sabía, lo acabo de buscar debido a tu pregunta, igual me costó un tiempecillo encontrar la sintaxis de la consulta adecuada, pero lo bueno de esto es que ahora ya lo sabemos los dos :)

Te recomiendo que visites https://aurora.vcu.edu/db2help/db2s0/frame3.htm#jointbl

En general es una referencia de SQL, nos saca de muchos problemas para hacernos la vida mas fácil y así obtener justo los resultados que queremos.

Bueno, por aqui nos seguiremos viendo creo... un saludo y hasta pronto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:26.