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&oacute;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&oacute;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>";
}
?>

1 Respuesta

Respuesta
1

Que te parece si.

Perdona salio cortado el mensaje...

¿Podrías explicarme un poco más detallado y con calma lo que deseas hacer?..

Hola Angel, gracias por contestar.

Mira tengo una web con un select dependiente de 2 niveles que coge los datos de 2 tablas creadas en una base de datos MySQL. La primera opción deja elegir entre varias categorías de descarga tipo (alojamientos, alquileres, automoción...) y la segunda categoría presenta diferentes opciones en función de lo señalado en la primera.

Por ejemplo si en la primera categoría selecciono Alojamientos, la segunda categoría me dejara elegir entre hoteles, casa rurales, etc.

Estas categorías funcionan bien y al seleccionar una en la primera, da las opciones correspondientes en la segunda, pero tengo el problema que no se como hacer que al seleccionar una opción de la segunda categoría, me abra un link a una página concreta.

Por ejemplo, si selecciono alojamientos en la primera categoría y hoteles en la segunda, necesito que me abra una página llamada por ejemplo hoteles.htm

Espero haberme explicado mejor y que me hayas entendido.

Muchas gracias por tu ayuda.

Lamento la demora... tuve que salir a otro estado y lamentablemente la civilización aun no llega por allá...

De lo que me comentas, es posible realizarlo pero no desde mysql, si no con una funcion de javascript, según mi ver..

El detalles es cachar los valores de cada objeto por ejemplo

var cboUno = $("#cboUno").val();

var cboDos = $("#cboDos").val();

entonces aunque largo es funcional

if(cboUno="Alojamientos" && cboDos="Hotel"){

   document.location.href='hotel.hml'

}else{

 if(cboUno="Transportes" && cboDos="Coches"){

   document.location.href="coches.html"

}

}

Espero haberte ayudado aunque sea un poquitin, si has encontrado solucion te pido una muy sincera disculpa por mi demora.

Suerte y se feliz

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas