Redireccionar a página desde selección en tabla MySQL
Tengo creado un select de 2 niveles que lee las opciones desde una base de datos. Funciona los dos niveles perfectamente y al cambiar el primero me da las opciones bien en el segundo, pero tengo el problema de que quiero conseguir que al seleccionar las diferentes opciones del segundo nivel, se cargue automáticamente otra página y no consigo hacerlo. Se hacer el link directamente desde una opción, pero no desde una base de datos.
Select_1 seria la primera tabla y select_2 la segunda.
El .php que genera el menu es:
**********
<?php
function generaPaises()
{
include 'conexion.php';
conectar();
$consulta=mysql_query("SELECT id, opcion FROM select_1");
desconectar();
echo "<select name='select' id='select' onChange='cargaContenido(this.id)'>";
echo "<option value='0'>Elige</option>";
while($registro=mysql_fetch_row($consulta))
{
echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
}
echo "</select>";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="select_dependientes.css">
<script type="text/javascript" src="select_dependientes.js"></script>
</head>
<body>
<div id="demo" style="width:600px;">
<div id="demoDer">
<select disabled="disabled" name="select_2" id="select_2">
<option value="0">Selecciona opción...</option>
</select>
</div>
¿<div id="demoIzq"><?php generapaises();?></div>
</div>
</body>
</html>
********
El archivo select_dependientes.js seria:
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]="select_1";
listadoSelects[1]="select_2";
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(idSelectOrigen);
var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
if(opcionSeleccionada==0)
{
var x=posicionSelectDestino, selectActual=null;
while(listadoSelects[x])
{
selectActual=document.getElementById(listadoSelects[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(idSelectDestino);
var ajax=nuevoAjax();
ajax.open("GET", "select_dependientes_proceso.php?select="+idSelectDestino+"&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.responseText;
}
}
ajax.send(null);
}
}
*****
El archivo select_dependientes_proceso.php seria:
<?php
$listadoSelects=array(
"select_1"=>"select_1",
"select_2"=>"select_2"
);
function validaSelect($selectDestino)
{
// Se valida que el select enviado via GET exista
global $listadoSelects;
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];
include 'conexion.php';
conectar();
$consulta=mysql_query("SELECT id, opcion FROM $tabla WHERE relacion='$opcionSeleccionada'") or die(mysql_error());
desconectar();
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>";
}
?>