Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/01/2007, 04:04
Avatar de susaninhax
susaninhax
 
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 20 años, 3 meses
Puntos: 3
Pregunta Combo dependiente de las Faqs adaptado al php

Hola a todos apañeros!!

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> 
[/HTML]