Estoy utilizando los combos dependientes o anidados que aparece de primeras en las Faqs. Pero no consigo que me funcione correctamente. No sé si debo preguntarlo aquí o en PHP, porque no sé cual es el fallo
Os adjunto el código que he usado para ver si hay alguien que me pueda descubrir cual es el fallo.
Un saludo a todos de antemano!!!
Código HTML:
<script language="JavaScript"> function addOpt(oCntrl, iPos, sTxt, sVal){ var selOpcion=new Option(sTxt, sVal); eval(oCntrl.options[iPos]=selOpcion); } function cambia(oCntrl){ while (oCntrl.length) oCntrl.remove(0); switch (document.frm.poblacion.selectedIndex){ /*Hacemos una consulta para sacar todas las fechas y las vamos a agrupar para que no se repitan, y ordenarlas ascendentemente.*/ <?php $sql_pobla= "select id_fecha from grupos where activo='si' group by id_fecha order by id_fecha"; $result_pobla=mysql_query("$sql_pobla",$link) or die(mysql_error()); $j=0; while($row_pobla=mysql_fetch_array($result_pobla)) { $id_fecha=$row_pobla["id_fecha"]; ?> /* Una vez sacado las fechass, realizamos un bucle para que se vallan imprimiendo en el case, y cada vez que se realiza el bucle muestra la siguiente fecha.*/ case <?php echo $j; $j++; ?>: /*hacemos una consulta para sacar la fecha y el nombre del grupo donde coincida fecha con la fecha sacada en la anterior consulta para que no me imprima todos los resultados. En todos los selects, es necesario poner las comitas simples cuando cojemos una variable que viene de otra consulta.*/ <?php $sql_restaurante="select id_grupo, titulo from grupos where id_fecha='$id_fecha'"; $result_restaurante=mysql_query("$sql_restaurante",$link) or die(mysql_error()); $n=0; while($row_restaurante=mysql_fetch_array($result_restaurante)) { $nombre_grupo=$row_restaurante["titulo"]; $id_grupo=$row_restaurante["id_grupo"]; ?> /*necesitamos sacar la posición de los restaurantes para saber su orden, para ello cada vez que se imprime , suma una posición al restaurante. */ addOpt(oCntrl, <? echo $n;?>, "<?php echo $nombre_grupo; ?>", "<?php echo $id_grupo; ?>"); <?php $n++; }?> break; <?php } ?> } } </script> [HTML] <form action="fotografias_campos.php" method="post" name="frm"> <div class="negro_10_verdana" style=" margin-left:23px; margin-top:15px "> Seleccione una Fecha: <!-- Realizamos la misma consulta k hemos echo anteriormente en el javascript, para sacar las fechas agrupadas y orenadas, --> <?php $sql=("select id_grupo, id_fecha from grupos where activo='si' group by id_fecha order by id_fecha"); $result=mysql_query("$sql",$link) or die(mysql_error()); ?> <select name="fecha" class="campos_formulario" onChange="cambia(document.frm.grupo)"> <? $p=0; while($row=mysql_fetch_array($result)) { $id_fecha=$row["id_fecha"]; $fecha=$row["fecha"]; $sql_fecha="select fecha from fechas where id_fecha='$id_fecha'"; $result_fecha=mysql_query($sql_fecha)or die(mysql_error()); while($row_fecha=mysql_fetch_array($result_fecha)){ $fecha=$row_fecha["fecha"]; $fecha_sep=explode("-", "$fecha"); $dia=$fecha_sep[2]; $mes=$fecha_sep[1]; $year=$fecha_sep[0]; ?> <!-- Desde akí, imprimimos la id_fecha, y le asignamos la fecha que le corresponda para k lo escriba en vista al público.--> <option value="<? echo $id_fecha; $p++; ?>"> <?php echo $dia."-".$mes."-".$year; ?></option> <? } } ?> </select> </div> <div style=" margin-left:23px; margin-top:17px "> <span class="negro_10_verdana">Escoje un grupo: </span><br> <!-- Sacamos el nombre de los grupos ordenador por la fecha que les corresponde pero con limite 1, para que sólo muestre uno y no todos.--> <?php $sql_res="select id_grupo, titulo from grupos where activo='si' order by id_fecha asc limit 1"; $result_res=mysql_query("$sql_res",$link) or die(mysql_error()); ?> <select name="grupo" class="campos_formulario"> <? while($row_res=mysql_fetch_array($result_res)) { $id_grupo=$row_res["id_grupo"]; $titulo=$row_res["titulo"]; ?> <option value="<? echo $id_grupo; ?>"> <? echo $titulo; ?> </option> <? } ?> </select> <input name="titulo" type="hidden" id="titulo" value="<?php echo $titulo; ?>"> </div> <div class="negro_10_verdana" style=" margin-left:23px; margin-top:16px "> fotografias varias, poner scroll capa</div> </form>