Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/10/2004, 05:00
ouyeah
 
Fecha de Ingreso: octubre-2004
Mensajes: 21
Antigüedad: 19 años, 6 meses
Puntos: 1
Mira, te pongo mi código y a ver si sacas algo en claro (Nótese que uso php dentro de javascript):
Código PHP:
<script>
<?

/*
(Para hacerte una idea)
Tabla empresas:
id - nombre
1  - empresa1
2  - empresa2
_________________
Tabala empresas2:
id - id_emp - anyo - dir
1  -   1    - 2003 - EMP103
2  -   1    - 2004 - EMP104
3  -   2    - 2003 - EMP203
4  -   2    - 2004 - EMP203
*/
$sql="SELECT * FROM empresas";
$rsemp=mysql_query($sql);
$empresas=mysql_fetch_array($rsemp);
$primera_emp=$empresas[id];

$sql="SELECT * FROM empresas";
$rsemp=mysql_query($sql);
$cont=1;

//defino una serie de varibles Array para cada empresa
while($empresas=mysql_fetch_array($rsemp))
    {
    
$sql="SELECT * FROM empresas2 where id_emp=$empresas[id] order by anyo asc";
    
$rsemp2=mysql_query($sql);
    
    
$cadena"var empresas_$cont=new Array(";
    while(
$empresas2=mysql_fetch_array($rsemp2))
        {
        
$cadena.= "\"$empresas2[anyo]\", ";
        }
    
    
$cadena .= ")\n";
    
//Para eliminar la última coma
    
$tam=strlen($cadena);
    
$tam=$tam-4;
    
$cadena[$tam]=" ";
    
//
    
echo $cadena;
    
$cont++;
    }

?>

//función que cambia los años del select de anyos en función de la empresa que se haya escogido en el select de empresa.
function cambia_anyos(){
    //tomo el valor del select de la empresa elegida
    var empresa
    empresa = document.f1.empresa[document.f1.empresa.selectedIndex].value
    //miro a ver si la empresa está definida
        
    if (empresa != 0) {
        //si estaba definida, entonces coloco las opciones de los años correspondientes.
        //selecciono el array de anyos adecuado
        mis_anyos=eval("empresas_" + empresa)
        //calculo el numero de anyos
        num_anyos = mis_anyos.length
        //marco el número de anyos en el select
        document.f1.anyos.length = num_anyos
        //para cada anyo del array, lo introduzco en el select
        for(i=0;i<num_anyos;i++){
           document.f1.anyos.options[i].value=mis_anyos[i]
           document.f1.anyos.options[i].text=mis_anyos[i]
           <? if(!$anyos$anyos=2000?>
           if(document.f1.anyos.options[i].text==<? echo $anyos?>)
                   document.f1.anyos.selectedIndex=i
        }
    }else{
        //si no había empresa seleccionada, elimino los anyos del select
        document.f1.anyos.length = 1
        //coloco un guión en la única opción que he dejado
        document.f1.anyos.options[0].value = "-"
        document.f1.anyos.options[0].text = "-"
    }
    //marco como seleccionada la opción primera de empresa
    //document.f1.anyos.options[3].selected = true
}
</script>

En el primer select carga las empresas de la BD:
Código PHP:
<select name="empresa" id="empresa" class="formul" onchange="cambia_anyos()">
      <?
      $sql
="SELECT * FROM empresas";
      
$rsemp=mysql_query($sql);
      
$cont=0;
      while(
$empresas=mysql_fetch_array($rsemp))
          {
      
?>
        <option <? if($empresa==$empresas['id']) echo "selected"?> value="<? echo $empresas['id']; ?>"><? echo $empresas['nombre']; ?></option>
      <?
            
}
      
?>
      </select>
Y el segundo select, simplemente:
Código PHP:
<select name=anyos class="formul">
     <
option value="-" selected>-
</
select

Mira a ver si sacas algo en claro, es que entre que me da pereza explicarlo y que no tengo mucho tiempo ahora...

PD: Una putada que no salgan las sangrias (acabo de descubrir el [PHP], que útil, oyes ;)) Ahora es más fácil de leer

Última edición por ouyeah; 29/10/2004 a las 05:04