
16/01/2011, 05:31
|
| | Fecha de Ingreso: enero-2011
Mensajes: 3
Antigüedad: 14 años, 2 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ó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ó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ó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! |