hola:
he stado byscando codigo para usar 2 combos enlazados uno con otro.
encontre varios, pero tienen la desvantaja de que se tiene que refrescar la pagina, aun usando ajax, se hace una consulta a la DB.
encontre un codigo que hace lo que requiero (combos dinamico) pero con datos estaticos, es decir en el 1 selec se ponen por ejmplo los estados, y en otro combo se ponen las ciudades. como no encontre mas.. me puse q armar con php el codigo para que funcionar con php y mysql.
lo que se hace es consultar la db, tomar los registros del 1 select, depues se va haciendo consulta x consulta hasta armar el 2 select, y listo. el javascript se encarga de hacer los cambios sin necesidad de refrescar la pag
les paso el codigo espero que les sirva a alguien
 
ojo no esta completamente documentada.... despues cunado lo doc cambiare el codigo,
 
<html>
<body>
 
 
edysoftware at gmail dot com
[email protected]
 
<?php require_once('Connections/showautos.php'); 
mysql_select_db($database_showautos, $showautos);
 
$query_TipoVe = "SELECT TV.id, TV.01_descripciontipo FROM 01_tipovehiculo as TV";
$query_Marca  = "SELECT M.id, M.06_marca FROM 06_marcas as M";
 
 
$resultT = mysql_query($query_TipoVe, $showautos) or die(mysql_error());
?>
<form name="f1">
<?
if ($row = mysql_fetch_array($resultT))
{ 
	echo '<select name= "auto" onchange="cambia()" >';
	echo '<option value= 0> - Todas - </option>';
	$tot = 0;
	do { 
		echo '<option value= "'.$row["id"].'">'.$row["01_descripciontipo"].'</option>';
		$id_select[++$tot] = $row["id"];
} while ($row = mysql_fetch_array($resultT)); 
echo '</select>';
}
?>
 
<select name=segundo>
<option value="0">- Todas - </select>
</form>
 
<script>
//defino una serie de varibles Array para cada opcion del 1 select
<?
for ($i = 1; $i<= $tot; $i++)
{
	$cadopc = "";
	$cadval = "";
	$query_Marca  = "SELECT M.id, M.06_marca FROM 06_marcas as M Where 01_tipovehiculo = ".$id_select[$i];
	$resultM = mysql_query($query_Marca, $showautos) or die(mysql_error());
	if ($row = mysql_fetch_array($resultM)){ 
		$cadopc = "var opc_seg_sel_".$i."=new Array('- Todas -' ";
		$cadval = "var val_seg_sel_".$i."=new Array('0' ";
		do { 
		//echo '<option value= "'.$row["id"].'">'.$row["06_marca"].'</option>';
			$cadopc .=  ",'". $row["06_marca"]."'";
			$cadval .=  ",'". $row["id"]."'";
		} while ($row = mysql_fetch_array($resultM));
		$cadopc .=  ") \n";
		$cadval .=  ") \n";
	}else 
	{   $cadopc = "var opc_seg_sel_".$i."=new Array('- No Disponibles -' ) \n";
		$cadval = "var val_seg_sel_".$i."=new Array('0' )\n";
	}
	echo $cadopc;
	echo $cadval;
}
?>
//función que cambia las opciones del select de opciones en función del primer selec que se haya escogido
function cambia(){
	//tomo el valor del select del auto elegido
	var auto
	auto = document.f1.auto[document.f1.auto.selectedIndex].value
	//veo si el auto está definido
	if (auto != 0) {
		//si estaba definido, entonces coloco las opciones del segundo correspondiente.
		//selecciono el array de segundo adecuado
		mis_opciones=eval("opc_seg_sel_" + auto)
		mis_valores =eval("val_seg_sel_" + auto)
		//calculo el numero de opciones
		num_opciones = mis_opciones.length
		//marco el número de opciones en el select
		document.f1.segundo.length = num_opciones
		//para cada segundo del array, la introduzco en el select
		for(i=0;i<num_opciones;i++){
		   document.f1.segundo.options[i].value=mis_valores[i]
		   document.f1.segundo.options[i].text=mis_opciones[i]
		}	
	}else{
		//si no había segundo seleccionada, elimino las provincias del select
		document.f1.segundo.length = 1
		//coloco un guión en la única opción que he dejado
		document.f1.segundo.options[0].value = "- Todas -"
	    document.f1.segundo.options[0].text = "- Todas -"
	}
	//marco como seleccionada la opción primera de segundo
	document.f1.segundo.options[0].selected = true
}
</script>
</body>
</html> 
  
 
