Devi mettere un evento onChange nella prima select.
Quando selezioni il valore la onChange dovrà lanciare uno script AJAX che a sua volta richiama un file php che svolge la query che ti interessa e inserisce i risultai nella seconda select.
<select name='provincia' id='provincia' onChange='cercaComune()'>
</select>
....
<select name='comune' id='comune'>
</select>
lo script ajax potrebbe essere qualcosa di questo tipo:
var xmlhttp;
function cercaComune(){
xmlhttp=GetXmlHttpObject();
p= document.getElementById('provincia').value;
if (xmlhttp==null){
alert ("Browser does not support HTTP Request");
return;
}
var url="associaComuneProvincia.php";
url=url+"?p="+p;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=dataChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
function dataChanged(){
if(xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var resp = xmlhttp.responseText;
if(resp) {
var values = resp.split(';');
var select = document.getElementById('IBAN');
while (select.options.length) {
select.remove(0);
}
var limit = values.length;
for(i=0; i < limit; i++) {
var pair = values[i].split(';');
addOption(select, pair[0], pair[0]);
}
}
} else {
alert(xmlhttp.responseText);
}
}
}
function addOption(select, value, text) {
var option = document.createElement("option");
option.value = value,
option.text = text;
try {
select.add(option, null);
} catch(e) {
select.add(option);
}
}
function GetXmlHttpObject(){
if (window.XMLHttpRequest){
return new XMLHttpRequest();
}
if (window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}
function createXmlHttpRequest(){
var xmlhttp = null;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = stateChanged;
return xmlhttp;
}
mentre il file php potrebbe essere semplicemente
$p=$_GET['p']
$query = "SELECT DISTINCT(Comune) FROM nome_tabella WHERE Provincia='P'";
$res = mysql_query($query);
while($r_c = mysql_fetch_array($res))
$ret .=$r_c['Provincia'].",";
if(strlen($ret) > 0){
$ret = substr($ret, 0, strlen($ret) - 1);
}
echo rtrim($ret,',');
mysql_close($connessione);
Cosi dovrebbe funzionarti...