Hola
He conseguido hacerlo de esta manera;
Código PHP:
<html>
<head>
<?
include ('../config.inc.php');
//Conexion a la base de datos
$conex = mysql_connect($host, $user, $password);
//Seleccion de la base de datos
mysql_select_db($bd, $conex);
$cons = "SELECT * FROM elinks_cat";
$result = mysql_query($cons,$conex);
?>
<script language="JavaScript">
aCateg = new Array();
aCateg[0] = " ";
<?
$y=1;
while(list($cid, $categoria) = mysql_fetch_row($result))
{
?>
aCateg[<?= trim($y); ?>] = "<?= trim($categoria); ?>"
<?
$y = $y + 1;
}
?>
var aSubcateg0 = new Array(
" "
);
<?
//Subcategorias
$cons = "SELECT * FROM elinks_cat";
$result = mysql_query($cons,$conex);
while(list($cid, $categoria) = mysql_fetch_row($result))
{
?>
aSubcateg<?= trim($cid); ?> = new Array();
aSubcateg<?= trim($cid); ?>[0] = " ";
<?
$cons2 = "SELECT * FROM elinks_subcat WHERE cid = $cid";
$result2 = mysql_query($cons2,$conex);
$z=1;
while(list($sid, $cid, $subcategoria) = mysql_fetch_row($result2))
{
?>
aSubcateg<?= trim($cid); ?>[<?= trim($sid); ?>] = "<?= trim($subcategoria); ?>"
<?
$z = $z + 1;
}
mysql_free_result($result2);
}
mysql_free_result($result);
?>
/* Arma un arreglo general de estados a partir de los arreglos */
/* anteriores. Es importante que cada arreglo comience por un */
/* valor en blanco y que el primer arreglo de ciudades, llamado */
/* aqui aSubcateg0, no contenga ningún elemento. */
var aSubcateg = new Array(
aSubcateg0,
aSubcateg1,
aSubcateg2,
aSubcateg3,
aSubcateg4,
aSubcateg5,
aSubcateg6,
aSubcateg7,
aSubcateg8,
aSubcateg9
);
function opcion(oCntrl, iPos, sTxt, sVal){
var selOpcion=new Option(sTxt, sVal);
eval(oCntrl.options[iPos]=selOpcion);
}
function cambia(oMster, oCntrl){
var nSelected = oMster.selectedIndex;
while (oCntrl.length) oCntrl.remove(0);
for(var i = 0; i < aSubcateg[nSelected].length; i++)
opcion(oCntrl, i, aSubcateg[nSelected][i], String(i));
}
function llena(oCntrl){
while (oCntrl.length) oCntrl.remove(0);
for(var i = 0; i < aCateg.length; i++)
opcion(oCntrl, i, aCateg[i], String(i));
}
</script>
</head>
<body>
<form name="frm">
Pais
<select name="categoria" onchange="cambia(this, document.frm.subcategoria)">
<option value=" "> </option>
</select>
Categoria
<select name="subcategoria">
<option value=" "> </option>
</select>
<input type="submit" value="Enviar" name="B1">
</form>
<script language="JavaScript">
llena(document.frm.categoria);
</script>
</body>
</html>
Pero hay un problema, en la lista subcategoria, me aparecen muchos espacios en blanco, entiendo que esas posiciones no estan definidas en los arrays, ¿como podria desaparecer esos espacios?
Gracias