Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/01/2011, 05:31
dinfantevegas
 
Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Guardar valor select dependientes

Buenas,

Estoy intentando modificar un select dependiente de 3 niveles para que me guarde los valores de los select elegidos (si se utilizan) en variables. Seguro que es facil pero mis conocimientos son muy limitados. Os dejo a continuación el codigo:

Lo que una vez escogido el primer select, el segundo o el tercero al dar alboton de IR del select me lo redirija a una pagina o otra de mi web.

<?php

function generaSelect()
{
$consulta=mysql_query("SELECT id, opcion FROM select_1");

echo "<select name='select1' id='select1' style='background-color: #CCC;' onChange='cargaContenido(this.id)'>";
echo "<option value='0'>Elige una opcion</option>";
while($registro=mysql_fetch_row($consulta))
{
echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
}
echo "</select>";
}


?>


<form action="XXXXX".php" method="post" target="_blank">

<div id="demo" style="width: 540px; height:auto">

<div id="demoboton">
<input type="submit" value="IR" />
</div>

<div id="Der">

<select disabled="disabled" name="select3" id="select3">
<option value="0">Selecciona opci&oacute;n...</option>
</select>

</div>

<div id="Med">

<select disabled="disabled" name="select2" id="select2" style="background-color:#CCC; list-style-type:lower-alpha; width:auto; text-align: center; display:marker;">
<option value="0">Selecciona opci&oacute;n...</option>
</select>

</div>

<div id="Izq">
<?php generaSelect(); ?>
</div>

</div>
</form>


------ select_dependiente.js------

function nuevoAjax()
{

var xmlhttp=false;
try
{

xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E)
{
if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
}
}
return xmlhttp;
}


var listadoSelects=new Array();
listadoSelects[0]="select1";
listadoSelects[1]="select2";
listadoSelects[2]="select3";



function buscarEnArray(array, dato)
{

var x=0;
while(array[x])
{
if(array[x]==dato) return x;
x++;
}
return null;
}

function cargaContenido(idSelectOrigen)
{

var posicionSelectDestino=buscarEnArray(listadoSelects , idSelectOrigen)+1;

var selectOrigen=document.getElementById(idSelectOrige n);

var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;

if(opcionSeleccionada==0)
{
var x=posicionSelectDestino, selectActual=null;

while(listadoSelects[x])
{
selectActual=document.getElementById(listadoSelect s[x]);
selectActual.length=0;

var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Opci&oacute;n...";
selectActual.appendChild(nuevaOpcion); selectActual.disabled=true;
x++;
}
}

else if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
{

var idSelectDestino=listadoSelects[posicionSelectDestino];
var selectDestino=document.getElementById(idSelectDest ino);

var ajax=nuevoAjax();
ajax.open("GET", "select_dependientes_proceso.php?select="+idSelect Destino+"&opcion="+opcionSeleccionada, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{

selectDestino.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;
}
if (ajax.readyState==4)
{
selectDestino.parentNode.innerHTML=ajax.responseTe xt;
}
}
ajax.send(null);
}
}



------select_dependientes_proceso.php--------

<?php require_once('Connections/XX.php'); ?>

<?php

$listadoSelects=array(
"select1"=>"select_1",
"select2"=>"select_2",
"select3"=>"select_3"
);

function validaSelect($selectDestino)
{

if(isset($listadoSelects[$selectDestino])) return true;
else return false;
}

function validaOpcion($opcionSeleccionada)
{

if(is_numeric($opcionSeleccionada)) return true;
else return false;
}

$selectDestino=$_GET["select"]; $opcionSeleccionada=$_GET["opcion"];

if(validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
{
$tabla=$listadoSelects[$selectDestino];
$consulta=mysql_query("SELECT id, opcion FROM $tabla WHERE relacion='$opcionSeleccionada'") or die(mysql_error());



echo "<select name='".$selectDestino."' id='".$selectDestino."' onChange='cargaContenido(this.id)'>";
echo "<option value='0'>Elige</option>";
while($registro=mysql_fetch_row($consulta))
{

$registro[1]=htmlentities($registro[1]);

echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
}
echo "</select>";
}
?>


Gracias!