ovvero?

io farei cosi allora.
ho una select del tipo:

Codice PHP:
  <select onchange="getValori(this.options[this.selectedIndex].value);">
      <
option value="1">Valore 1</option>
      <
option value="2">Valore 2</option>
      <
option value="3">Valore 3</option>
  </
select
ed un'altra che verra popolata successivamente
Codice PHP:
<select id="sel2">
      <
option value="">Selezionare un valore</option>
 </
select
come puoi vedere sull'onchange della prima select viene richiamata una funzione getValori(this.options[this.selectedIndex].value)
Questa funzione effettuerà una chiamata ajax al server e servera successivamente per popolare la successiva select.
Per fare ciò io utilizzo il framework JQuery, risparmiando un bel po di tempo e codice.
Codice PHP:
<script type="text/javascript">

function 
getValori(valore)
{
  $.
post("pagina_server.php", { valuevalore },
  function(
data){
    
document.getElementById('sel2').innerHTML=data;
  });
}
</script> 
questa funzione invia alla pagina pagina_server.php il valore scelto nella prima select.
Ora non resta che effettuare una query sulla pagina php impostando come parametro di where quello che arriva dalla richiesta ajax:

Codice PHP:
$sql"select ....." where valore ".$_POST['value'];

//dopo aver fatto tutto il valore per la query cicli il risultato e lo immagazzini in una variabile
$out = "";

for(
$i=0;$i<$num_record;$i++){
        
$out.= "<option value='".$array['id']."'>".$array[$valore]."</option>";
    }

//successivamente stampi la variabile

echo 
$out
questo è solo un modo. ce ne sono centinaia magari utilizzando l'oggetto JSON molto ma molto piu comodo