tengo un dilemilla k no me resulta la solucion y necesito k me ayuden, me urge un poko...
Problem: Tengo tres Lista menus (<input select>) y sucede k necesito k al seleccionar el primer valor me despliegue el segundo de acuerdo al seleccionado anteriormente... y k al seleccionar el segundo valor del segundo select me despliegue el tercer select PERO dependiendo del select 1 y el select 2 seleccionado... osea k para el despliegue del tercer select necesito pasar los valores del uno y dos... pero no me resulta por k los valores se reemplazan... hay una forma de mantener el primer valor en una variable auxiliar y k cuandfo se reemplace no lo haga para el auxiliar...?????
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Código:
--------------------------------------------------------------------------MZ11.PHP <?php function generaSelect() { $msconnect = mssql_connect("xxx", "xxx", "xxx") or die("No se pudo conectar con el servidor!!!"); $sql5 = mssql_query("select codigo,descripcion from gen_tabcod where empresa='001' and tipo='con_ccosto'",$msconnect); // PRIMER SELECT echo "<select class='combo' id='select_1' name='select_1' onChange='cargaContenido(2,1)'>"; //PASO PRIMER VALOR echo "<option value='0'>Elige</option>"; while($registro=mssql_fetch_row($sql5)) { echo "<option value='".$registro[0]."'>".$registro[0]." - ".$registro[1]."</option>"; } echo "</select>"; } ?> <html> <head> <style type="text/css"> .punteado { border-style:dotted; border-color:#000000; background-color:#EAEAEA; font-family:Verdana; font-size:10px; text-align:center; } .combo { font-family:Verdana; font-size:10px; border-color:#CCCCCC; } .style4 {border-style: dotted; border-color: #000000; background-color: #EAEAEA; font-family: Verdana; font-size: 10px; text-align: center; color: #000000; font-weight: bold; } </style> <script language="javascript" type="text/javascript"> function cargaContenido(selectACargar,cargar) { //RECIBO DOS VALORES PARA PODER MANTENER EL VALOR DEL PRIMER SELECT Y EL SGUNDO // Recibo el número correspondiente al combo que se debe llenar de datos var selectAnterior=selectACargar-1; // Obtengo el número del combo que activó el evento onChange var cargar=selectAnterior; // Extraigo el valor del combo que se ha cambiado var valor=document.getElementById("select_"+selectAnterior).options[document.getElementById("select_"+selectAnterior).selectedIndex].value; var elemento; if(valor!=0) { ajax=nuevoAjax(); // Envio al servidor el valor seleccionado y el combo al cual se le deben poner los datos ajax.open("GET", "mz11.php?seleccionado="+valor+"&select="+selectACargar+"&select1="+cargar, true); //PASO VARIABLES POR URL ajax.onreadystatechange=function() { if (ajax.readyState==1) { // Mientras carga elimino la opcion "Elige" y pongo una que dice "Cargando" elemento=document.getElementById("select_"+selectACargar); elemento.length=0; var opcionCargando=document.createElement("option"); opcionCargando.value=0; opcionCargando.innerHTML="Cargando..."; elemento.appendChild(opcionCargando); elemento.disabled=true; } if (ajax.readyState==4) { // Coloco en la fila contenedora los datos que recivo del servidor document.getElementById("fila_"+selectACargar).innerHTML=ajax.responseText; } } ajax.send(null); } /* Colocamos mediante los whiles los selects en "Selecciona opción..." cuando el select anterior ha quedado en estado "Elige" */ var x=1, y=null; while(x<=2) { valor=document.getElementById("select_"+x).options[document.getElementById("select_"+x).selectedIndex].value; if(valor==0) { while(x<=2) { y=x+1; elemento=document.getElementById("select_"+y); elemento.length=0; var opcionSelecciona=document.createElement("option"); opcionSelecciona.value=0; opcionSelecciona.innerHTML="Selecciona opción..."; elemento.appendChild(opcionSelecciona); elemento.disabled=true; x++; } } x++; } } </script> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Ejemplo</title> </head> <body> <center> <table border="1" width="634" style="border-style:none;"> <tr> <td class="style4">Centro de Costo</td> <td class="punteado"><?php generaSelect(); ?></td> </tr> <tr> <td class="style4">Item</td> <td id="fila_2" class="punteado"><select class="combo" disabled="disabled" id="select_2" name="select_2"> <option id="valor_defecto" value="0">Selecciona opción...</option> </select></td> </tr> <tr> <td width="167" class="style4">SubItem</td> <td id="fila_3" width="233" class="punteado"><select class="combo" disabled="disabled" id="select_3" name="select_3"> <option id="valor_defecto" value="0">Selecciona opción...</option> </select></td> </tr> </table> </center> </body> </html>
--------------------------------------------------------------------------
Código:
EJEMPLO:MZ11.PHP <?php $valor=$_GET["seleccionado"]; $selectACargar=$_GET["select"]; $ccosto=$_GET["select1"]; //if(validaEntrada($valor, $selectACargar)) //{ // // Si el numero corresponde a un codigo de pais valido paso a procesar $conexion = mssql_connect("Flex", "flexline", "flexline") or die("No se pudo conectar con el servidor!!!"); if($selectACargar==2){ // Genero la consulta trayendo todos los estados que correspondan al codigo de pais elegido $consulta = mssql_query("select distinct s.cod_item,u.descripcion from con_asociacc s, gen_tabcod u where s.cod_ccosto='$valor' and s.empresa='001' and u.tipo='con_item' and s.empresa=u.empresa and u.codigo=cod_item order by descripcion",$conexion); $aux=$ccosto; } if($selectACargar==3){ // Genero la consulta trayendo todos los estados que correspondan al codigo de pais elegido $consulta = mssql_query("SELECT distinct a.cod_subitem, b.descripcion FROM con_asociacc a join gen_tabcod b on b.codigo=a.cod_subitem WHERE a.empresa='001' and b.empresa='001' and b.tipo='GOL_SUBITEM' order by b.descripcion",$conexion);} //mssql_close($conexion);and a.cod_item='$itemgasto' and a.cod_ccosto='$valor' /////////////////////////////////////// if($selectACargar==2) echo "<select class='combo' onChange='cargaContenido(3,$aux)' id='select_$selectACargar' name='select_$selectACargar'>"; //NEVIO EL VALOR DEL PRIMER SELECT Y EL "SUSPUESTO VALOR DEL SELECT DOS K NO ME FUNCIONA" else echo "<select class='combo' id='select_$selectACargar' name='select_$selectACargar'>"; echo "<option value='0'>Elige</option>"; while($registro=mssql_fetch_row($consulta)) { // Paso a HTML acentos y ñ para su correcta visualizacion $registro[1]=htmlentities($registro[1]); // Imprimo las opciones del select echo "<option value='$registro[0]'>$ccosto ($valor) $registro[0] - $registro[1]</option>"; } //$ccosto $valor echo "</select>"; //}//////////////////////////////////////////////////////////// ?>
select 1: cod: 1230 - planeta tierra
select 2: cod: 1230 - cod2: 56 - Pais Chile
select 3: cod: 1230 - cod2: 56 - cod3: 06 Ciudad Santiago
como veran al pricipio paso una variable y despues dos para ejecutar el ultimo select.
GRACIAS DE ANTEMANO.... ESPERO K ME AYUDEN ;)